Linux na mobilních telefonech Jozef Mlích Department of Computer Graphics and Multimedia Brno University of Technology, Faculty of Information Technology Božetěchova 2, 612 66 Brno, Czech Republic imlich@fit.vutbr.cz Tvorba aplikací pro mobilní zařízení 26. 10. 2009 TAM 2009 1 / 29
Agenda Motivace Hardware Architektura Přehled distribucí Cross kompilace TAM 2009 2 / 29
Motivace TAM 2009 3 / 29
Motivace Linux je otevřený, takže můžeme zkoumat jak věci fungují a přizpůsobovat ho jak potřebujeme. Můžeme programovat a používat nové aplikace bez podepisování NDA (dohoda o mlčenlivosti) a placení licencí nebo jiných výpalných. Můžeme aktualizovat celý operační systém, připadně vyměnit za jinou distribuci.. Proč dělat něco co už máme hotové na desktopu? TAM 2009 4 / 29
Hardware Greenphone (2006) Openmoko GTA 01 GTA 02 (2008/6) GTA 03 / Plan B Nokia N900 HTC Dream TAM 2009 5 / 29
Hardware CPU ARM, málo paměti, SD karta Dotykový display / klávesnice LED GSM (GPRS, EDGE, 3G), WiFi, BT GPS Akcelerometry Vibrátor Kamera Napajení / Datový konektor (idealně USB) TAM 2009 6 / 29
Architektura Bootloader Jádro + baseos (libc, etc.) je to jediné společné pro všechny To co odlišuje jednotlivé distribuce je middleware a sada základních aplikací Mezivrstva pro komunikaci s HW Správce oken Seznam kontaktů, SMS,.. Vykreslování X Server Přímo do framebufferu TAM 2009 7 / 29
Přehled distribucí Google Android OpenEmbeded, Openmoko Hackable:1 LiMo Motomagx Maemo Qt Extended Moblin WebOS TAM 2009 8 / 29
Google Android 1 / 3 U běžně prodávaných telefonů nedostanete rootovské heslo ) ; TAM 2009 9 / 29
Google Android 2 / 3 Architektura TAM 2009 10 / 29
Google Android 3 / 3 Debug Bridge adb install push/pull logcat shell TAM 2009 11 / 29
Openmoko Timeline.. Gentoo OpenEmbeded Openmoko FSO Bitbake Ipkg / Opkg TAM 2009 12 / 29
Openmoko Architektura TAM 2009 13 / 29
Openmoko ukázky UI Openmoko UI, Qt Extended, E17 TAM 2009 14 / 29
Openmoko ukázky aplikací TAM 2009 15 / 29
Openmoko prostor pro inovace Finger friendly UI Stylus friendly UI Numpty physics hra qwo alternativní klávesnice Akcelerometry Gestures (ovládání pomocí akcelerometrů) Krokoměr, Vibroměr, Vodováha, Speechd / rozpoznání řeči Audio Location based applications Podle GPS nebo podle signálu dostupných BTS TAM 2009 16 / 29
Filesystem NAND paměti mají jiné fyzikální vlastnosti než klasické disky FAT Běžně na SD kartách (foťáky, apod) Pozor na patenty!! ext2/ext3/reiserfs Běžně linuxové systémy (mají určité vlastnosti) Vhodné pro nand jffs2 TAM 2009 17 / 29
Přímý přístup k hardware Akcelerometry /dev/input/event3 echo 1 > /sys/devices/platform/gta02 led.0/leds\:gta02 aux\:red/brightness echo 0 > /sys/bus/platform/devices/neo1973 pm gsm.0/power_on LED: GSM TAM 2009 18 / 29
Pomocí DBUS / FSO mdbud s org.freesmartphone.frameworkd /org/freesmarphone/device/powercontrol/bluetooth SetPower 1 mdbus s org.freesmartphone.ogsmd /org/freesmartphone/gsm/device org.freesmartphone.gsm.device.getinfo mdbus s org.freesmartphone.ogsmd /org/freesmartphone/gsm/device org.freesmartphone.gsm.sms.sendmessage 0049987654321 "test message" [] TAM 2009 19 / 29
Interpretované jazyky Bash Perl Python... Jak na to? Stáhne se interpret přeložený pro příslušnou architekturu, nakopiruje se skript a spustí se no problem TAM 2009 20 / 29
Python Ukázka přečtení SMS Ukázka odeslání SMS TAM 2009 21 / 29
Cross compilation Proč nepřekládáme nativně? Příprava na překlad toolchain pro ARM architekturu stačí stáhnout příslušný.deb balíček, případně devkit např. http://downloads.openmoko.org/developer/toolchains/ Co je toolchain a co umí? překladač + knihovny Můžeme ho spustit na desktopu. Vytvořená binárka se dá pustit na jiné architektuře Jake knihovny? Všechny! Od libc až po gtk. ( opkg cl ) TAM 2009 22 / 29
Cross compilation hello world $ vi main.c $ /usr/local/openmoko/arm/bin/arm angstrom linux gnueabi gcc./main.c g o hello $ scp hello root@192.168.0.202:/tmp $ ssh root@192.168.0.202 $./hello TAM 2009 23 / 29
Cross compilation Makefile $ vi Makefile main: main.o $ make $. /usr/local/openmoko/arm/bin/setup env $ rm f main main.o $ make TAM 2009 24 / 29
Cross compilation knihovny, autotools, etc. Překlad na více platformách je vždy problem Různé distribuce mají knihovny jinde gcc hello_camera.c `pkg config cflags libs opencv` Integer nemusí být 32 bit, FPU nemusí být vůbec ASM část kódu můžeme úplně zahodit.. Různé nástroje se to snaží řešit autotools, cmake, imake,... TAM 2009 25 / 29
Cross compiling autotools autoreconf, aclocal, autoconf, autoheader, automake, libtoolize Makefile.am + configure.ac autoreconf./configure make TAM 2009 26 / 29
Balíčkování Balíčkování (ipkg s autotools) Nezapomenout.desktop a /share/pixmaps/* $ om make ipkg. tangogps.control TAM 2009 27 / 29
Balíčkování Build service Nejlepší možnost je vyrobit skript, který umožňuje automatické zabalíčkování a zařazení do distribuce. V debianu / ubuntu / hackable:1 /... $ dhmake V gentoo / OpenEmbeded / openmoko bitbake TAM 2009 28 / 29
Literatura http://developer.android.com/guide/basics/ http://wiki.openmoko.org Linux From Scratch http://www.linuxfromscratch.org/ TAM 2009 29 / 29