SlideShare une entreprise Scribd logo
Portage d’Android sur la Raspberry Pi 3
A. Grassein
Smile ECS
16 octobre 2018
1 / 42
Plan I
1 Introduction
2 Théorie
Android
Raspberry Pi 3
3 Pourquoi ?
4 Pratique
Défis à relever
Ecriture du BSP
Flashage des images
5 Résultats
6 Pour aller plus loin
7 Questions ?
2 / 42
1 - Introduction
1 Introduction
3 / 42
1 - Introduction
But de la conf :
Voir les étapes pour faire un portage Android ;
S’appuyer sur un exemple concret.
4 / 42
1 - Introduction
A propos de moi :
Adrien Grassein
Expert
Technique
Smile ECS
7 ans d’expérience sur Android :
Parrot -> Automobile / Drone (Android 1.x 2.x 4.x et 5.x) ;
Redbend (Harman/Samsung) -> Virtualisation d’Android
(Android 5.x 6.x et 7.x) ;
Smile -> Automobile / Médical / Bancaire / Robotique (Android
6.x 7.x et 8.x).
5 / 42
2 - Théorie
2 Théorie
Android
Raspberry Pi 3
6 / 42
2 - Théorie - Android
2 Théorie
Android
Raspberry Pi 3
7 / 42
2 - Théorie - Android
Qu’est-ce que Android ?
Un système d’exploitation (Licence Apache v2) ;
Des applications ;
Un environnement de développement complet ;
Un environnement de debug ;
Un système de build.
8 / 42
2 - Théorie - Android
Plusieurs variantes :
Android ;
Android TV ;
WearOS ;
Android Auto ;
Android Things.
9 / 42
2 - Théorie - Android
9 versions majeures :
Apportent leur lot de nouveautés ;
Cassent régulièrement les API internes ;
Les changements internes sont souvent mal documentés.
10 / 42
2 - Théorie - Android
Qu’est-ce que Android ?
Environ 600 dépôts GIT ;
Du code source écrit en Java / C / C++ ;
Un OS lourd (nécessite un GPU et une TrustZone) ;
S’appuie sur un Kernel Linux ;
Une spécification à suivre (Sécurité / HW / ...).
11 / 42
2 - Théorie - Android
Qu’est-ce qu’un BSP pour Android ?
L’ensemble des briques logicielles permettant de faire fonctionner Android ;
Un bootloader compatible Android ;
Un kernel Linux Android ;
Des HALs (Briques faisant le lien entre le FWK Android et le Kernel Linux) ;
Des Makefiles permettant de construire les images.
12 / 42
2 - Théorie - Raspberry Pi 3
2 Théorie
Android
Raspberry Pi 3
13 / 42
2 - Théorie - Raspberry Pi 3
Qu’est-ce que Raspberry Pi 3 ?
Une carte d’évaluation ;
Très peu chère ;
Très répandue ;
Relativement puissante (Quad ARM Cortex-A53, 1Go RAM) ;
Beaucoup de connectivité ;
Avec un support Open Source.
14 / 42
2 - Théorie - Raspberry Pi 3
Qu’est-ce que Raspberry Pi 3 ?
Un bootloader open source ;
Un support du Kernel Linux ;
Un flashage d’image facile.
15 / 42
3 - Pourquoi ?
3 Pourquoi ?
16 / 42
3 - Pourquoi ?
Pourquoi mettre Android sur une Raspberry Pi 3
Pour s’amuser ;
Tentative pour réaliser un démonstrateur ;
Pour comprendre comment fonctionne un portage Android ;
Et pourquoi pas ?
17 / 42
3 - Pourquoi ?
Quelle version d’Android ?
Android 8.1 ;
Facilité avec Treble ;
Une variante déjà portée par Android (mais sources non publiées).
18 / 42
3 - Pourquoi ?
Quelle variante d’Android ?
Android (handheld) ;
La variante la plus généraliste d’Android ;
Interface la plus connue ;
Permet de valider la faisabilité des autres.
19 / 42
4 - Pratique
4 Pratique
Défis à relever
Ecriture du BSP
Flashage des images
20 / 42
4 - Pratique - Défis à relever
4 Pratique
Défis à relever
Ecriture du BSP
Flashage des images
21 / 42
4 - Pratique - Défis à relever
Quels sont les défis à relever ?
Créer les Makefiles produit ;
Ecrire ou trouver les HALs ;
Flasher les images ;
Booter les images.
22 / 42
4 - Pratique - Ecriture du BSP
4 Pratique
Défis à relever
Ecriture du BSP
Flashage des images
23 / 42
4 - Pratique - Ecriture du BSP
Création du produit :
Création du répertoire "device/pifoundation/rpi3" ;
Création des Makefile AndroidProducts.mk, aosp_rpi3.mk et BoardConfig.mk ;
Création du script "vendorsetup.sh".
24 / 42
4 - Pratique - Ecriture du BSP
But :
Donner au buildsystem des informations capitales : architecture processeur, taille
max des partitions, ...
Dire à Android quels packages embarquer ;
Donner un nom à son produit ;
Positionnement de la configuration Runtime.
25 / 42
4 - Pratique - Ecriture du BSP
Ecriture des HALs :
Seulement les HALs vitales dans un premier temps ;
Utilisation des implémentations par défaut si possible ;
Récupération des HALs d’Android Things pour le reste (merci Treble !).
26 / 42
4 - Pratique - Ecriture du BSP
HALs vitales (liste non exhaustive) :
HWComposer ;
OpenGL/EGL ;
Bootctrl ;
ContextHub.
27 / 42
4 - Pratique - Ecriture du BSP
Kernel :
Google a patché le kernel vanilla de la RPI ;
Google a mis à disposition les sources ;
Utilisation de celui d’Android IOT ;
N’est pas buildé par Android.
28 / 42
4 - Pratique - Ecriture du BSP
Bootloader :
Google a publié des patchs dans u-boot ;
Support du système de partition A/B d’Android ;
Support des images bootables Android ;
Utilisation de cet u-boot modifié ;
N’est pas buildé par Android.
29 / 42
4 - Pratique - Ecriture du BSP
Système A/B :
Permet de faire de la redondance de partitions ;
Est activé pour toute la chaine de boot ;
Le choix est fait par le bootloader ;
Google l’a intégré à u-boot ;
Android utilise la HAL bootctrl.
30 / 42
4 - Pratique - Ecriture du BSP
Partition boot.img et recovery.img.
Partition bootable d’Android ;
Contient le kernel et la commandline ;
Contient un ramfs ;
recovery.img a disparu en Android 9 ;
Pas montable de manière standard.
31 / 42
4 - Pratique - Ecriture du BSP
Résultats :
boot.img ;
system.img ;
vendor.img.
32 / 42
4 - Pratique - Flashage des images
4 Pratique
Défis à relever
Ecriture du BSP
Flashage des images
33 / 42
4 - Pratique - Flashage des images
Façon traditionnelle Android : fastboot
Protocole de communication ;
Ecrit les images dans des partitions ;
Quasiment aucune vérification ;
Supporte les images sparses ;
Au dessus d’USB / tcp / udp ;
La version UDP a été portée sur u-boot pour la rpi3 par Google.
34 / 42
4 - Pratique - Flashage des images
Façon traditionnelle RPI : dd sur la carte SD
Simple ;
Android ne créé pas la table de partition ;
Android créé des images sparses ;
Adaptation nécessaire pour Android.
35 / 42
4 - Pratique - Flashage des images
Utilisation de dd pour simplicité :
Création des partitions grâce à gdisk (17 partitions) ;
unsparse des images grâce à "simg2img" ;
dd des fichiers avec offset.
36 / 42
5 - Résultats
5 Résultats
37 / 42
5 - Résultats - Flashage des images
Résultats :
Android boot ;
Non utilisable pour un démonstrateur ;
D’énormes lags dus probablement à la partie graphique.
38 / 42
6 - Pour aller plus loin
6 Pour aller plus loin
39 / 42
6 - Pour aller plus loin - Flashage des images
Pour aller plus loin :
Intégrer les drivers graphiques RPI ;
Mettre la sécurité en place ;
Intégrer les autres éléments HW ;
Essayer les autres variantes d’Android.
40 / 42
7 - Questions ?
7 Questions ?
41 / 42
Merci !
Merci !
42 / 42

Contenu connexe

ODP
Ansible, docker via jenkins
PDF
SystemC
PDF
ROM Android Customs
PDF
Paug aosp ice-creamsandwich_20120119
PPTX
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+
PPTX
Le raspberry pi
PDF
Cours android 2016
PDF
Cours android 2016_partie1
Ansible, docker via jenkins
SystemC
ROM Android Customs
Paug aosp ice-creamsandwich_20120119
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+
Le raspberry pi
Cours android 2016
Cours android 2016_partie1

Similaire à Portage d'Android 8 sur Raspberry Pi 3 (20)

PPTX
Raspberry Pi: Les utilisations
PDF
semaine1-Developpement-Mobile-Android.pdf
PPTX
3552502.pptx
PDF
Découvrez FireDAC pour FMX
PPTX
Application de pointage basé sur la technologie rfid
PDF
cours-android.pdf
PDF
Présentation Système d’exploitation Open Source Lepton - MEITO Mai 2014
PDF
Android pour l'industrie
PDF
Fiche de TD 1 de préparation au Baccalauréat (littéraire et scientifique) du ...
PDF
Kit de survie pour l'IoT façon DIY
PDF
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
PDF
Rapport systéme embarqué busybox
PDF
Raspberry PI Guide
PDF
Sizing PoC LSF & PowerAI for Engineers schools workloads
PDF
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
PDF
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
PDF
Audit openERP 7.0: Mise en place &Optimisation de Performances
PDF
1-android.pdf
PDF
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdf
PDF
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Raspberry Pi: Les utilisations
semaine1-Developpement-Mobile-Android.pdf
3552502.pptx
Découvrez FireDAC pour FMX
Application de pointage basé sur la technologie rfid
cours-android.pdf
Présentation Système d’exploitation Open Source Lepton - MEITO Mai 2014
Android pour l'industrie
Fiche de TD 1 de préparation au Baccalauréat (littéraire et scientifique) du ...
Kit de survie pour l'IoT façon DIY
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
Rapport systéme embarqué busybox
Raspberry PI Guide
Sizing PoC LSF & PowerAI for Engineers schools workloads
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Audit openERP 7.0: Mise en place &Optimisation de Performances
1-android.pdf
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdf
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Publicité

Dernier (15)

PPTX
template SR.pptx pour les présentations de soutenances
PDF
Binayat 3D PROJET ECOLE SUR ENERGETIQUE DU BATIMENTS
PDF
Apprentissage supervisé : La Classification.pdf
PDF
Controle-and-Assurance-Qualite-logicielle-Developpement-du-tableau-de-bord-de...
PDF
UX DESIGN presentation canva plan et slides
PPTX
Cours_IoT.pptx k
PDF
Classification en apprentissage supervisé : Les Arbres de Décision
PDF
Proposition de contenu pouvant résoudre les problèmes détectés à partir des é...
PPT
Présentation de l’Analyse et Concepti SI
PDF
famille ................................
PPTX
chap 2 EA pptx.pptx modele relationnele de d
PPTX
Chapitre7-java------------------ Exception.pptx
PDF
ENSEIGNEMENT/APPRENTISSAGE ET COMPETENCE
PPTX
Chapitre 8_-------------- Interfaces.pptx
PPT
Icc courant de court circuit explication
template SR.pptx pour les présentations de soutenances
Binayat 3D PROJET ECOLE SUR ENERGETIQUE DU BATIMENTS
Apprentissage supervisé : La Classification.pdf
Controle-and-Assurance-Qualite-logicielle-Developpement-du-tableau-de-bord-de...
UX DESIGN presentation canva plan et slides
Cours_IoT.pptx k
Classification en apprentissage supervisé : Les Arbres de Décision
Proposition de contenu pouvant résoudre les problèmes détectés à partir des é...
Présentation de l’Analyse et Concepti SI
famille ................................
chap 2 EA pptx.pptx modele relationnele de d
Chapitre7-java------------------ Exception.pptx
ENSEIGNEMENT/APPRENTISSAGE ET COMPETENCE
Chapitre 8_-------------- Interfaces.pptx
Icc courant de court circuit explication
Publicité

Portage d'Android 8 sur Raspberry Pi 3

  • 1. Portage d’Android sur la Raspberry Pi 3 A. Grassein Smile ECS 16 octobre 2018 1 / 42
  • 2. Plan I 1 Introduction 2 Théorie Android Raspberry Pi 3 3 Pourquoi ? 4 Pratique Défis à relever Ecriture du BSP Flashage des images 5 Résultats 6 Pour aller plus loin 7 Questions ? 2 / 42
  • 3. 1 - Introduction 1 Introduction 3 / 42
  • 4. 1 - Introduction But de la conf : Voir les étapes pour faire un portage Android ; S’appuyer sur un exemple concret. 4 / 42
  • 5. 1 - Introduction A propos de moi : Adrien Grassein Expert Technique Smile ECS 7 ans d’expérience sur Android : Parrot -> Automobile / Drone (Android 1.x 2.x 4.x et 5.x) ; Redbend (Harman/Samsung) -> Virtualisation d’Android (Android 5.x 6.x et 7.x) ; Smile -> Automobile / Médical / Bancaire / Robotique (Android 6.x 7.x et 8.x). 5 / 42
  • 6. 2 - Théorie 2 Théorie Android Raspberry Pi 3 6 / 42
  • 7. 2 - Théorie - Android 2 Théorie Android Raspberry Pi 3 7 / 42
  • 8. 2 - Théorie - Android Qu’est-ce que Android ? Un système d’exploitation (Licence Apache v2) ; Des applications ; Un environnement de développement complet ; Un environnement de debug ; Un système de build. 8 / 42
  • 9. 2 - Théorie - Android Plusieurs variantes : Android ; Android TV ; WearOS ; Android Auto ; Android Things. 9 / 42
  • 10. 2 - Théorie - Android 9 versions majeures : Apportent leur lot de nouveautés ; Cassent régulièrement les API internes ; Les changements internes sont souvent mal documentés. 10 / 42
  • 11. 2 - Théorie - Android Qu’est-ce que Android ? Environ 600 dépôts GIT ; Du code source écrit en Java / C / C++ ; Un OS lourd (nécessite un GPU et une TrustZone) ; S’appuie sur un Kernel Linux ; Une spécification à suivre (Sécurité / HW / ...). 11 / 42
  • 12. 2 - Théorie - Android Qu’est-ce qu’un BSP pour Android ? L’ensemble des briques logicielles permettant de faire fonctionner Android ; Un bootloader compatible Android ; Un kernel Linux Android ; Des HALs (Briques faisant le lien entre le FWK Android et le Kernel Linux) ; Des Makefiles permettant de construire les images. 12 / 42
  • 13. 2 - Théorie - Raspberry Pi 3 2 Théorie Android Raspberry Pi 3 13 / 42
  • 14. 2 - Théorie - Raspberry Pi 3 Qu’est-ce que Raspberry Pi 3 ? Une carte d’évaluation ; Très peu chère ; Très répandue ; Relativement puissante (Quad ARM Cortex-A53, 1Go RAM) ; Beaucoup de connectivité ; Avec un support Open Source. 14 / 42
  • 15. 2 - Théorie - Raspberry Pi 3 Qu’est-ce que Raspberry Pi 3 ? Un bootloader open source ; Un support du Kernel Linux ; Un flashage d’image facile. 15 / 42
  • 16. 3 - Pourquoi ? 3 Pourquoi ? 16 / 42
  • 17. 3 - Pourquoi ? Pourquoi mettre Android sur une Raspberry Pi 3 Pour s’amuser ; Tentative pour réaliser un démonstrateur ; Pour comprendre comment fonctionne un portage Android ; Et pourquoi pas ? 17 / 42
  • 18. 3 - Pourquoi ? Quelle version d’Android ? Android 8.1 ; Facilité avec Treble ; Une variante déjà portée par Android (mais sources non publiées). 18 / 42
  • 19. 3 - Pourquoi ? Quelle variante d’Android ? Android (handheld) ; La variante la plus généraliste d’Android ; Interface la plus connue ; Permet de valider la faisabilité des autres. 19 / 42
  • 20. 4 - Pratique 4 Pratique Défis à relever Ecriture du BSP Flashage des images 20 / 42
  • 21. 4 - Pratique - Défis à relever 4 Pratique Défis à relever Ecriture du BSP Flashage des images 21 / 42
  • 22. 4 - Pratique - Défis à relever Quels sont les défis à relever ? Créer les Makefiles produit ; Ecrire ou trouver les HALs ; Flasher les images ; Booter les images. 22 / 42
  • 23. 4 - Pratique - Ecriture du BSP 4 Pratique Défis à relever Ecriture du BSP Flashage des images 23 / 42
  • 24. 4 - Pratique - Ecriture du BSP Création du produit : Création du répertoire "device/pifoundation/rpi3" ; Création des Makefile AndroidProducts.mk, aosp_rpi3.mk et BoardConfig.mk ; Création du script "vendorsetup.sh". 24 / 42
  • 25. 4 - Pratique - Ecriture du BSP But : Donner au buildsystem des informations capitales : architecture processeur, taille max des partitions, ... Dire à Android quels packages embarquer ; Donner un nom à son produit ; Positionnement de la configuration Runtime. 25 / 42
  • 26. 4 - Pratique - Ecriture du BSP Ecriture des HALs : Seulement les HALs vitales dans un premier temps ; Utilisation des implémentations par défaut si possible ; Récupération des HALs d’Android Things pour le reste (merci Treble !). 26 / 42
  • 27. 4 - Pratique - Ecriture du BSP HALs vitales (liste non exhaustive) : HWComposer ; OpenGL/EGL ; Bootctrl ; ContextHub. 27 / 42
  • 28. 4 - Pratique - Ecriture du BSP Kernel : Google a patché le kernel vanilla de la RPI ; Google a mis à disposition les sources ; Utilisation de celui d’Android IOT ; N’est pas buildé par Android. 28 / 42
  • 29. 4 - Pratique - Ecriture du BSP Bootloader : Google a publié des patchs dans u-boot ; Support du système de partition A/B d’Android ; Support des images bootables Android ; Utilisation de cet u-boot modifié ; N’est pas buildé par Android. 29 / 42
  • 30. 4 - Pratique - Ecriture du BSP Système A/B : Permet de faire de la redondance de partitions ; Est activé pour toute la chaine de boot ; Le choix est fait par le bootloader ; Google l’a intégré à u-boot ; Android utilise la HAL bootctrl. 30 / 42
  • 31. 4 - Pratique - Ecriture du BSP Partition boot.img et recovery.img. Partition bootable d’Android ; Contient le kernel et la commandline ; Contient un ramfs ; recovery.img a disparu en Android 9 ; Pas montable de manière standard. 31 / 42
  • 32. 4 - Pratique - Ecriture du BSP Résultats : boot.img ; system.img ; vendor.img. 32 / 42
  • 33. 4 - Pratique - Flashage des images 4 Pratique Défis à relever Ecriture du BSP Flashage des images 33 / 42
  • 34. 4 - Pratique - Flashage des images Façon traditionnelle Android : fastboot Protocole de communication ; Ecrit les images dans des partitions ; Quasiment aucune vérification ; Supporte les images sparses ; Au dessus d’USB / tcp / udp ; La version UDP a été portée sur u-boot pour la rpi3 par Google. 34 / 42
  • 35. 4 - Pratique - Flashage des images Façon traditionnelle RPI : dd sur la carte SD Simple ; Android ne créé pas la table de partition ; Android créé des images sparses ; Adaptation nécessaire pour Android. 35 / 42
  • 36. 4 - Pratique - Flashage des images Utilisation de dd pour simplicité : Création des partitions grâce à gdisk (17 partitions) ; unsparse des images grâce à "simg2img" ; dd des fichiers avec offset. 36 / 42
  • 37. 5 - Résultats 5 Résultats 37 / 42
  • 38. 5 - Résultats - Flashage des images Résultats : Android boot ; Non utilisable pour un démonstrateur ; D’énormes lags dus probablement à la partie graphique. 38 / 42
  • 39. 6 - Pour aller plus loin 6 Pour aller plus loin 39 / 42
  • 40. 6 - Pour aller plus loin - Flashage des images Pour aller plus loin : Intégrer les drivers graphiques RPI ; Mettre la sécurité en place ; Intégrer les autres éléments HW ; Essayer les autres variantes d’Android. 40 / 42
  • 41. 7 - Questions ? 7 Questions ? 41 / 42