Page 1
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 2
PRAMBULE
SMILE
Smile est une socit dingnieurs experts dans la mise en uvre de solutions open source
et lintgration de systmes appuys sur lopen source. Smile est membre de lAPRIL,
lassociation pour la promotion et la dfense du logiciel libre, du PLOSS le rseau des
entreprises du Logiciel Libre en Ile-de-France et du CNLL le conseil national du logiciel libre.
Smile compte prs de 1000 collaborateurs dans le monde, dont plus de 500 en France
(juin2016), ce qui en fait le premier intgrateur franais et europen de solutions open source.
Depuis 2000, environ, Smile mne une action active de veille technologique qui lui permet
de dcouvrir les produits les plus prometteurs de lopen source, de les qualifier et de les
valuer, de manire proposer ses clients les produits les plus aboutis, les plus robustes et
les plus prennes. Cette dmarche a donn lieu toute une gamme de livres blancs couvrant
diffrents domaines dapplication. La gestion de contenus (2004), les portails (2005), la
business intelligence (2006), la virtualisation (2007), la gestion lectronique de documents
(2008), les PGIs/ERPs (2008), les VPN open source (2009), les Firewall et Contrle de flux
(2009), les Middleware orients messages (2009), lecommerce et les Rseaux Sociaux
d'Entreprise (2010) et plus rcemment, le Guide de lopen source et NoSQL (2011). Chacun de
ces ouvrages prsente une slection des meilleures solutions open source dans le domaine
considr, leurs qualits respectives, ainsi que des retours dexprience oprationnels.
Au fur et mesure que des solutions open source solides gagnent de nouveaux domaines,
Smile sera prsent pour proposer ses clients den bnficier sans risque. Smile apparat dans
le paysage informatique franais comme le prestataire intgrateur de choix pour
accompagner les plus grandes entreprises dans ladoption des meilleures solutions open
source.
Ces dernires annes, Smile a galement tendu la gamme des services proposs. Depuis
2005, un dpartement consulting accompagne nos clients, tant dans les phases davant-
projet, en recherche de solutions, quen accompagnement de projet. Depuis 2000, Smile
dispose dun studio graphique, devenu en 2007 Smile Digital agence interactive, proposant
outre la cration graphique, une expertise e-marketing, ditoriale, et interfaces riches. Smile
dispose aussi dune agence spcialise dans la TMA (support et lexploitation des applications)
et dun centre de formation complet, Smile Training. Enfin, Smile est implant Paris, Lille,
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 3
QUELQUES RFRENCES
SMILE est fier davoir contribu, au fil des annes, aux plus grandes ralisations Web
franaises et europennes. Vous trouverez ci-dessous quelques clients nous ayant adress
leur confiance.
Sites Internet
EMI Music, Salon de lAgriculture, Mazars, Areva, Socit Gnrale, Gtes de France, Patrice
Pichet, Groupama, Eco-Emballage, CFnews, CEA, Prisma Pub, Volia, NRJ, JCDecaux,
01 Informatique, Spie, PSA, Boiron, Larousse, Dassault Systmes, Action Contre la Faim, BNP
Paribas, Air Pays de Loire, Forum des Images, IFP, BHV, ZeMedical, Gallimard, Cheval Mag,
Afssaps, Benetaux, Carrefour, AG2R La Mondiale, Groupe Bayard, Association de la
Prvention Routire, Secours Catholique, Canson, Veolia, Bouygues Telecom, CNIL
HEC, Bouygues Telecom, Prisma, Veolia, Arjowiggins, INA, Primagaz, Croix Rouge, Eurosport,
Invivo, Faceo, Chteau de Versailles, Eurosport, Ipsos, VSC Technologies, Sanef, Explorimmo,
Bureau Veritas, Rgion Centre, Dassault Systmes, Fondation dAuteuil, INRA, Gaz Electricit
de Grenoble, Ville de Niort, Ministre de la Culture, PagesJaunes Annonces
E-Commerce
Krys, La Halle, Gibert Joseph, De Dietrich, Adenclassifieds, Macif, Furet du Nord, Gtes de
France, Camif Collectivit, GPdis, Projectif, ETS, Bain & Spa, Yves Rocher, Bouygues
Immobilier, Nestl, Stanhome, AVF Primdical, CCI, Pompiers de France, Commissariat
lEnergie Atomique, Snowleader, Darjeeling
ERP et Dcisionnel
Veolia, La Poste, Christian Louboutin, Eveha, SunR, Home Cin Solutions, Pub Audit, Effia,
France 24, Publicis, iCasque, Nomadvantage, Gets, Nouvelles Frontires, Anevia, Jus de Fruits
de Moora, Espace Loggia, Bureau Veritas, Skyrock, Lafarge, Cadremploi, Meilleurmobile.com,
Groupe Vinci, IEDOM (Banque de France), Carrefour, Jardiland, Trsorerie Gnrale du Maroc,
Ville de Genve, ESCP, Sofia, Faiveley Transport, INRA, Deloitte, Yves Rocher, ETS, DGAC,
Generalitat de Catalunya, Gilbert Joseph, Perouse Mdical
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 4
Gestion documentaire
Primagaz, UCFF, Apave, Goservices, Renault F1 Team, INRIA, CIDJ, SNCD, Ecureuil Gestion, CS
informatique, Serimax, Volia Propret, NetasQ, Corep, Packetis, Alstom Power Services,
Mazars
Infrastructure et Hbergement
Agence Nationale pour les Chques Vacances, Pierre Audoin Consultants, Rexel, Motor
Presse, OSEO, Sport24, Eco-Emballage, Institut Mutualiste Montsouris, ETS, Ionis, Osmoz,
SIDEL, Atel Hotels, Cadremploi, SETRAG, Institut Franais du Ptrole, Mutualit Franaise
Groupe THALES, NEXTER, Airbus, Sagemcom, Sagem Dfense, Stago, ST Microeletronics, Intel,
Dassault Aviation, RATP, Coyote, Coved, Groupe PSA, Sigfox, Stago
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 5
CE LIVRE BLANC
Ce livre blanc est consacr lutilisation du systme Android pour des applications
industrielles et embarques. Il ne traite donc pas du dveloppement dapplications Android (il
existe de nombreuses publications pour cela) mais plutt de ladaptation dAndroid un
nouveau matriel (carte mre mais galement interfaces industrielles et/ou protocoles de
communication associs).
Aprs un bref historique et quelques rappels sur les principes d'un systme embarqu nous
dcrirons dans quels cas Android peut tre utilis en remplacement de Linux embarqu
qui avait fait lobjet dun livre blanc publi par Smile au printemps 2016 . Une partie plus
technique traitera ensuite de larchitecture dAndroid et des techniques dadaptation des
sources fournies par Google sous le nom AOSP pour Android Open Source Project. Nous
terminerons par un chapitre traitant des marchs actuels et venir pour lutilisation
dAndroid dans lindustrie et l'internet des objets (IoT).
Ce livre blanc a t rdig par Pierre Ficheux, Directeur technique de Smile-ECS (Embedded &
Connected Systems). Le dernier chapitre traitant des marchs actuels et venir a t rdig
par Cdric Ravalec, Responsable de l'offre Embarqu et IoT chez Smile.
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 6
SOMMAIRE
PRAMBULE.....................................................................................2
SMILE .............................................................................................................................................. 2
QUELQUES RFRENCES ..................................................................................................................... 3
CE LIVRE BLANC.................................................................................................................................. 5
SOMMAIRE........................................................................................6
INTRODUCTION AUX SYSTMES EMBARQUS..........................8
HISTORIQUE ANDROID.................................................................10
ANDROID POUR LES SYSTMES EMBARQUS........................12
COMPARAISON AVEC GNU/LINUX........................................................................................................ 12
MODLE DE DVELOPPEMENT ET LICENCES........................................................................................... 12
ARCHITECTURE ET HAL.................................................................................................................. 13
FONCTIONNALITS GRAPHIQUES......................................................................................................... 14
CONSTRUCTION DU SYSTME............................................................................................................ 15
LIMITATIONS, INCONVNIENTS ET PIGES CONNATRE................................................................................15
GOOGLE MOBILE / PLAY SERVICES ET CERTIFICATION............................................................................15
EMPREINTE MMOIRE...................................................................................................................... 17
QUALIT DU BSP (AOSP)............................................................................................................ 17
ADAPTATION DE CODE LEGACY .................................................................................................... 18
INTERFACES MATRIELLES................................................................................................................ 18
VERSION DU NOYAU LINUX............................................................................................................... 18
COMPILER ET ADAPTER ANDROID (AOSP)...............................20
CAS DE LMULATEUR......................................................................................................................... 20
CAS DE LA CARTE BBB..................................................................................................................... 22
UTILISATION D'INTERFACES INDUSTRIELLES ......................................................................................... 29
COMPILATION D'APPLICATION EN MODE TEXTE ..................................................................................29
UTILISATION DE JNI....................................................................................................................... 32
MTHODE COMPLTE (HAL, SERVICE ET MANAGER ).........................................................................34
LE CAS DANDROID THINGS........................................................36
LE MARCH ACTUEL ET VENIR...............................................37
LA TLVISION (ANDROID TV) ............................................................................................................ 37
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 7
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 8
pour lesquels les cots des programmes sont trs levs. Une des difficults importantes de
l'poque tait l'absence de microprocesseur car le 4004 - premier microprocesseur
disponible commercialement - fut cr par Intel (seulement) en 1971. Dans le domaine
spatial on s'accorde dire que le premier systme embarqu fut l'Apollo Guidance Computer
[1] cr en 1967 par le MIT pour la mission lunaire Apollo. Ce dernier disposait de 36K mots
de ROM, 2K mots de RAM et fonctionnait la frquence de 2 MHz. De nos jours on peut
simuler le comportement de ce calculateur grce une page web anime par du langage
Javascript ! Dans le cas des applications militaires, on voque le calculateur D-17B, systme de
guidage pour le missile LGM-30 datant du dbut des annes 60 [2].
REMARQUE
Encore de nos jours, mme si l'on utilise dsormais des langages volus comme C ou Ada,
certains systmes embarqus critiques sont toujours dpourvus d'OS. On parle alors de
logiciel bare metal.
A partir des annes 2000, l'utilisation des systmes embarqus ne se limite plus aux
applications industrielles ni donc aux RTOS ce qui permet l'utilisation d'un systme comme
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 9
GNU/Linux (qui par dfaut n'a pas de capacits temps rel) dans ce domaine d'activit.
GNU/Linux est dsormais prsent dans 95 % des botiers d'accs Internet, dcodeur TV
(set-top box), sans compter le noyau du systme Android qui est le sujet de ce livre blanc.
De part ses capacits graphiques, Android est dsormais utilis dans plusieurs botiers daccs
la tlvision numrique bass sur Android TV [9] qui sera voqu la fin du livre.
Plus rcemment des alliances d'acteurs de l'industrie automobile ont permis la mise en place
de projets comme GENIVI [5] ou Automotive Grade Linux [6] (bass sur un GNU/Linux) dont le
WWW.SMILE.FR
but est de crer des composants logiciels compatibles pour les applications IVI (In Vehicle
Infotainment). Android nest pas en reste dans le domaine aprs la cration en janvier 2014
de lOpen Automotive Alliance [7] puis la sortie quelques mois plus tard du systme Android
Auto [8] ddi lautomobile et dores et dj disponible sur plusieurs modles des membres
de lalliance.
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 10
HISTORIQUE ANDROID
Lorigine dAndroid est la socit Danger Inc. Fonde en 1999 par Andy Rubin, ancien employ
dApple. En 2002 la socit dvoile un tlphone mobile trs innovant pour lpoque nomm
Hiptop et connu galement sous le nom T-Mobile Sidekick. Malgr ses capacits (celles dun
PDA), ce tlphone est un chec commercial et Andy Rubin est vinc de la socit. Il fonde
WWW.SMILE.FR
alors la socit Android Inc. en 2004 dans le but de crer une plate-forme ouverte pour la
tlphonie (Open Handset Alliance).
La socit Android Inc. est acquise par Google en 2005 et lalliance est cre en 2007 en
rassemblant des fabricants de matriels, de composants lectroniques, des diteurs de
logiciel et des oprateurs.
Android est avant tout un systme dexploitation (partiellement) ouvert bas sur un noyau
Linux mais dont la partie visible (le framework) est crite en langage Java. La premire version
commerciale dAndroid est publie en septembre 2008 et fonctionne sur un tlphone HTC
Dream. Une version 1.1 est publie en 2009 puis la version 1.5 (Cupcake) la mme anne. Ds
lors chaque version porte le nom d'un dessert (Donut, Eclair, Froyo, etc.) jusqu' la dernire
version ce jour (version 7, Nougat). Pour chaque version publie, Google fournit les sources
au travers du projet AOSP (Android Open Source Project) [10]. AOSP reprsente la version
officielle d'Android fonctionnant sur les cibles de rfrence de Google (tlphones et
tablettes Nexus et aujourd'hui la gamme Pixel). Les autres fabricants adaptent les sources
d'AOSP afin de crer une version alternative (un fork) ddie leur matriel.
Il faut cependant noter que des composants binaires et/ou propritaires sont galement
ncessaires au fonctionnement rel d'Android, en particulier des pilotes graphiques acclrs,
les pilotes d'accs au composant radio (RIL pour Radio Interface Layer) ou bien laccs aux
GMS (Google Mobile Services) comme Gmail ou Google Maps.
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 11
A ce jour, Android est une russite sans prcdent sur son march initial de la tlphonie
puisqu' fin 2016 on estime 88 % sa part de march contre 12 % pour iOS (mais il fonctionne
uniquement sur iPhone donc il faut relativiser!) [14].
En plus du systme initial, Google fournit la version Wear destine entre autres aux
montres connectes dont la version 2.0 est juste disponible ainsi que l'OS Things (en
version developer preview 2) qui remplace Brillo pour les objets connects. Dans les deux
cas les dernires versions au moment de la rdaction de ce livre - datent de fvrier 2017. Un
WWW.SMILE.FR
paragraphe sera consacr Android Things dans la partie technique ainsi que dans le dernier
chapitre concernant les marchs.
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 12
Nous avons vu dans l'introduction une description de ce qu'est un systme embarqu puis un
OS embarqu (VxWorks, LynxOS, RTEMS, etc.) ces derniers tant trs loigns des
fonctionnalits d'Android en particuliers sur les capacits temps rel (absente sur Android),
l'empreinte mmoire utilise sur la cible (plusieurs centaines de Mo, voire plus de 1 Go pour
WWW.SMILE.FR
Android) sans compter l'espace utilis pour les sources AOSP (plusieurs dizaines de Go). Plus
encore que GNU/Linux, Android est donc rserv des quipements dots de bonnes
capacits matrielles (CPU 32 ou 64 bits, 1 Go ou plus de RAM et plusieurs dizaines de Go de
mmoire flash). Ces caractristiques sont celles disponibles sur les tlphones et tablettes
actuelles.
Dans le cas d'un systme autre qu'un tlphone ou une tablette voire un systme industriel
l'utilisation d'Android est donc justifie lorsque l'application ncessite des fonctionnalits
proches de celles des cibles initiales, en l'occurrence une interface graphique volue ainsi
qu'une connectivit rseau (Wi-Fi, Bluetooth, etc.). L'utilisation de la version standard
d'Android dans le cas d'un systme sans interface graphique (parfois nomm headless
Android ) nous parat totalement dnue de sens mme si elle est parfois voque (et
Things comblera probablement ce vide).
COMPARAISON AVEC
GNU/LINUX
La comparaison avec GNU/Linux s'impose car Android est galement bas sur un noyau Linux,
bien que les sources de ce noyau ne soient pas directement fournies avec AOSP. De plus,
GNU/Linux est le plus souvent utilisable pour des applications similaires celles d'Android car
il ncessite galement un matriel puissant et une empreinte mmoire importante (mme si
elle est infrieure celle utilise par Android). En dehors de GNU/Linux, les environnements
Microsoft de type Windows CE (sans parler du malheureux Windows Phone) sont en passe
dtre totalement marginaliss par larrive dAndroid (qui peut prtendre proposer une
meilleure application GPS que celle de Waze, acquise par Google en 2013 ?).
Dans de nombreux cas, le choix du systme cible se fera entre GNU/Linux embarqu et
Android ce qui justifie cette comparaison sur plusieurs critres.
Au niveau du modle de dveloppement, AOSP nest pas un modle collaboratif comme peut
ltre le noyau Linux ou lenvironnement de construction Yocto [15] (utilis sur les projets
GENIVI et AGL cits dans lintroduction). Les dveloppements sont en effet raliss en interne
par Google pour AOSP qui est ensuite adapt par les constructeurs de matriel ou des
prestataires spcialiss.
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 13
Comme nous lavons vu dans lintroduction, Android utilise des composants binaires (certains
pilotes propritaires). Il nest donc pas totalement open source et c'est encore moins du
logiciel libre comme l'explique la FSF (Free Software Foundation) [11]. En effet, mis part
pour le noyau Linux, la licence Android (utilise dans AOSP) est celle du projet Apache (ASL
version 2.0) beaucoup moins contraignante que la licence GPL. Le fait nest pas trs tonnant
sachant que le march de la tlphonie est peu enclin au partage et dispose dune forte
culture propritaire (aucun tlphone totalement libre na pour linstant pu simposer). Le
responsable de la gouvernance open source de Google affirma il y a quelques annes lors
WWW.SMILE.FR
dune confrence dans les locaux de lentreprise Paris que Google is not an open source
company (et on le croit assez facilement). Le fait de dpendre de composants propritaires
provoqua la fureur de Jean-Baptiste Queru (dit JBQ) clbre leader de lquipe AOSP qui
quitta le projet en 2013 (puis Google quelques mois plus tard) [16].
Well, I see that people have figured out why Im quitting AOSP.
Theres no point being the maintainer of an Operating System that cant boot to the home
screen on its flagship device for lack of GPU support, especially when Im getting the blame
for something that I dont have authority to fix myself and that I had anticipated and
escalated more than 6 months ahead.
Architecture et HAL
Android n'est cependant pas une distribution Linux mme si les couches basses du
systme (celles qui ne sont pas crites en Java) ressemblent fortement celles de GNU/Linux.
Il en est de mme pour la procdure de dmarrage du systme. L'architecture d'Android est
cependant plus complexe que celle de GNU/Linux de part l'utilisation du langage Java pour le
framework et donc les applications. La figure ci-aprs met en vidence les diffrentes couches
du systme et les diffrences avec GNU/Linux. La principale diffrence est l'existence d'une
couche d'abstraction (HAL). La partie suprieure correspond du code Java, la partie
intermdiaire du code C/C++ et la dernire l'espace du noyau Linux. Si l'on prend
l'exemple simple d'une application accdant une led, on peut noncer les principes
suivants :
L'application utilise les ressources (Wi-Fi, Bluetooth, luminosit cran, etc.) via des
services Android (LedService.java sur le schma)
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 14
WWW.SMILE.FR
Fonctionnalits graphiques
Concernant les fonctionnalits graphiques, GNU/Linux est driv d'UNIX qui fut conu la fin
des annes 60 et donc fonctionnait en mode texte. Il existe bien entendu quelques
environnements graphiques pour UNIX et GNU/Linux mais ils ne sont pas aussi simples
aborder que dans le cas d'Android pour lequel le framework graphique est totalement
intgr de part son utilisation native dans la tlphonie. Une application Android est
(presque) toujours graphique et passe le plus souvent par l'utilisation de lenvironnement de
dveloppement Android Studio.
Cot GNU/Linux, Qt est l'environnement graphique le plus connu et utilise le langage C++ ou
plus rcemment le QML (Qt Meta Language) [12]. Il a l'avantage d'tre multiplate-forme et
dispose dsormais d'une cible Android et iOS. Dans le cas dune cible plus contrainte en
mmoire, on peut galement utiliser EFL (Enlightenment Foundation Library) [13] mais cette
bibliothque ne dispose pas d'un outil de construction d'interface (comme il en existe pour Qt
ou Android). La disponibilit d'outils et d'un langage de programmation relativement simple
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 15
(Java) n'est pas le seul avantage d'Android. Un autre point important est le grand nombre
d'applications et de bibliothques mtier disponibles alors qu'elles ne le sont pas
forcment pour GNU/Linux. La facilit et rapidit de dveloppement pour cette plate-forme y
est certainement pour beaucoup. Nous avons eu rcemment l'exemple d'un projet industriel
initialement prvu pour GNU/Linux mais qui a finalement t dvelopp sur Android car
certains composants mtier existaient dj, alors que ce n'tait pas le cas pour GNU/Linux. Le
systme tant graphique par nature, on comprend tout fait quil puisse concurrencer
GNU/Linux sur le terrain des applications de type set-top box ou environnements IVI ddies
WWW.SMILE.FR
Construction du systme
Le systme tant conu pour la tlphonie (et dvelopp uniquement par Google), la
technique de construction et donc de modification - du systme est donc radicalement
diffrente de celle utilise pour GNU/Linux. Le systme est fourni sous la forme dune image
(on parle de ROM ) et la mise jour seffectue en remplaant lintgralit de cette image.
Par contre les applications Android disposent dun systme de gestion de paquets que lon
peut assimiler ceux dont on dispose sur GNU/Linux (RPM sur Fedora, DEB sur
Debian/Ubuntu). A cela il faut ajouter le controvers Google Play Services qui permet
Google deffectuer des modifications et mises jour sur les quelques milliards dappareils
connects. Nous reviendrons sur ce point plus tard.
LIMITATIONS, INCONVNIENTS ET
PIGES CONNATRE
L'utilisation d'Android pour une solution industrielle n'est bien videmment pas sans risques
ni difficults la fois techniques et commerciales. Le but de ce paragraphe est de rpertorier
les quelques cueils que l'utilisateur pourrait rencontrer lors du choix de l'utilisation
d'Android.
Ce point est probablement le plus crucial prendre en compte si lon envisage dutiliser
Android pour un nouvel appareil. Le modle conomique de Google est entre autres bas
sur la diffusion d'applications mobiles (GMS pour Google Mobile Services). Ces applications
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 16
(Gmail, Google Maps, etc.) sont diffuses sous licence propritaire dans la quasi-totalit des
cas (tout comme pour iOS d'Apple) et le support d'accs Google Play (permettant de
tlcharger les applications) n'est pas fourni avec AOSP car il n'est pas open source, loin s'en
faut. L'utilisation sur une plate-forme spciale ncessite un agrment avec Google ainsi que la
certification de la plate-forme. Un article du journal anglais The Guardian [48] voque les
cots cachs de la cration dun appareil sous Android . Ils voquent des cots de $40000
pour 30000 appareils, $75000 pour 100000. Larticle cite plusieurs exemples dentreprises
nayant pas respect la licence de diffusion de GMS et contraintes larrt de la diffusion de
WWW.SMILE.FR
leur produit. Bien entendu, AOSP peut fonctionner sans ces applications mais le choix de
lutilisation dAndroid sur un produit peut tre motiv par exemple par lutilisation de
Google Maps. Dans le cas de produits industriels cibls et faible diffusion le cas est un peu
diffrent, citons larticle du Gardian :
"Smaller OEMs [device manufacturers] don't register on Google's radar, and Google tends to
turn a blind eye. Retailers get pressured by legal OEMs to make sure illegal installs of GMS are
weeded out. It's almost like crowdsourcing."
Notons que la certification nest pas obligatoire sauf si lon dsire utiliser lcosystme
Android (GMS). Le passage par les tapes pr-cites ne garantit pas lobtention effective de la
certification malgr le paiement de sommes rondelettes. Google est une entreprise
commerciale (et quelque part hgmonique) qui fait passer ses intrts avant tout. Ce point
explique certainement pourquoi des industries comme lautomobile ou laronautique ont
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 17
Empreinte mmoire
L'espace utilis par Android sur la mmoire flash n'a aucune commune mesure avec ce que
l'on connat pour la plupart des systmes embarqus. En effet, si l'on observe la taille de
l'image principale de la version Android 7.1 pour un tlphone Google Pixel (version binaire
WWW.SMILE.FR
fournie par Google), celle-ci flirte allgrement avec les 1,5 Go [21]. Il est bien entendu
possible de la rduire si l'on optimise la distribution AOSP (en retirant des applications
inutiles) mais il ne sera jamais possible de descendre en dessous de plusieurs centaines de Mo
pour des versions plus anciennes. Dans le cas d'Android Wear (destin des cibles beaucoup
plus lgres comme des montres ou de lunettes) lempreinte mmoire reste autour de 300
Mo [22]. Lempreinte est peine plus faible pour les premires versions dAndroid Things
disponibles.
A titre de comparaison on peut crer grce Buildroot ou Yocto des distributions GNU/Linux
occupant au minimum 20 Mo d'empreinte mmoire !
La procdure de production de l'image peut tre diffrente de celle dfinie par Google et
l'utilisation d'outils spcifiques (et l aussi propritaires) peut apparatre au gr du choix du
constructeur. Mme dans le cas d'une version AOSP de bonne qualit, la documentation
officielle relative au fonctionnement interne d'Android est trs pauvre car Google
communique trs peu sur le sujet alors qu'il existe plthore de documentation (et d'ouvrages)
pour le dveloppement d'applications. L'ouvrage Embedded Android (par Karim
Yaghmour) [17] reste encore et toujours l'ouvrage de rfrence mme si il date un peu. De
nombreuses prsentations - du mme Karim Yaghmour - et documentations officieuses sont
cependant disponibles sur Internet (et pour cela Google est votre ami !).
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 18
De nombreux industriels sont tents par les capacits graphiques d'Android et la facilit avec
laquelle on peut crire des applications lgantes et ergonomiques. Cependant certains
secteurs d'activit (aronautique, militaire, automobile, etc.) utilisent des cycles de vie trs
longs (plusieurs annes voire dizaines d'annes) qui n'ont rien voir avec ceux de la
tlphonie mobile. Un banc de test d'quipement aronautique peut utiliser du code source
crit il y a plus de 15 ans et souvent en langage C/C++ pour une cible UNIX (POSIX) de
WWW.SMILE.FR
l'poque. Android utilise en majorit le langage Java et le C/C++ est rserv aux couches
systmes . La compatibilit de l'environnement de dveloppement d'Android avec la
norme POSIX est partielle et la tche d'intgration n'est donc pas simple mme si des
techniques existent et seront introduites dans la suite de ce livre.
Interfaces matrielles
Android est ddi la tlphonie (voire au multimdia) alors que l'industrie utilise de
nombreuses interfaces parfois dates (les standards RS-232 ou RS-485) mais toujours utiles.
Un tlphone ou une tablette Android dispose de connexions sans fil (Wi-Fi, Bluetooth, NFC),
de diffrents capteurs (GPS, acclromtre, camra, etc.) et d'une connectique USB.
L'environnement de dveloppement permet d'accder ces capteurs [18] mais l'ajout d'un
nouveau type ou pire d'un bus de communication non prvu (SPI, IC) n'est pas une tche
aise mme si cela reste ralisable de part le support de ces bus dans le noyau Linux. Plus
gnralement, l'ajout de pilotes tant toujours envisageable dans le noyau Linux, Android
peut galement tre adapt pour les utiliser. Le tout nouveau Android Things ddi
l'Internet des objets prend en compte ces bus de manire native mais nest pas encore
officiellement disponible.
Android utilise depuis toujours le noyau Linux et on ne sait pas si c'est par choix ou par
ncessit (probablement un mlange des deux). Le menu Paramtres puis A propos de la
tablette permet d'afficher la version du noyau Linux utilise. Les relations entre Google et la
communaut du noyau Linux furent trs tumultueuses de part entre autres la mfiance de
Google vis vis de la licence GPL . Comme nous lavons expliqu, la majorit des
fonctionnalits Android se trouvent dans lespace utilisateur et ce afin dviter lusage de la
licence GPL. Les quelques pilotes ajouts par Google reprsentent de ce fait un trs faible
volume de code (quelques milliers de lignes) dans le rpertoire drivers/staging/android. Le
terme staging dsigne des pilotes qui ne sont pas encore officiellement intgrs au noyau. En
2009, les pilotes furent dailleurs retirs du noyau officiel (ou mainline).
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 19
These drivers are no longer being developed and the original authors seem to have
abandonded them and hence, do not want them in the mainline kernel tree.
So sad :(
WWW.SMILE.FR
Les pilotes furent cependant rintgrs pour la version 3.3 du noyau officiel et mme si il
existe encore quelques tensions, Andrew Morton (contributeur majeur au noyau Linux) est
aujourdhui salari de Google. Alors quil y a quelques annes la version Google du noyau
Linux tait un peu loigne, on peut dsormais considrer quelle est assez proche de la
version officielle si lon omet les modifications pour sadapter aux cibles spcifiques (qui ne
sont pas forcment mainline, mais ce point n'a rien voir avec Android). Concrtement il est
aujourd'hui possible dutiliser le mme binaire de noyau Linux pour une distribution
GNU/Linux ou pour Android. Nous verrons le cas de la carte BBB dans un prochain
paragraphe.
A lheure actuelle, le noyau utilis par Android 7.1 est au mieux la version 4.4 pour les cibles
officielles dAOSP (Google) mais cela varie en fonction de la cible [20]. Pour les autres cibles,
le noyau est fourni avec le BSP.
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 20
Le choix de la version de Java installer peut se rvler complexe car une version donne
dAOSP nest pas compatible avec toutes les versions de Java (sans compter lalternative
OpenJDK). Il semblerait que les choses aient volu dans le bon sens, la branche courante
dAOSP tant dsormais compatible avec OpenJDK.
Dans cette partie plus technique, nous allons donc voquer la compilation et le test dAOSP
dans le cas le plus simple de lmulateur (ARM) intgr. Nous traiterons ensuite le cas dune
carte open hardware trs utilise, en loccurrence la fameuse BeagleBone Black (BBB). Nous
raliserons une adaptation simple dAOSP en permettant au systme de fonctionner sur un
cran tactile et non sur la sortie HDMI. Enfin nous verrons comment permettre Android
daccder des interfaces plus industrielles comme des ports dentres/sorties (GPIO) ou des
capteurs (SPI, IC, etc.).
CAS DE LMULATEUR
Lmulateur est la cible la plus simple et rapide construire et nous allons passer par cette
premire tape dinitiation. Mme si lmulateur ne permet pas daccder des interfaces
matrielles, il permet de tester bon nombre dapplications simples fournies par dfaut dans
AOSP.
De part le volume des sources d'AOSP, il n'est pas possible d'utiliser un unique arbre Git [26]
et les sources sont constitues d'un ensemble d'arbres Git que l'on manipule avec la
commande repo [27] fournie par Google (un script en Python bas sur la commande git). Le
volume des sources est sans comparaison avec celui d'autres projets comme le noyau Linux.
De plus, il est en forte augmentation car la version 4.3 occupait environ 17 Go alors que lon
frise les 50 Go avec la version 6.0 !
La liste des arbres est dfinie dans un fichier manifest. Suite cela, on peut synchroniser le
rpertoire local avec le dpt des sources. Pour une cible standard d'AOSP on tlcharge les
sources en utilisant les commandes suivantes.
$ mkdir work && cd work
$ repo init -u https://android.googlesource.com/platform/manifest -b <branche>
$ repo sync
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 21
A ce jour le systme de construction d'AOSP est bas sur des fichiers au format GNU Make et
des scripts shell (au format BASH). Ce point devrait voluer pour les futures versions mais
nous traiterons uniquement le cas prsent dans ce document. Il faut galement noter que les
versions AOSP disponibles pour les cartes industrielles ne sont pas forcment les plus
rcentes vu qu'un temps d'adaptation est ncessaire. C'est d'ailleurs galement le cas pour
des tlphones ou tablettes autres que ceux fournis par Google.
WWW.SMILE.FR
La compilation d'AOSP ncessite tout d'abord de slectionner la cible et l'on utilise ensuite la
commande make pour produire la distribution binaire. L'adaptation d'AOSP permettra
d'ajouter de nouvelles cibles utilisables avec la commande lunch.
$ source build/envsetup.sh
$ lunch <nom-de-cible>
$ make -j <nombre-de-coeurs>
Si lon utilise la commande lunch sans paramtre, la liste des cibles disponibles est affiche sur
le terminal et il suffit de slectionner le numro de la cible dsire.
$ lunch
Lutilisation de ccache [40] permet damliorer le temps de compilation dans le cas frquent
deffacement puis re-compilation par make clean puis make.
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 22
Les sources AOSP officielles fournies par Google (voir paragraphe prcdent)
Une version du noyau Linux adapte la cible matrielle. Il faut noter que dsormais le
mme noyau Linux peut tre utilis pour GNU/Linux ou pour Android ce qui est une
avance notoire !
En premier lieu il convient d'obtenir les sources (non modifies) partir du dpt Google en
prcisant la branche utilise, soit la commande :
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 23
Dans la source AOSP, la partie dpendante du matriel est localise dans le rpertoire device.
$ ls -l device
WWW.SMILE.FR
total 36
drwxr-xr-x 7 pierre pierre 4096 aot 8 2013 asus
drwxr-xr-x 4 pierre pierre 4096 aot 8 2013 common
drwxr-xr-x 10 pierre pierre 4096 aot 8 2013 generic
drwxr-xr-x 3 pierre pierre 4096 aot 8 2013 google
drwxr-xr-x 4 pierre pierre 4096 aot 8 2013 lge
drwxr-xr-x 10 pierre pierre 4096 aot 8 2013 sample
drwxr-xr-x 7 pierre pierre 4096 aot 8 2013 samsung
drwxr-xr-x 3 pierre pierre 4096 aot 8 2013 samsung_slsi
drwxr-xr-x 4 pierre pierre 4096 janv. 10 18:25 ti
Par dfaut, seule la carte Pandaboard est (ou tait) prise en charge dans le rpertoire ti.
$ ls -l ti/
total 4
drwxr-xr-x 9 pierre pierre 4096 aot 8 2013 panda
On doit donc ajouter le rpertoire beagleboneblack contenant les fichiers spcifiques la carte
BBB. Nous utilisons la branche distante jb4.3-fastboot car l'organisation des partitions est
adapte Fastboot.
$ cd work_43/device/ti
$ git clone https://github.com/csimmonds/bbb-android-device-files.git beagleboneblack
$ cd beagleboneblack
$ git fetch
$ git checkout jb4.3-fastboot
On constate l'ajout de la cible beagleboneblack par rapport la version standard. Il suffit alors
de compiler AOSP par :
$ make -j <nombre-de-coeurs>
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 24
$ ls
Android.mk fstab.am335xevm README.md
AndroidProducts.mk gpio-keys.kl sgx
audio_policy.conf init.am335xevm.rc ti-tsc.idc
beagleboneblack.mk init.am335xevm.usb.rc uEnv.txt
BoardConfig.mk liblights ueventd.am335xevm.rc
CleanSpec.mk media_codecs.xml vendorsetup.sh
device.mk media_profiles.xml vold.fstab
WWW.SMILE.FR
device-sgx.mk mixer_paths.xml
egl.cfg overlay
Ce point est trs peu document par Google, mais on peut se rfrer l'ouvrage cit en [17]
ainsi qu' la confrence sur AOSP en [28]. Outre le manque de documentation officielle, il
existe hlas trs peu d'ouvrages et de rfrences sur le domaine si l'on compare avec le
dveloppement d'application. Les fichiers .mk sont au format GNU Make et utilisent des
macros du type :
$(call inherit-product, device/ti/beagleboneblack/device.mk)
Ces macros permettent d' hriter des paramtres d'un autre fichier .mk. En premier lieu,
le fichier AndroidProducts.mk dfinit la (ou les) cible(s) :
PRODUCT_MAKEFILES := $(LOCAL_DIR)/beagleboneblack.mk
Le fichier beagleboneblack.mk utilise des variables propres AOSP afin de dfinir un certain
nombre de paramtres comme le nom de la cible, le constructeur, etc.
PRODUCT_NAME := beagleboneblack
PRODUCT_DEVICE := beagleboneblack
PRODUCT_BRAND := Android
PRODUCT_MODEL := BEAGLEBONEBLACK
PRODUCT_MANUFACTURER := Texas_Instruments_Inc
Le fichier device.mk permet de dfinir d'autres paramtres comme des fichiers ajouts
l'image AOSP produite, dont le noyau Linux que nous devons compiler sparment. Ce
dernier doit tre copi sur le rpertoire sous le nom kernel.
ifeq ($(TARGET_PREBUILT_KERNEL),)
LOCAL_KERNEL := device/ti/beagleboneblack/kernel
else
LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
endif
La variable PRODUCT_COPY_FILE permet tout simplement de copier des fichiers vers l'image
AOSP en utilisant le sparateur deux points .
PRODUCT_COPY_FILES := \
$(LOCAL_KERNEL):kernel \
device/ti/beagleboneblack/init.am335xevm.rc:root/init.am335xevm.rc \
device/ti/beagleboneblack/init.am335xevm.usb.rc:root/init.am335xevm.usb.rc \
...
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 25
PRODUCT_PROPERTY_OVERRIDES += \
persist.sys.strictmode.visual=0 \
persist.sys.strictmode.disable=1
une nouvelle fournie dans la dfinition de la carte, soit dans notre cas le rpertoire overlay.
DEVICE_PACKAGE_OVERLAYS := \
device/ti/beagleboneblack/overlay
Cette adaptation d'Android utilise la sortie HDMI de la BBB pour l'affichage (et donc un cran
externe). Dans la suite de la prsentation nous allons voir quelles modifications apporter afin
d'utiliser un cran tactile compatible avec la BBB visible sur la figure ci-dessous [29]. Cet
cran est bon march et peut tre utilis facilement avec Android.
Le nom de la machine est important dans le cas d'Android puisque cela permet au processus
init de dmarrer le script d'initialisation init.am335xevm.rc.
Le deuxime point concerne le noyau Linux. L'cran tactile ne fonctionne pas avec le noyau
3.2 utilis par le portage initial et nous devons donc utiliser une version plus rcente, soit la
3.8.13. Le noyau BBB utilise la technique du device tree dont la description dpasse largement
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 26
Le bootloader adapt Android n'est pas compatible avec le device tree et il convient
d'ajouter le fichier am335x-boneblack.dtb la suite du noyau zImage afin de crer le fichier
kernel utilis par Android en ayant pris soin dactiver loption noyau ncessaire.
WWW.SMILE.FR
Le dernier point concerne les touches Android (Back, Home, etc.), car l'cran tactile utilis est
trop petit pour pouvoir utiliser les boutons virtuels d'une tablette standard. Nous allons donc
associer les boutons physiques de l'cran (LEFT, RIGHT, etc.) des actions Android.
L'action BACK est la plus importante, car elle permet de quitter l'application courante. Les
codes des touches ainsi que le nom du priphrique (cran tactile) sont obtenus grce la
commande getevent, ce qui permet ensuite de dfinir le nom du fichier de mapping , soit
gpio_keys_13.kl.
$ cat device/ti/beagleboneblack/gpio_keys_13.kl
# Beaglebone LCD Cape GPIO KEYPAD keylayout
key 105 DPAD_LEFT VIRTUAL
key 106 DPAD_RIGHT VIRTUAL
key 103 DPAD_UP VIRTUAL
key 108 DPAD_DOWN VIRTUAL
key 28 BACK VIRTUAL
Une fois la compilation termine, on peut passer l'installation de l'image AOSP sur la cible.
Android utilise le protocole Fastboot pour l'installation sur la cible des images produites. L
encore, la socit 2net fournit en [31] une documentation dtaille pour l'installation d'une
version modifie de U-Boot supportant Fastboot puis l'installation des images .img produites
lors de la compilation d'AOSP dans le rpertoire out/target/product/beagleboneblack. On
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 27
remarque l'empreinte mmoire utilise par les images, largement suprieure ce que l'on
peut faire avec GNU/Linux (embarqu) !
$ ls -lh out/target/product/beagleboneblack/*.img
-rw-r--r-- 1 pierre pierre 5.1M Mar 3 11:54 out/target/product/beagleboneblack/boot.img
-rw-r--r-- 1 pierre pierre 256M Mar 2 17:54 out/target/product/beagleboneblack/cache.img
-rw-rw-r-- 1 pierre pierre 241K Mar 3 11:54 out/target/product/beagleboneblack/ramdisk.img
-rw-r--r-- 1 pierre pierre 256M Mar 3 11:54 out/target/product/beagleboneblack/system.img
-rw-r--r-- 1 pierre pierre 256M Mar 2 18:00 out/target/product/beagleboneblack/userdata.img
WWW.SMILE.FR
Aprs avoir format la mmoire flash (de type eMMC), on installe le firmware MLO puis
l'image U-Boot depuis une carte Micro-SD.
$ fastboot oem format
$ fastboot flash spl MLO
$ fastboot flash bootloader u-boot.img
Aprs redmarrage sur la eMMC, on peut alors installer les images Android.
$ fastboot flash userdata
$ fastboot flash cache
$ fastboot flashall
Le dmarrage de la carte partir d'U-Boot donne les traces suivantes sur la console.
U-Boot 2013.01.01-gc0dd2af-dirty (Aug 30 2014 - 20:36:55)
I2C: ready
DRAM: 512 MiB
WARNING: Caches not enabled
NAND: No NAND device found!!!
0 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
*** Warning - readenv() failed, using default environment
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Host mode controller at 47401800 using PIO, IRQ 0
Net: <ethaddr> not set. Validating first E-fuse MAC
cpsw
Hit any key to stop autoboot: 0
mmc_send_cmd : timeout: No status update
mmc1(part 0) is current device
mmc_send_cmd : timeout: No status update
Loading efi partition table:
256 128K spl
512 512K bootloader
1536 128K misc
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 28
2048 8M recovery
18432 8M boot
34816 256M system
559104 256M cache
1083392 256M userdata
1607680 1047M media
Loaded eMMC partition table
SELECT MMC DEV: 1
mmc1(part 0) is current device
...
WWW.SMILE.FR
Le dmarrage est assez long (surtout pour la partie graphique) mais on obtient finalement
l'image suivante sur l'cran .
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 29
UTILISATION D'INTERFACES
INDUSTRIELLES
De nombreux projets industriels utilisent des interfaces matrielles spcifiques, assez
loignes du monde de la tlphonie sur lequel Android est largement majoritaire. Nous
pouvons citer l'interface rseau Ethernet (et drivs), les bus RS-232, RS-485, IC et SPI, les
entres/sorties tout ou rien ou GPIO (pour General Purpose Input Output). Le support
WWW.SMILE.FR
Ethernet est souvent prsent dans les versions AOSP fournies par les constructeurs (c'est le
cas pour la BBB). Certaines interfaces sont dsormais prises en compte par Android
Things , systme d'exploitation proche d'Android et adapt aux objets connects. A titre
d'exemple, le SDK de Things fournit une interface pour le bus SPI, le bus IC, les GPIO et autres
PWM [32]. Dans le cas d'AOSP, les choses ne sont pas si simples si l'on sort des interfaces
habituelles de la tlphonie. L'interface USB trs rpandue est galement accessible
depuis le SDK Android [33]. Quelques exemples sont disponibles dont le pilotage du clbre
lance-missile USB [34]. L'utilisation d'interfaces non prvues dans le SDK Android peut
s'effectuer de plusieurs manires :
En utilisant JNI pour interfacer une application Java avec un priphrique matriel via
une bibliothque partage (.so). Cette bibliothque peut elle-mme faire appel un
pilote Linux en ouvrant un fichier dans /dev .
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 30
pas forcment vidente car ce nest pas lapproche propose par Android qui par dfaut
favorise le dveloppement dapplication en Java en utilisant le framework fourni (et le SDK).
Un NDK (pour Native Development Kit) est cependant disponible auprs de Google [36] . Ce
dernier est constitu dun ensemble de chanes de compilation croises pour les architectures
compatibles avec Android (ARM, x86, MIPS en 32 ou 64 bits). Quelques exemples sont
galement disponibles en [37].
Il est important de remarquer que le NDK nest pas rellement conu pour compiler les
WWW.SMILE.FR
applications gnriques C/C++ que lon peut rencontrer sur GNU/Linux (ou des systmes
dexploitation POSIX en gnral) mais plutt des composants intgrs Android et lis des
applications Java (bibliothque JNI). Android ntant pas un systme dexploitation POSIX, il
utilise une libC simplifie (Bionic) qui na rien voir avec la GNU-libC (ou Glibc) utilise par
dfaut sous GNU/Linux. Dans une des documentations de Bionic, on peut dailleurs lire :
The core idea behind Bionic's design is: KEEP IT REALLY SIMPLE.
This implies that the C library should only provide lightweight wrappers
around kernel facilities and not try to be too smart to deal with edge cases.
Nous allons cependant voir comment compiler un programme simple en utilisant le script
ndk-build fourni avec le NDK. Android nutilise pas le principe habituel du fichier Makefile bien
connu sous UNIX ou GNU/Linux mais un fichier Android.mk qui est plac dans le rpertoire des
sources et contient les lignes suivantes :
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES = helloworld.c
LOCAL_MODULE = HelloWorld
LOCAL_MODULE_TAGS = optional
include $(BUILD_EXECUTABLE)
Le rpertoire contenant les sources ainsi que le fichier Android.mk doit tre nomm jni par
dfaut.
$ tree .
.
jni
Android.mk
helloworld.c
La compilation utilise le script ndk-build et produit les diffrents fichiers binaires installer sur
la cible correspondante.
$ ~/android-ndk-r14b/ndk-build
[arm64-v8a] Compile : HelloWorld <= helloworld.c
[arm64-v8a] Executable : HelloWorld
[arm64-v8a] Install : HelloWorld => libs/arm64-v8a/HelloWorld
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 31
Dans le cas dune application plus complexe ncessitant une meilleure compatibilit POSIX il
est galement possible dutiliser un compilateur crois non fourni par Android mais
disponible dans lenvironnement GNU/Linux (embarqu) et bas sur la Glibc. De ce fait on
pourra faire cohabiter des applications Android avec des excutables compatibles avec Linux.
Cette configuration est possible car le noyau utilis par Android est compatible avec celui de
GNU/Linux (au niveau des appels systmes). Le problme est la communication entre les deux
mondes puisqu Android utilise Binder comme systme dIPC, contrairement GNU/Linux qui
utilise les IPC SystemV. On peut cependant imaginer larchitecture suivante en supposant que
lon utilise un support de communication commun entre les deux mondes (par exemple des
sockets).
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 32
Utilisation de JNI
Lutilisation de JNI est plus frquente que le cas prcdent. Nous rappelons quil sagit dcrire
une bibliothque partage (.so) permettant daccder des couches C/C++ depuis
WWW.SMILE.FR
lapplication Java, la bibliothque tant compile avec le NDK. Il existe quelques exemples
disponibles dont la rfrence [39] dcrivant un accs IC depuis Android. Dans le cas prsent
nous allons dcrire un exemple simple bas sur laccs un priphrique simul par une
entre /dev/temper0 cre par linsertion dun module noyau temper.ko. Nous ne dcrirons
pas ici la cration du pilote ni sa compilation.
La lecture du fichier retourne une valeur correspondant une temprature sur deux octets.
Le calcul de la temprature relle (en C) sera ralis dans lapplication. Le pilote modifie
automatiquement la valeur retourne lors de chaque lecture en ajoutant 500.
# insmod temper.ko
# cat /dev/temper0
5000
# cat /dev/temper0
5500
Laccs au fichier /dev/temper0 sera ralis par une fonction getTemp() dfinie dans une
bibliothque JNI (libtemper.so) intgre au paquet (.apk) de lapplication Android. Le paquet
devra contenir les binaires utilisables sur les diffrentes cibles (x86, ARM, etc.) puisque le
code est compil. Le code source de la fonction trs simple est reproduit ci-dessous :
#include <string.h>
#include <stdio.h>
#include <jni.h>
jstring
Java_com_example_temper_MainActivity_getTemp( JNIEnv* env,
jobject thiz )
{
char buf[256];
FILE *fp = fopen (FILE_PATH, "r");
if (!fp)
return (*env)->NewStringUTF(env, "No data file !");
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 33
Le fichier Android.mk associ est proche du prcdent mis part que lon produit une
bibliothque partage et non un excutable.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := temper
WWW.SMILE.FR
LOCAL_SRC_FILES := temper.c
include $(BUILD_SHARED_LIBRARY)
Lapplication (fonctionnant ici dans lmulateur Android) indique la temprature. Laction sur
le bouton Update permet de mettre jour la valeur.
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 34
WWW.SMILE.FR
Nous ne dcrirons pas entirement cette mthode car elle ncessite un dveloppement
beaucoup plus lourd. Elle est cependant utilise pour les priphriques standards dAndroid
(Wi-Fi, tlphonie, rtro-clairage, etc.). Le principe gnral dAndroid est de ne jamais
permettre laccs direct une ressource matrielle mais de passer par un manager
(service) ddi. Un exemple dj cit est disponible en rfrence [35]. La commande suivante
permet dafficher les services disponibles.
$ service list
Found 69 services:
0 phone: [com.android.internal.telephony.ITelephony]
1 iphonesubinfo: [com.android.internal.telephony.IPhoneSubInfo]
2 simphonebook: [com.android.internal.telephony.IIccPhoneBook]
3 isms: [com.android.internal.telephony.Isms]
...
31 statusbar: [com.android.internal.statusbar.IstatusBarService]
...
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 35
Dfinir une nouvelle interface HAL pour le nouveau service et ajouter les
bibliothques en C/C++ - permettant dutiliser le service sur les diffrentes cibles
(mulateur, BBB, etc.)
WWW.SMILE.FR
Modifier le SDK afin que la nouvelle classe soit utilisable pour le dveloppement des
applications
Une fois les oprations accomplies, un nouveau service est visible dans le systme.
$ service list | grep temper
7 temper: [android.os.ItemperService]
Cot application on dispose prsent dune classe correspondant notre nouveau matriel
et on dclare une variable de type TemperManager.
import android.os.TemperManager; // My new class !!
try {
f = Float.parseFloat (mTemperManager.read (20)); // Get temp from service
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 36
Android Things est le dernier n de la famille Google et nous avons peu dlments son sujet
sachant quil est pour linstant disponible en version preview [41] et que les sources ne sont
pas encore publies. Cet vnement justifie cependant quelques mots car le march de lIoT
pourrait tre impact par ce nouvel OS. Pour refaire un peu lhistoire, Google avait propos il
WWW.SMILE.FR
y a quelques annes lOS Brillo qui correspondait peu ou prou Android auquel on aurait
retir la partie graphique (Java). Ce systme na jamais pu simposer et on pria donc les
ingnieurs de Google de rflchir une nouvelle approche moins radicale. Linterface
graphique mme si elle est optionnelle - est donc de retour dans Android Things. Point
fondamental, les interfaces matrielles voques prcdemment (IC, SPI, GPIO, etc.) sont
nativement supportes par Things. Autre point intressant, le dveloppement dapplication
passe par loutil Android Studio. Android Things semble donc tre lOS parfait pour le
dveloppement embarqu et IoT dans lenvironnement Android.
La version actuelle est pour linstant disponible pour un nombre limit de plate-formes (4
cibles dont la Raspberry Pi 3). Comme pour Android, cette liste concerne des cibles 32 bits ou
plus et il y a donc peu de chances de trouver Things sur un capteur lger qui reste la chasse
garde du bare metal ou des OS comme Contiki [42] ou RIOT [43] qui tout deux peuvent
fonctionner sur des cibles 16 bits (voire 8 bits) et des empreintes mmoire de quelques
dizaines de Ko ! A contrario limage de test compresse de Things pour Raspberry Pi 3
tourne autour de 250 Mo sans aucune application fournie ( part laffichage de la liste des
ports dtects).
$ ls -lh ~/Tlchargements/androidthings_rpi3_devpreview_3.zip
-rw-rw-r-- 1 pierre pierre 250M May 6 09:23
/home/pierre/Tlchargements/androidthings_rpi3_devpreview_3.zip
Le choix de Things doit donc tre motiv par dautres facteurs comme lcosystme Android,
une certaine standardisation dans les API et outils de dveloppement (Android Studio) mais
aussi lintgration possible dans un environnement utilisant des technologies comme Greybus
[44] dvelopp pour feu le projet ARA de Google (tlphone ouvert et modulaire). Une
excellente prsentation technique de Things (par Karim Yaghmour) est disponible en [45]. De
mme une interview de Karim et Chris Simmonds (auteur du portage Android pour BBB) est
disponible en [46]. Une prsentation Google I/O 2017 est galement disponible en [47]. L
encore il faut noter (et peut-tre craindre?) lintgration complte des objets dans
lcosystme Google (dont le fameux Google Play Services dj voqu dans le document).
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 37
Depuis son lancement, Android est dploy sur plus de deux milliards de smartphones et
tablettes. La stratgie de Google est claire, fournir un systme dexploitation, y adjoindre
lensemble de ses services et sappuyer sur une communaut de dveloppeurs pour enrichir
la plateforme avec du contenu. Fort de ce succs sur le march du mobile, cest lors de la
WWW.SMILE.FR
confrence Google I/O en 2014, que le gant californien de linternet a rvl sa stratgie de
conqute en dclinant sa plate-forme Android sur de nouveaux marchs verticaux en
sappuyant sur son cosystme cr pour le Smartphone.
Comme son nom le suggre, Android TV se base sur le systme dexploitation Android
profitant par la mme occasion de lcosystme de ce dernier et de sa facilit de
dveloppement. Pour les constructeurs de TV, cela permet de profiter du march des
tlvisions connectes moindre cot . Cette solution offre aux clients la possibilit
daccder plthore dapplications dj dveloppes pour Android TV alors quil serait trop
compliqu dattirer des dveloppeurs sur une autre plateforme.
lheure actuelle, des produits sont disponibles chez des constructeurs comme Sony, Sharp
et Philips, et Google a sign de nouveaux partenariats. Dans le courant de lanne, Android TV
sera disponible sur des appareils signs Arcelik (Turquie), Vestel (Turquie), RCA, Hisense
(Chine), TCL (Chine) et Bang & Olufsen (Danemark). Une liste qui stend donc, mais sans pour
autant inclure les plus grands noms puisque des constructeurs comme Samsung ou LG
prfrent miser sur leurs propres systmes dexploitation, savoir Tizen et WebOS 2.0. En
France, nous pouvons citer Bouygues Telecom et Free qui utilisent Android dans les set-top
box Miami et mini 4K.
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 38
LAUTOMOBILE (ANDROID
AUTO)
Android reprsente un choix potentiellement intressant pour les systmes dinfotainment
automobile (IVI). Lobjectif de Google est dinciter les constructeurs intgrer Android dans
l'habitacle des vhicules et donc permettre aux conducteurs de dporter laffichage du
tlphone sur lcran du vhicule afin de lutiliser en toute scurit. Les OEM automobiles
WWW.SMILE.FR
Google souhaite aborder le march de lIoT et de lembarqu avec la mme stratgie que les
autres domaines cits. LIoT est un march naissant que lon estime plusieurs milliards de
dollars o se ruent des dizaines de constructeurs sans relle concertation, avec de nombreux
systmes dexploitation, protocoles de communication et frameworks dintgration.
Linternet des objets est actuellement quelque peu cacophonique et Google souhaiterait y
imposer sa loi avec Android Things. Ce dernier sest joint dbut 2017 la famille Android aux
cts dAndroid TV, Android Auto et Android Wear. Lobjectif dAndroid Things est de rendre
le dveloppement de produits embarqus plus abordable car le systme d'exploitation utilise
les outils de dveloppement de la plate-forme Android (Android Studio). Les entreprises nont
cependant pas attendu larrive dAndroid Things pour utiliser Android dans leurs produits.
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 39
Des acteurs majeurs comme JC Decaux ont utilis Android pour des panneaux publicitaires
connects [53]. Plus rcemment, la socit Parkeon a dvelopp une gamme
dhorodateurs sous Android intgr une solution complte utilisant l'cosystme Android.
Le fait douvrir la plate-forme permet aux oprateurs locaux de dvelopper leurs propres
spcificits. Une prsentation du produit est disponible sur une vido en [54].
Android Things nest quune nouvelle tape dans la stratgie de Google pour aborder le
march de lIoT. Google a galement annonc dbut mai 2017 le lancement de son offre
WWW.SMILE.FR
cloud pour lIoT. Google nest cependant pas le seul loin sen faut - proposer un OS pour
lembarqu et les objets connects. Les plus populaires ce jour sont Linux, Contiki et autres
RIOT qui sont eux entirement libres (mais fournissent uniquement un OS). Dautres
concurrents de taille sont dj sur la place comme Samsung avec Tizen et tout rcemment
Tizen RT annonc lors du Tizen Developer Days en mai 2017. ll faut aussi compter avec ARM
et son OS mbed ou des systmes embarqus libres rcemment adapts lIoT comme
FreeRTOS.
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 40
CONCLUSION
Ntant affili aucun diteur ni constructeur et en nous appuyant sur notre exprience de
plusieurs annes dans le domaine de l'embarqu et de l'IoT, nous avons tent dans ce livre
blanc de prsenter concrtement et sans complaisance les avantages et inconvnients de
lutilisation dAndroid en dehors de ses domaines de prdilection actuels.
WWW.SMILE.FR
Nous profiterons de la sortie officielle dAndroid Things (dici fin 2017) pour raliser un mini-
livre blanc de quelques pages sur ce sujet ! A suivre !
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 41
BIBLIOGRAPHIE
[3] RTOS/360
https://www.computer.org/csdl/proceedings/afips/1969/5073/00/50730015.pdf
[12] Qt https://www.qt.io
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 42
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 43
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation
Android pour l'embarqu
Page 44
Edition Juin 2017 Copyright Smile Open Source Solutions Toute reproduction interdite sans autorisation