Pˇripojen´ı modulu˚ IQRF k platformˇe Android za pouˇzit´ı USB nebo SPI Bc. Josef Jebavy, ´ http://xeres.cz 25. srpna 2015
Obsah 1
Operaˇcn´ı syst´em Android
2
2
Moˇznosti rˇeˇsen´ı 2.1 USB . . . . . . . . . . . . . 2.1.1 USB Host . . . . . 2.1.2 Accessory . . . . . 2.1.3 Vlastn´ı rˇ eˇsen´ı USB 2.2 SPI . . . . . . . . . . . . .
2 2 2 2 3 3
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
3
Volba rˇeˇsen´ı
3
4
Hardwarov´e n´aroky vyvojov´ eho pracoviˇstˇe ´
4
5
Vyznam pouˇzitych ´ ´ zkratek a term´ınu˚
4
revize dokumentu
5
1
1
Operaˇcn´ı syst´em Android
Android je OS urˇceny´ pro mobiln´ı telefony a aktu´alnˇe uˇz i tablety. Tento operaˇcn´ı syst´em je urˇcen pro hardware s procesory Arm verze 5 a novˇejˇs´ı. Je zaloˇzen na Li˚ Tento kernel je znaˇcnˇe upraven a tak uˇz s Linunuxu, cˇ ili kernelu linuxovych ´ syst´emu. xem nen´ı 100% kompatibiln´ı. Android vyuˇz´ıv´a i nˇekter´e GNU komponenty, ale s linuxovymi distribucemi m´a spoleˇcn´eho m´alo. Android je ps´an pˇrev´azˇ nˇe v jazyce C/C++ ´ a aplikace pro nˇej (d´ale nazyvan´ e jako nativn´ı) se p´ısˇ´ı v jazyce, ktery´ je podobny´ Javˇe. ´ Android je dobˇre pouˇziteln´a platforma pro spotˇrebn´ı uˇzivatele i pro nemalou skupinu vyvoj´ ´ arˇ u˚ a proto si mysl´ım, zˇ e se stala zaj´ımavou pro firmy at’ uˇz pro pouˇzit´ı samostatnˇe nebo v naˇsem pˇr´ıpadˇe s pˇripojenymi moduly IQRF. ´
2
Moˇznosti rˇeˇsen´ı
Jak propojit IQRF s Androidem a prov´est to z´arovenˇ rychle? Nab´ız´ı se dvˇe z´akladn´ı moˇznosti pˇripojen´ı IQRF modulu˚ pomoc´ı USB a nebo pomoc´ı SPI.
2.1
USB
Dle ofici´aln´ı dokumentace Android um´ı dva druhy pˇripojen´ı extern´ıch zaˇr´ızen´ı pomoc´ı USB rozhran´ı: USB Host a Accessory. 2.1.1
USB Host
Pro podporu t´eto komunikace je potˇreba m´ıt Android verze 3.1 (API level 12) a vyˇssˇ´ı. ´ V tomto modu se zaˇr´ızen´ı chov´a jako standardn´ı poˇc´ıtaˇc (host), coˇz nen´ı bˇezˇ n´a vˇec u mobilu˚ a ani to bˇezˇ nˇe mobiln´ı telefony neumˇej´ı. Z´asadn´ı vˇec je, aby hardware podporoval USB host u mobiln´ıch zaˇr´ızen´ı se obvykle jedn´a o oznˇcen´ı USB OTG. Takto by ´ se pak dalo pˇripojit USB IQRF zaˇr´ızen´ı v modu CDC nebo mass-storage, pro kter´e uˇz i Android obsahuje podporu. 2.1.2
Accessory
Podporu t´eto komunikace obsahuje Android verze 3.1 a byla backportov´ana i na Android 2.3.4 (API level 10). Toto je zvl´asˇ tn´ı typ komunikace, kdy se telefon chov´a jako zaˇr´ızen´ı (device) a pˇripojen´a perif´erie jako poˇc´ıtaˇc. Nen´ı tak na stranˇe Androidu potˇreba ˇ sen´ı probl´emu˚ zprovoznˇen´ı ovladaˇc ani nepotˇrebujeme aby hardware umˇel USB host. Reˇ ˚ a vzorov´a rˇ eˇsen´ı pˇrev´azˇ nˇe se tak cˇ a´ steˇcnˇe pˇren´asˇ´ı na pˇr´ıpojeny´ hardware. Existuj´ı ruzn´ s pouˇzit´ım procesoru˚ Atmel, vetˇsinou zaloˇzen´e na platformˇe Arduino. Ale protoˇze moduly IQRF pouˇz´ıvaj´ı procesory od firmy Microchip, tak zde uv´ad´ım odkaz na rˇ eˇsen´ı s procesorem a vzorovy´ kit od t´ezˇ e firmy: 3-step Approach to Develop Android Accessories. Pˇredpokl´ad´am, zˇ e ten kdo m´a zkuˇsenosti s mikroprocesory firmy Microchip, by s t´ımto vyvojov ym ´ ´ kitem nemˇel probl´em.
2
2.1.3
Vlastn´ı rˇeˇsen´ı USB
Jelikoˇz Android vych´az´ı z Linuxu d´a se pˇredpokl´adat, zˇ e by tak´e Android mohl m´ıt sice navenek skrytou, ale uvnitˇr existuj´ıc´ı podporu USB jako je v Linuxu. Pˇri po˚ drobn´em pruzkumu internetu se d´a narazit na zm´ınky, zˇ e i na starˇs´ıch verz´ıch Androidu bylo zprovoznˇeno USB rozhran´ı. Podrobnˇejˇs´ı popis vˇsak vetˇsinou chyb´ı. Z ˚ ´ u˚ Androidu, jsem zjistil, zˇ e kernel Androidu obsahuje ruzn´ ˚ e pruzkumu zdrojovych ´ kod ´ zdrojov´e kody pro USB a vypad´a to i na podporu USB host. Takˇze by bylo moˇzno portovat ovladaˇc konkr´etn´ıho extern´ıho USB zaˇr´ızen´ı z Linuxu na Android. Koneˇcnou prac´ı by pak bylo vytvoˇren´ı vrstvy, kter´a by poskytovala nativn´ım aplikac´ım API pro komunikaci s IQRF modulem. Z´akladn´ı podm´ınkou je zde opˇet podpora USB host a aby byl k dispozici ovladaˇc USB rˇ adiˇce a ovladaˇc pro USB zaˇr´ızen´ı, kter´e obsahuje IQRF modul. O pˇripojov´an´ı USB zaˇr´ızen´ı k mobiln´ım telefonum ˚ se d´a doˇc´ıst i v m´em cˇ l´anku ”Speci´aln´ı redukce USB se zdrojem”v cˇ asopise Praktick´a elektronika - Amat´ersk´e Radio 2011/7 strana 20.
2.2
SPI
Zat´ımco USB je rozhran´ı urˇcen´e pro uˇzivatele a pro pˇripojovan´ı periferi´ı, SPI je rozhran´ı ryze hardwarov´e. Jeho vyhodou je to, zˇ e je to z´akladn´ı rozhran´ı modulu˚ IQRF, ´ a tak nen´ı potˇreba dalˇs´ıho HW na stranˇe modulu pˇr´ıpadnˇe ani telefonu cˇ i tabletu. Mobiln´ı telefony a tablety bˇezˇ nˇe obsahuj´ı SPI a pouˇz´ıvaj´ı ho pr´avˇe pro pˇripojen´ı hard˚ waru. Z´akladn´ı podpora SPI, by tak v Androidu mˇela byt, ´ to potvrzuje i pruzkum ´ u. ˚ Pokud by byla v zaˇr´ızen´ı voln´a linka SPI, realizace by se skl´adala zdrojovych ´ kod z naprogramovan´ı syst´emov´e vrstvy, kter´a by propojovala IQRF modul s vnˇejˇs´ım svˇetem. Konkr´etnˇe by vytv´arˇ ela vnˇejˇs´ı API pro nativn´ı aplikace a spodn´ı vrstva by byla napojena na SPI vrstvu syst´emu nebo pˇr´ımo na vrstvu v kernelu. Pomoc´ı SPI pl´anuji propojit IQRF modul s mobiln´ım telefon FreeRunneru a tabletem TouchBook. S mobiln´ım telefonem m´am jiˇz IQRF moduly propojen´e , ale jinak.
3
Volba rˇeˇsen´ı
Nejrychlejˇs´ım rˇ eˇsen´ım se tak st´av´a volba USB host, coˇz by vyˇzadovalo vytvoˇrit kni´ hovnu pro komunikaci se zaˇr´ızen´ım v modu CDC nebo mass-storage. Podm´ınkou je vˇsak m´ıt novou verzi Androidu a aby zaˇr´ızen´ı umˇelo USB host. Pokud zaˇr´ızen´ı neum´ı ´ USB host, tak je dobrou volbou rˇ eˇsen´ı uprava USB IQRF modulu, tak aby se choval jako Master/USB Host. Obˇe tato rˇ eˇsen´ı by byla implementov´ana jako nativn´ı Java knihovny s uˇzit´ım Android Java API, a tak by nevyˇzadovaly zˇ a´ dny´ z´asah do syst´emu a proto by ho pak bylo moˇzn´e pouˇz´ıt i na libovoln´em zaˇr´ızen´ı. Zaˇr´ızen´ı by mˇelo m´ıt vˇzdy aktu´aln´ı syst´em obzvl´asˇ t’ v dobˇe uveden´ı na trh, pokud ´ vˇsak obsahuje stary´ Android pˇripad´a v uvahu pouze SPI nebo vlastn´ı zprovoznˇen´ı USB. SPI je zaj´ımavou volbou. Z pohledu hardware-vyvoj´ ´ arˇ e se jedn´a o cˇ ist´e rˇ eˇsen´ı, ale vyˇzaduje velky´ a pracny´ z´asah do syst´emu. Moˇznost zprovoznˇen´ı USB podpory 3
do starˇs´ıch verz´ı Androidu neˇz 3.1 a 2.3.4 je realizovateln´e a mˇelo by byt ´ pˇredmˇetem ˚ Pokud je USB subsyst´em na Androidu m´alo odliˇsny´ od dalˇs´ıho vyzkumu a testu. ´ ˚ puvodn´ ıho Linuxu, je vysoce pravdˇepodobn´e, zˇ e zprovoznˇen´ı IQRF modulu˚ by bylo podobn´e jako na cˇ istych ´ linuxovych ´ platform´ach napˇr: IQRF na OpenMoko Neo Freerunneru . Obˇe tato rˇ eˇsen´ı by byla implementov´ana jako C/C++ ovladaˇc, knihovna a API pro nativn´ı aplikace. Nevyhodou tˇechto rˇ eˇsen´ı je i pomalejˇs´ı vyvoj v jazyce C/C++ ´ ´ se jak vnˇejˇs´ım tak vnitˇrn´ım API. a nutnost zabyvat ´ Vzhledem k tomu, zˇ e s SPI na Linuxu m´am m´alo zkuˇsenost´ı (rok 2011 )a zˇ e IQRF pomoc´ı USB se mˇe uˇz podaˇrilo propojit s Linuxem, cˇ ili existuje asponˇ jeden ovladaˇc, pak bych osobnˇe z hlediska rychlejˇs´ıho zprovoznˇen´ı volil USB. ˇ s´ı rˇ eˇsen´ı se mˇe zd´a pouˇzit´ı SPI, obzvl´asˇ tˇe v pˇr´ıpade telefonu˚ s GNU/Linuxovym Cistˇ ´ syst´emem. Kter´e kromˇe firmy OpenMoko nab´ız´ı i napˇr´ıklad firmy Nokia a byval ´ y´ ´ Palm. Uspora souˇca´ stek, je tak´e vyhodn´ a. A to z pohledu ceny, m´ısta a minimalizaci ´ ˚ probl´emu. ´ esˇ nˇe propojil na poˇc´ıtaˇci Raspberry Pi. IQRF moduly pomoc´ı SPI s Linuxem jsem uspˇ
4
Hardwarov´e n´aroky vyvojov´ eho pracoviˇstˇe ´
˚ tak jako je Android, je n´aroˇcny´ i z hlediska vykonu, Vyvoj v oblasti mobiln´ıch poˇc´ıtaˇcu, ´ ´ proto je potˇreba m´ıt pro vyvoj dostateˇcnˇe vykonn y´ hardware obzvl´asˇ t’ pokud se ne´ ´ ´ jedn´a jen o aplikace, ale i o upravy syst´emu. Minim´aln´ı hardwarov´e z´azem´ı pak obsahuje poˇc´ıtaˇc s vykonn ym ´ ´ CPU o v´ıce j´adrech, velk´e mnoˇzstv´ı RAM a pro zajiˇstˇen´ı dobr´e diskov´e propustnosti disky v RAIDu 0 nebo kvalitn´ı SSD. Vhodn´e je m´ıt vyˇclenˇen stroj jen pro kompilaci. Samozˇrejmost´ı je kvalitn´ı zaˇr´ızen´ı s Androidem, ktery´ je od vyrobce odladˇeny´ a je k nˇemu dokumentace. Vˇse pod operaˇcn´ım syst´emem Linux. ´
5
Vyznam pouˇzitych ´ ´ zkratek a term´ınu˚
API application programming interface ˚ vyvinut´a v Brit´anii firmou ARM Limited ARM je architektura procesoru, CDC communications device class CPU central processing unit GNU GNU’s Not Unix! IQRF platforma pro jednoduchou bezdr´atovou komunikaci ´ znymi mass-storage USB standart pro komunikaci s USB uloˇ zaˇr´ızen´ımi(flash pamˇet’) ´ OS operaˇcn´ı syst´em RAID Redundant Array of Independent Disks 4
RAM Random Access Memory - pamˇet’ s libovolnym pˇr´ıstupem ´ (”n´ahodnym”) ´ SPI Serial Peripheral Interface Bus SSD solid-state drive USB Universal Serial Bus ´ host i device USB OTG USB On-The-Go, zaˇr´ızen´ı um´ı mod
revize dokumentu 1. 18.8.2011 - prvn´ı verze dokumentu, pˇred´an´ı 2. 27. 10. 2014 - opravy dokumentu 3. 25. 8. 2015 - opravy, aktualizace informac´ı o SPI
5