Prezentare inglobarea sistemului_de_operare_android_pe_platforma_arm9_kedves_balazs

1,348
-1

Published on

Prezentare inglobarea sistemului de operare android pe platforma ARM9

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,348
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Prezentare inglobarea sistemului_de_operare_android_pe_platforma_arm9_kedves_balazs

  1. 1. Facultatea de Inginerie Electrica si Stiinta Calculatoarelor Catedra de Automatica Kedves Balázs, an IV
  2. 2. Ce este Android? Introducere Este o platforma software şi un sistem de operare pentru dispozitive mobile bazate pe nucleul Linux, dezvoltată inițial de Google, iar mai Hardware târziu de Open Handset Alliance, un consorțiu de 48 de companii Mediul de  printre care se numara HTC, Samsung, Nokia, etc.  dezvoltare Lansarea platformei era la 5 noiembrie 2007, cand a aparut Android  v1.0  bazat pe kernelul Linux 2.6.25. Dupa aceea a aparut mai multe Portare versiuni ale platformei in 2009: 1.5 (Cupcake), 1.6(Donut),  Linux 2.0/2.1(Éclair) si pe data de 20 mai 2010 a aparut Android 2.2 Froyo bazat pe kernelul 2.6.32. Portare In 2008, Google a lansat cea mai mare parte a codului sub licența Android Apache, o licență free‐software şi open source. TODO
  3. 3. • Platforma mobila bazata pe Linux Introducere ‐ O mulțime de servicii (GSM, EDGE, Bluetooth, Wi‐Fi etc.) şi biblioteci (API) disponibile (OpenGL, 2D, 3D) Hardware ‐ Toate serviciile Google sunt disponibile (ex. Google Maps) Mediul de  ‐ Desi bazata pe nucleul linux, conform Google, nu este un  dezvoltare sistem de operare Linux, nu suportă întregul set de biblioteci standard Linux: ex. biblioteca glibc, in android are Portare corespondentul Bionic. Linux • Limbajul de programare Java ‐ Maşina virtuală Dalvik: Software‐ul scris în Java poate fi Portare compilat în cod maşină Dalvik (.dex) şi executat de maşina Android virtuala Dalvik, care este o implementare specializată a TODO standardelor Java pentru hardware ce dispune de memorie si CPU limitata. Fiecare aplicatie are o proprie masina virtuala in care ruleaza. ‐ nu sunt suportate standardele ca Java SE şi ME. 
  4. 4. • Android Developer Challenge Introducere ‐ un concurs pentru cea mai inovatoare aplicație Android.  Google a oferit premii în valoare de 10 de milioane de dolari,  Hardware astfel stimula dezvoltatorii sa creeze programe competitive pe Mediul de  aceasta platforma. dezvoltare Cerinte de sistem minime: Portare Linux • Cel mai recent kernel Linux care ruleaza pe HW tinta • SoC (System On Chip) bazat pe ARM Portare •128 MB SDRAM Android •256 MB flash favorabil de tip NAND •QVGA LCD (16BPP) cu touch screen rezistiv, capacitiv TODO •Tastatura cu cel putin 2 butoane de navigare
  5. 5. Piata mondiala,  martie 2009: Introducere Hardware Mediul de  dezvoltare Portare Linux Portare Android TODO
  6. 6. Introducere Hardware Mediul de  dezvoltare Portare Linux Portare Android TODO
  7. 7. Introducere Sistemul de operare folosit: Ubuntu Linux (32‐bit x86) cu aplicatiile necesare: Hardware •Git 1.5.4  Mediul de  •JDK 5.0  dezvoltare •flex, bison, gperf, libsdl‐dev, libesd0‐dev, libwxgtk2.6‐dev (optional), build‐essential, zip, curl. Portare Linux Portare Android S‐a folosit CodeSourcery G++ Lite (arm‐none‐linux‐gnueabi) care este TODO o suita de aplicatii de dezvoltare profesionala care include o gama completa de utilitare pentru compilarea codului c pe platforma ARM  si nu numai.
  8. 8. Introducere Portare Linux:  Hardware Placa de dezvoltare Embest AT91SAM9G45 a fost livrata cu  bootloader uBoot si BSP(Board Support Package) Linux 2.6.30  Mediul de  dezvoltare (vanilla kernel).  Am folosit Android 2.1 care este bazata pe Linux 2.6.32. Portare Linux Exista 2 posibilitati: •Portarea modificarilor aduse de Android in kernelul 2.6.32 la  Portare kernelul 2.6.30 de la Embest. Android •Vice versa. TODO Intre 2.6.30 si 2.6.32 a trecut o jumatate de an  ar fi mai laborioasa trecerea de la 2.6.32 la 2.6.30, deasemenea modificarile facute de  Google in kernel sunt slab documentat/ințeles
  9. 9. Extensii kernel (enumerare): Ashmem (Anonymous shared memory subsystem) Introducere • mm/ashmem.c Binder IPC (Inter‐process communication (IPC) Hardware • drivers/android/binder.c Mediul de  dezvoltare Power management • drivers/android/power.c Portare • Foloseste interfata iNotify via fs/inotify_user.c Linux YAFFS2 (Yet another flash file system 2nd edition) Portare • fs/yaffs2/* Android Logger (Logging mechanism) TODO • drivers/android/ram_console.c • drivers/android/logger.c Low Memory Killer • drivers/misc/lowmemorykiller.c (echivalentul Garbage Collector in Java)
  10. 10. Modificari Embest: Introducere Placa de dezvoltare Embest SAM9G45 este asemanatoare cu Hardware placa de dezvoltara fabricata de ATMEL, AT91SAM9G45‐EK. Suportul pentru SAM9G45‐EK era disponibil in kernel Mediul de  deci modificarile aduse de firma Embest se referau numai la dezvoltare componentele electronice existente pe placa Embest, care insa nu erau disponibile pe placa oficiala ATMEL. Portare Linux Ex. Pentru memoria eeprom si WM8731‐low power stereo CODEC. Portare diff -Nru linux-2.6.30/arch/arm/mach-at91/board-sam9m10g45ek.c Android linux-2.6.30-embest/arch/arm/mach-at91/board-sam9m10g45ek.c --- linux-2.6.30/arch/arm/mach-at91/board-sam9m10g45ek.c 2010-03-19 +++ linux-2.6.30-embest/arch/arm/mach-at91/board-sam9m10g45ek.c 2010-03-18 TODO +/* + * I2C + */ +static struct i2c_board_info __initdata ek_i2c_devices[] = { + { + I2C_BOARD_INFO("24c512", 0x50), + I2C_BOARD_INFO("wm8731", 0x1b), + }, +};
  11. 11. static void __init ek_board_init(void) { Introducere @@ -410,7 +443,7 @@ /* NAND */ Hardware ek_add_device_nand(); /* I2C */ Mediul de  - at91_add_device_i2c(0, NULL, 0); + at91_add_device_i2c(0, ek_i2c_devices,ARRAY_SIZE(ek_i2c_devices)); dezvoltare /* LCD Controller */ at91_add_device_lcdc(&ek_lcdc_data); Portare /* Touch Screen */ Linux @@ -422,6 +455,10 @@ /* LEDs */ Portare at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds)); at91_pwm_leds(ek_pwm_led, ARRAY_SIZE(ek_pwm_led)); Android + /* SSC (for WM8731) */ + at91_add_device_ssc(AT91SAM9G45_ID_SSC1, ATMEL_SSC_TX); TODO + /*BATTERY*/ + at91_init_battery(); }
  12. 12. Configurarea surselor înainte de compilare Introducere Această etapă configurează componentele kernelului ce urmează a fi compilate. Pentru această etapă se va foloseste una Hardware dintre următoarele comenzi:  Mediul de  make menuconfig (interfață bazată pe ncurses) dezvoltare make gconfig (interfață bazată pe GTK+) make xconfig (interfață bazată pe QT) Portare Linux După executarea comenzii, se va pune la dispoziție o interfață cu ajutorul căruia putem configura kernelul. Aici putem debifa Portare componentele kernelului care nu sunt conforme configurației Android dorite.  TODO Compilarea kernelului make clean (curăță sursele) make uImage ARCH=arm CROSS_COMPILE=arm‐none‐linux‐gnueabi‐ (uImage‐imaginea kernelului comprimat rulabil pe architectura ARM
  13. 13. Architectura Android: Introducere Hardware Mediul de  dezvoltare Portare Linux Portare Android TODO
  14. 14. Portarea Android Root File System: Introducere Sursa are aproximativ 2.1GB. Ne trebuie 6GB pentru a putea compila Hardware codul sursa.  Mediul de  Platform/bionic.git dezvoltare platform/dalvik.git platform/development.git Portare platform/external/aes.git Linux platform/external/alsa‐lib.git Portare platform/external/alsa‐utils.git Android platform/frameworks/opt/com.google.android.git platform/frameworks/opt/com.google.android.googlelogin.git TODO platform/frameworks/opt/emoji.git platform/frameworks/policies/base.git … Si altele.
  15. 15. Un aspect important o constituie touchscreenul. LCD‐ul montat pe placa are 480x272 pixeli. Androidul foloseste coordonate Introducere absolute, dar driver‐ul de touchscreen atmel_tsadcc.c nu furnizeaza aceste aceste coordonate ci coordonate ce au o variatia mult mai mare Hardware (350‐3900 pentru X, 320‐3750 pentru Y )  Touchscreenul resistive are nevoie de calibrare. Mediul de  tslib‐1.4 este folosit dupa rularea ts_calibrate se genereaza un file pe dezvoltare nume pointercal. Acesta contine 7 numere, coeficienti de calibrare. Cu aceste 7 parametri (a, b, c, d, e, f si s) se face o transformare liniara Portare din coordonatele device‐ului (Xd, Yd) in coordonatele ecranului (Xs, Ys) Linux folosind ecuatiile: Portare Android s*Xs = a*Xd + b*Yd + c s * Xs = a * Xd + b * Yd + c  s*Ys = d*Xd + e*Yd + f s * Ys = d * Xd + e * Yd + f  TODO Xs, Ys: coordonatele LCD (coordonate absolute) Xd, Yd: coordonatele touch screen in Android Aceste modificari sunt implementate in: Frameworks/base/services/java/com/android/server/InputDevice.java
  16. 16. Compilarea Android Root Filesystem: Introducere Make Hardware Dupa ~2ore de compilare pe un calculator cu processor Intel  Mediul de  Dual Core, obtinem 3 directori: dezvoltare /data ‐ initial este goala. Portare /system – Librariile si aplicatii compilate a sistemului.   Linux /root ‐ root file system (contine init, init.rc, etc). Va fi montat ʺ/“ Portare Android Copiere pe SD card formatat Ext3: #cp –r /root/* /media/disk TODO #cp –r /data/ /media/disk #cp –r /system/ /media/disk Secventa de initializare in uBoot: #setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p1 rw Init=/init rootfstype=ext3 noinitrd rootwait
  17. 17. Introducere Hardware Mediul de  dezvoltare De ce este potrivit Android  Portare pentru aplicatii industriale? Linux Portare Android TODO
  18. 18. Ceea ce este deja disponibil: Introducere •Linux 2.6 inglobat, suportata de toate mari companii existente Hardware pe piata embedded •Fiind open source este gratis  Mediul de  •Securitate avansata dezvoltare •Stabilitate, robustete •Fiabilitate dovedita pe termen lung  Portare •100% customizabil Linux •Maşina virtuală Dalvik si limbajul de programare Java  Portare •Multimea serviciilor si bibliotecilor in Android Android •Interfata grafica •Comunitatea activa, support TODO
  19. 19. Ce lipseşte pentru a face o platforma adecvata pentru Introducere aplicații industriale? (TODO List) Hardware •Real‐time kernel: support pentru real‐time (Xenomai, RTAI) Mediul de  dezvoltare •Support pentru interfete industriale: CAN/CANOpen: SocketCAN, CanFestival, Ethernet industrial, Portare ProfiBus, ModBus. Linux •Framework pentru senzori si actuatori, pentru monitorizare,   Portare prelucrare si analiza semnalelor. Android TODO
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×