Home
piattaforma di supporto open source per android su architettura arm11
Contents
1. Start Address End Address Device Area 0x0000 0000 0x0000 3FFF i MX31 Secure ROM 16KByte 0x0000 4000 0x0040 3FFF Reserved 0x0040 4000 0x0040 7FFF i MX31 ROM Interna 16KByte 0x0040 8000 Ox1FFF BFFF Reserved Ox1FFF C000 OxlFFF FFFF i MX31 RAM Interna 16KByte 0x2000 0000 Ox2FFF FFFF Reserved 0x3000 0000 Ox7FFF FFFF i MX31 Registri dei moduli interni 0x8000 0000 Ox83FF FFFF DDR SDRAM 64MByte CSDO 0x8400 0000 Ox8FFF FFFF Reserved CSDO 0x9000 0000 Ox9FFF FFFF Reserved CSD1 OxAOO0 0000 OxAOFF FFFF NOR Flash Memory 16MByte CSO OxA100 0000 OxA7FF FFFF Reserved CSO OxA800 0000 OxAFFF FFFF Regione Extended Bus 128MByte CS1 0xB000 0000 OxB1FF FFFF Reserved CS2 0xB200 0000 OxB3FF FFFF Ethernet Controller LAN9118 CS3 OxB400 0000 OxB5FF FFFF Regione Extended Bus 32MByte CS4 0xB600 0000 OxB7FF FFFF Reserved CS5 0xB800 0000 0xB800 OFFF NAND Flash Memory 187 Memory Map Start Address End Address Device Area 0xB800 1000 0xB800 4FFF i MX31 Registri dei moduli interni 0xB800 5000 OxBBFF FFFF Reserved OxBCOO 0000 OxBFFF FFFF Regione Compact Flash 0xC000 0000 OxFFFF FFFF Reserved 188 Elenco degli acronimi ADC Asynchronous Display Controller ADT Android Development Tools AHB Advanced High performance Bus Tipologia di Bus sviluppata da ARM Ltd parte dello standard AMBA AI
2. 0 0 0 66 DLS Tasti e LED sso able Dale aa a 66 DL SB 4 el Ra a Deed ue Dae Sp eh ed 66 D I JOAUTO srl oL d E e e 66 biz I bootloader i e Ege de Rowe V A uc e RC IE 67 5 2 1 Canale di comunicazioneecontrolo 67 5 2 2 Contatti di configurazione 67 5 2 3 Comandi fondamentali 68 5 3 Compatibilit tra revisioni successive del SoM Armadillo 500 70 6 Linux su piattaforma Freescale i MX31L 71 6 1 Il progetto ARM Linux eee 73 6 1 1 Mailing list e gestione delle Patch 73 6 1 2 Organizzazione del codice di supporto per l architet MUIR ARM Lee tale sie eg ola Spe 76 6 1 3 Fasi di boot di Linux su architettura ARM 77 6 1 4 Metodi di debug iii n 85 GO L T Early debug me ose m RC ER een 86 6 1 4 2 Normal Debus 4 pete Rte rtt 87 6 1 4 3 Driver Debug de dn doge e SIS 88 6 2 Ambiente di sviluppo la macchina host 89 6 2 1 Posizione del progetto 90 6 2 2 IL kernel 2 4 a e mcn ek Ge 91 6 2 3 Rudimenti di Git per la creazione di patch 92 6 2 4 Cross Platform Toolchain 94 6 2 5 Configurare e compilare il kernel 98 6 2 6 Creare un root filesystem valido 100 INDICE 6 2 7 La connessione con la macchina target 103 6 2 8 Scaricare il kernel nella board Armadillo 500 105 6 3 Fasi del porting 400 ALTRI 106 63 1 Early S
3. 176 8 Risultati 179 8 1 Piattaforma di supporto per la board Atmark Armadillo 500 Del kernel LINUX sae uo eed o en 179 8 2 Android nella board Atmark Armadillo 500 181 9 Conclusioni 185 A Memory Map 187 Elenco degli acronimi 189 Bibliografia 198 INDICE Introduzione In un mercato importante come quello dei dispositivi portatili notevo le la crescita dell offerta Open Source piattaforme Linux come Maemo Access QT extended ex Qtopia hanno raggiunto un elevato livello di ma turit potendo cos competere con le piattaforme proprietarie esistenti Ci che frena la diffusione delle piattaforme Open Source la mancanza di una spinta concreta da parte dei produttori di dispositivi i quali hanno privilegiato finora le pi note soluzioni proprietarie Android si inserisce in questo contesto con una marcia in pi nasce in seno alla Open Handset Alliance alleanza tra operatori mobili produttori hardware e compagnie software tra le maggiori al mondo capaci di for nire quella rete di sinergie necessaria per una rapida diffusione globale Android uno stack software Open Source completo per la gestione dei dispositivi portatili basato sul kernel Linux arricchito con nuove fun zionalit IPC e memory sharing fornisce le librerie necessarie per una user experience evoluta ed applicazioni chiave nell ambito mobile La struttura di questo lavoro di tesi prevede nel Capitolo 1 la contestua lizz
4. include lt mach hardware h gt include lt asm mach types h gt Kock ok ck ok ok ck ck ck ck ck ck ck ok ok 90 95 xxx 91 106 MX31 PIN FPSHIFT FPSHIFT MX31 PIN DRDYO DRDYO IOMUX MODE MX31 PIN LCSI IOMUX CONFIG GPIO ADV7125_PSAVE I2C2 MX31 PIN CSPI2 MOSI SCL MX31 PIN CSPI2 MISO SDA RTC over I2C define ARMADILLO5X0_RTC_GPIO IOMUX TO GPIO MX31 PIN SRXD4 static struct i2c board info armadillo5xO i2c rtc I2C BOARD INFO s35390a 0x30 t GPIO BUTTONS ck okok ok GRR RR RR k k k 324 329 xxx 335 341 static struct platform device devices __initdata amp armadillobxO smc911x device amp mxc i2c devicel amp armadillo5bxO button device Js HORROR RR RK 360 365 ss 372 389 set NAND page size to 2k if not configured via boot mode pins raw writel raw readl MXC CCM RCSR 1 lt lt 30 MXC CCM RCSR RIC Get RTC IRQ and register the chip if gpio request ARMADILLO5XO RIC GPIO rtc 0 if gpio direction input ARMADILLO5X0_RTC_GPIO 0 145 Linux su piattaforma Freescale i MX31L armadillo5x0_i2c_rtc irq gpio_to_irq ARMADILLO5X0_RTC_GPIO else gpio_free ARMADILLO5X0_RTC_GPIO if armadillo5x0_i2c_rtc irq 0 pr warning armadillo5xO init failed_to_get_RTIC_IRO n i2c_register_board_info
5. Configurazione del kernel Il driver physmap c gi abilitato per l in serimento statico nell immagine del kernel con il supporto alle partizio ni Ci che manca il driver specifico per chip Intel selezionabile nel menu di configurazione con Device Drivers gt Memory Technology Device MTD support gt RAM ROM Flash chip drivers x Support for Intel Sharp flash chips Utilizzare il driver physmap c Compilato e scaricato nella board Ar madillo 500 il kernel con le modifiche apportate il driver physmap c attraverso i comandi specifici della flash Intel provveder a creare la struttura di block devices cosi organizzata Memory Technology Device Flash dev mtd0 nor bootloader rw dev mtd0ro nor bootloader ro dev mtdl nor kernel rw dev mtdlro nor kernel ro dev mtd2 nor userland rw dev mtd2ro nor userland ro dev mtd3 nor config rw dev mtd3ro nor config ro 6 3 7 Modulo flash NAND In riferimento alla sezione 5 1 6 nello strato inferiore della board Arma dillo 500 montato un chip di memoria flash di tipo NAND da 256 MByte 138 6 3 Fasi del porting organizzato in pagine da 2 KByte ciascuna e connesso al Controller NAND Flash dell Application Processor I chip flash NAND permettono l accesso ai dati solamente una pagina alla volta lettura scrittura e cancellazione Per questo non possono essere mappati direttamente in memoria e devono essere connes
6. IPC Inter Process Communication IPU Image Processing Unit IrDA Infrared Data Association ISA Instruction Set Architecture Pate dell architettura di un elaboratore specifica il set di istruzioni ISV Independent Software Vendors LSU Load Store Unit Unita di esecuzione interna al microprocessore specializzata nelle operazioni di accesso alla memoria MCU Microcontroller Unit Insieme di moduli interni all Application Processor i MX31L MIR Medium Infrared Nelle connessioni IrDA 1 1 identifica le velocita di trasferimento 0 576 Mbit s e 1 152 Mbit s MMU Memory Management Unit MPEG Moving Picture Experts Group Organismo di standardizzazione di codec audio video OEM Original Equipment Manufacturer Societa che acquistano prodotti da altre societa e li rivendono come parti di un prodotto proprio OSI Open Source Initiative 191 ELENCO DEGLI ACRONIMI OTG On The Go Supplemento allo standard USB 2 0 definisce l infrastruttura hardware un nuovo connettore e software algoritmi di segnalazione che permettono al controller USB OTG di agire come Host controller oppure Device controller nella connessione corrente a seconda del dispositivo ad esso collegato PCI Peripheral Component Interconnect Standard di collegamento per device interni PCMCIA Personal Computer Memory Card International Association PF Post Filter PHY Physical layer Abbreviazione di livello fisico dispositivi o moduli in gra
7. 183 Risultati Manager e Window Manager ed include i server di gestione dei flussi audio e video SurfaceFlinger ed AudioFlinger android process acore processo che contiene l Activity Launcher la Home Activity Contacts e le altre activity di base Android com android settings processo lanciato durante l esecuzio ne dell utility Settings nel menu Home android process media processo che contiene il server Media Pro vider gestore delle risorse di sistema Installazione on board Attraverso la piattaforma GNU Linux creata per i test nel capitolo 6 stato possibile installare la piattaforma android nel dispositivo flash NAND dev mtdblock4 Il risultato un miglioramento visibile dei tempi di risposta dovuto al l aumento della velocita di trasferimento tra root filesystem e la memo ria centrale velocit di caricamento delle librerie a collegamento dina mico anche se il sistema ancora non si presenta completamente fluido nell esecuzione 184 Capitolo 9 Conclusioni Questo lavoro di tesi presenta nel dettaglio il know how necessario per generare ed installare una piattaforma software dal kernel all ecosistema user space in un sistema embedded basato su architettura ARM11 La board Atmark Armadillo 500 e la piattaforma software Android sono stati dei buoni esempi di come poter applicare queste conoscenze nel caso specifico dimostrando come di volta in volta i problemi riscontrabili e come possano essere
8. xADV7125 PSAVE GPIO BUTTONS static struct gpio_keys_button armadillo5x0_buttons code KEY ENTER 28 gpio JOMUX TO GPIO MX31 PIN SCLKO active_low 1 desc menu wakeup 1 s code KEY BACK 158 gpio JOMUX TO GPIO MX31 PIN SRSTO active_low 1 desc back wakeup 1 142 6 3 Fasi del porting static struct gpio_keys_platform_data armadillo5x0_button_data buttons armadillo5x0_buttons nbuttons ARRAY SIZE armadillo5x0_ buttons ds static struct platform_device armadillo5x0_button_device name gpio keys id num_resources 0 dev platform data amp armadillo5x0_button_data NAND Flash ok ok ok ck ck ok ck ck ck k Gk ck ck ok k 291 296 sx 324 330 static struct platform device devices __initdata amp armadillobxO smc911x device amp armadillo5x0_button_device Configurazione del kernel Innanzitutto deve essere abilitato il sottosi stema di input con Device Drivers Input device support lt gt Generic input layer needed for keyboard mouse Poi nel sottomenu Keyboards NEW ildriver gpio_keys c abilitato dalla voce GPIO Buttons 6 3 9 RTC In riferimento alla sezione 5 1 7 al secondo controller C dell Applica tion Processor
9. 7 1 1 Installare repo Android utilizza Git come software di version management per ogni com ponente del progetto ogni modulo Android possiede un proprio reposi tory git autonomo repo uno script capace di automatizzare le opera Inttp source android com download 155 Android su piattaforma Freescale i MX31L zioni che altrimenti dovrebbero essere eseguite in serie per ogni singolo repository unificandole in un singolo comando globale curl http android git kernel org repo bin repo chmod a x bin repo Si faccia riferimento al documento 39 per una guida completa dei co mandi dello script 7 1 2 Download dei sorgenti Si procede ora definendo la directory nel quale sar creato il repository ed all inizializzazione dello stesso mkdir SPRJROOT android sources cd SPRJROOT android sources repo init u git android git kernel org platform manifest git Se si vuole eseguire il checkout di un branch diverso da master deve essere specificato il parametro b branchName ad esempio repo init u git android git kernel org platform manifest git b cupcake Al termine delle operazioni di inizializzazione del repository verr richie sto di inserire il nome dello sviluppatore ed un indirizzo gmail valido che verranno utilizzati nel caso si volessero sottoporre a review e pubblicare le eventuali modifiche apportate al codice sorgente 38 Sincronizzazione del repository locale con la versi
10. Register SDHC mxc_register_device amp mxcsdhc_device0 amp sdhc_pdata Register FB mxc_register_device amp mx3_ipu amp mx3_ipu_data mxc_register_device amp mx3_fb amp mx3fb_pdata t static void init armadillo5xO timer init void Utilizzare il driver mx3fb c Compilato e scaricato nella board Arma dillo 500 il kernel con le modifiche apportate il driver mx3fb c gi stato abilitato dalla configurazione di piattaforma per l inserimento stati co nell immagine del kernel con la seguente riga di parametri del kernel possibile abilitare nella fase di boot l output video hermit gt setenv video mx3fb CRT VGA bpp 16 console ttymxc0 root fstype nfs root dev nfs nfsroot 192 168 0 2 media dati android rootfs ip 192 168 0 10 192 168 0 2 192 168 0 2 255 255 255 0 armadillo eth0 off Il parametro video definisce quale driver video abilitare con che moda lit e la profondit di colore da adottare 131 Linux su piattaforma Freescale i MX31L Collegato uno schermo al connettore D Sub15 possibile eseguire dei test di funzionalit utilizzando le utility compilate appositamente vedi la sezione 6 2 6 che sono target fbtest Mostra a schermo una serie di test per verificare la posizione del frame la geometria ed i colori visualizzati targets fbv nomefile Visualizza a schermo l immagine con nome nomefile Problemi di resa dei colori delle immagini visualizzate
11. UNIVERSIT DI PADOVA FACOLT DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA TESI DI LAUREA PIATTAFORMA DI SUPPORTO OPEN SOURCE PER ANDROID SU ARCHITETTURA ARMI11 Relatore Chiar mo Prof Lorenzo Vangelista Laureando Alberto Panizzo Anno Accademico 2008 2009 A Elena Giancarlo Marco e tutti ma proprio Tutti che mi sono accanto Indice Indice Introduzione 1 Sistemi Embedded e Mobile Devices 1 1 Mobile DEVICES soro s oea kei n a 1 2 Sistemi Operativi per Dispositivi Mobili 1 2 1 Architettura di sistema per i moderni Mobile OS 1 3 Il mercato dei Sistemi Operativi per dispositivi mobili 1 4 Ruolo dell Open source llle 2 Android 2 1 Licenza della piattaforma LL 2 2 Architettura e eov Ge A ei a E Ces EX 2 21 Rer eU EVEL qne pce no m uet ee kn e che tes 2 2 2 Framework Libraries 4 2 2 3 Application Framework 2 2 4 I file Manifest ve SAX X ex a 2 2 5 Attivit e componenti affini 2 2 6 Ciclo di vita dei componenti 2 2 7 Processi e ciclo di vita dei componenti Dio VAM OI SII 8 ose pd ets ues gem aede aet See Roc o de 2 3 1 Personalizzare le versione di Android eseguita dall e nititicor DTE INDICE 2 4 Android e il Business 3 Microarchitettura ARM11 3 1 Architettura ARMv6 css 3 2 Innovazioni nella microarchitettura ARMI1 3
12. Visualizza la versione del kernel nella console con printk linux banner init version c A questo punto ancora non attiva nessuna console i messaggi vengono scritti da printk in un buffer di memoria e solo quando verr caricata la console di sistema i messaggi potranno essere letti dall utente Configura l hardware specifico come memorie dispositivi di I O etc con setup arch amp command line Il parametro command line la tagged list passata dal boot loader che contiene i parametri del kernel arch arm kernel setup c In setup arch amp command line Vengono inizializzati i processori della board con setup processor che salva le informazioni in cache inizializza le informazioni specifiche SMP e inizializza gli stack specifici per cpu arch arm kernel setup c cpu proc init una macro dipendente dallarchitettura che per l architettura CPU V6 punta a cpu v6 proc init in arch arm mm proc v6 S che non fa nulla La chiamata a setup machine machine arch type ritorna la struttura machine desc propria della macchina individua ta definita nel file arch arm include asm mach arch h ed inizializzata nel sorgente specifico nella cartella arch arm mach mx3 82 6 1 Il progetto ARM Linux Localizza e converte il formato se necessario della lista dei parametri del kernel Esegue mdesc gt fixup per terminare operazioni pendenti di inizializzazione dell hardware dipendenti dalla piattaforma
13. git reset hard android done 7 2 2 Avanzare la piattaforma i MX Ora l obbiettivo quello di aggiornare le sezioni del kernel che formano il codice di supporto per tutte le board che montano processori della famiglia i MX Tali sezioni del kernel risiedono principalmente nelle directory arch arm plat mxc e arch arm mach mx3 alle quali vanno a sommar si i driver di periferica posti in modo consistente all interno del kernel tree Ottenere la serie di patch corretta Per ottenere la serie di patch da applicare al branch locale androidArmadillo500 creato utile installare l utility grafica Ogit apt get install qgit Se si esegue ggit all interno di un repository Git questa analizzera le informazioni contenute nel relativo database index e permetter di manipolare graficamente il repository Le funzioni Filter by tree e Format patch sono utili allo scopo abi litando la visualizzazione laterale dell albero delle directory possibile 162 7 2 Ottenere un kernel valido selezionare uno o pi elementi e cliccando sull icona Filter by tree ver ranno filtrate le patch visualizzate nella finestra centrale alle sole che nelle loro modifiche toccano gli elementi selezionati Selezionando poi un range di patch possibile esportarle con Format patch in una directory selezionata Allora le operazioni da eseguire per ottenere il set di patch di avanzamento sono 1 Nel repository locale k
14. E per ricercare un rapporto migliore tra queste misure che sono nate le categorie Netbook e Smartbook il primo un notebook pi portabile di notevole successo mentre il secondo uno smartphone pi produttivo Una costante dell evoluzione dei dispositivi mobili la spinta verso lo sta tus always connected per il quale il dispositivo sempre connesso o ha sempre la possibilit di connettersi alla rete globale attraverso tecno logie di rete di qualit sempre maggiore Questa capacit rende i dispo sitivi mobili fonti di informazioni preziose per l utente rende pervasivo il concetto di presenza permette forme evolute di social networking e con nettivit ma permette inoltre ad aziende che operano nella rete globale di aumentare il bacino d utenza per i propri servizi 1 2 Sistemi Operativi per Dispositivi Mobili Alcuni fattori che caratterizzano i dispositivi mobili hanno costituito e costituiscono ancora vincoli importanti nello sviluppo dell intero stack software che li anima le dimensioni ridotte ed il ridotto budget energe tico dei dispositivi hand held limitano le risorse computazionali a dispo sizione capacit di calcolo dimensione della memoria e ridefiniscono le modalit di I O Per le prime generazioni di device hand held questi vincoli erano cosi stringenti che il software di gestione del dispositivo doveva essere svi 7 Sistemi Embedded e Mobile Devices luppato ad hoc dalle aziende produttrici s
15. Elimino la porzione dell oggetto che non andr a formare la stringa di commit sed s Subject N PATCHN ARM 1 subjects txt gt 1 subjl txt sed s Subject N PATCHN 1 subjl txt gt 1 subj txt Ricerca di ogni singola patch nelle stringhe di commit riguardanti il sottoalbero di prune indicato count 0 while read line do git log 2 grep line count count 1 echo count done lt 1 subj txt Rimuovo i file temporanei rm f 1 subj txt 1 subjl txt 1 subjects txt Salvato nella directory bin e configurato per l esecuzione chmod x bin testPatches sh pu essere utilizzato come segue testPatches sh androidPatches Le patch relative alle stringhe Subject stampate devono essere eliminate dalla cartella androidPatches Applicare le patch Innanzitutto bene creare un nuovo branch locale significativo per l obbiettivo del presente repository git branch androidArmadillo500 La sequenza di patch viene applicata con il comando cat androidPatches git am k 3 git am applica ed esegue il commit di ogni singola mail ricevuta nello standard in I file prodotti da git format patch sono proprio formattati come mail con campi From Subject Date Signed off dai quali git am preleva i dati per eseguire la relativa commit locale Le opzioni k e 3 indicano rispettivamente a git am di non tentare di ripulire la stringa Subject da porzioni inutili Re PAT
16. Figura 8 1 Profiling della memoria durante il processo di boot di Android 182 8 2 Android nella board Atmark Armadillo 500 Suddivisione della memoria occupata per processo 100 80 system server Bl android process acore 60 BM android process media Dcom android settings Ill zygote ll system bin mediaserver 40 BM altri 20 0 RSS Figura 8 2 Suddivisione Percentuale della memoria occupata per processo su un totale di circa 114 MB allocati un valore circa pari al doppio della Memoria di sistema disponibile Ogni processo allora costretto al caricamento del minimo sottoinsieme di li brerie possibile per poter eseguire diminuendo notevolmente la capacita di caching del codice in memoria centrale In questo modo la configura zione di test utilizzata per Android amplifica ancor pi il problema dato che il throughput di trasferimento via rete il peggiore tra quelli valutati In figura 8 2 mostrata la richiesta di memoria per ogni singolo processo in percentuale sulla memoria virtuale utilizzata zygote processo padre di ogni applicazione Android Contiene un istan za della Virtual Machine Dalvik ereditata in copia dai processi figli Da solo richiede uno spazio di memoria virtuale pari a circa 18 MB dimensione minima quindi di ogni suo processo figlio system server il processo padre di tutto il layer applicativo Android contiene tutti i server trattati nella sezione 2 2 3 Tra cui Activity
17. I test effet tuati hanno evidenziato un problema nella resa dei colori di determinati pixel sullo schermo L analisi a confronto del codice sorgente del dri ver mx3fb c e del corrispondente driver mxcfb c presente nella versione Atmark 2 6 26 del kernel ha evidenziato la seguente differenza risolutiva Listing 6 19 Adattamento della forma d onda del clock in ingresso al modulo ADV7125 nel driver mx3fb c Subject PATCH Armadillo 500 pixel writing timing adaptation Signed off by Alberto Panizzo maramaopercheseimortoGQ gmail com drivers video mx3fb c 12 1 files changed 11 insertions 1 deletions diff git a drivers video mx3fb c b drivers video mx3fb c index 054ef29 e4a3115 100644 a drivers video mx3fb c b drivers video mx3fb c Qa 33 6 33 7 include asm io h include lt asm uaccess h gt include lt asm mach types h gt define MX3FB NAME mx3 sdc fb 515 7 516 16 G9 static int sdc init panel struct mx3fb data mx3fb enum ipu panel panel fewer Subtract 1 extra from DISP3 IF CLK DOWN WR based on timing debug DISP3 IF CLK UP WR is O mx3fb write reg mx3fb div 8 1 22 div DI DISP3 TIME CONF Due to timing constraints in pixel writing on ADV7125 Video DAC if machine _is_armadillo5x0 old_conf div 132 6 3 Fasi del porting ttt div gt gt 4 1 lt lt 24 DISP3
18. Nel capitolo 7 stata generata una versione di Android adatta alla board Atmark Armadillo 500 Se da un lato si sono risolti i problemi di funzionalit della piattaforma il boot avviene correttamente presentando a schermo la Home Activity con la possibilit di navigare nel menu e nelle applicazioni installate ne colpisce la notevole lentezza di risposta Certamente la configurazione di test utilizzata root filesystem montato via nfs non aiuta la velocit di caricamento delle librerie ed applicazioni allungando i tempi di boot ma ci che sovraccarica il sistema la richie sta notevole di memoria stato sviluppato un semplice script di raccolta informazioni a riguardo basato sul controllo periodico ogni 2 secondi delle informazioni contenute in proc meminfo Il risultato presentato nel grafico in figura 8 1 Si pu ben notare come a piattaforma caricata completamente la quan tit di memoria libera paricamente nulla e la domanda di memoria della piattaforma Android Totale della memoria virtuale allocata si attesta ad 181 Risultati Memory profiling kB 120000 100000 L4 8 8 8 8 a amp d d g 8 8 SS ee eee eee ees 80000 F T Total Free Cached VmallocUsed 9 60000 F 40000 20000 P diia E NL di i TT Pp n 20 30 80 tempo 2s A AV i 40 50 60 70 90 100
19. PIN GPIOI 0 end JOMUX TO IRQ MX31 PIN GPIOI1 0 flags IORESOURCE IRQ IORESOURCE IRQ LOWLEVEL ha Js static struct smsc911x platform config smsc911x info flags SMSCO9IIX USE 16BIT irq polarity SMSCO9IIX IRQ POLARITY ACTIVE LOW irq type SMSC911X IRQ TYPE PUSH PULL js static struct platform device armadillobxO smc911x device name smsc911x id num_resources ARRAY SIZE armadillo5x0_smc911x resources resource armadillobxO smc911x resources dev platform data amp smsc91lx info 118 6 3 Fasi del porting UART device data oko obe x de ke dee eee 51 56 sx 89 98 flags IMXUART HAVE RISCTS static struct platform device devices __initdata amp armadillobxO smc911x device J Perform board specific initializations ok k k ck ck k ck ck ck ck ck ck k k k mas DO 67 xxx 101 114 mxc iomux setup multiple pins armadillo5xO pins ARRAY SIZE armadillo5xO pins armadillo5xO platform add devices devices ARRAY SIZE devices Register UART mxoe register device amp mxoc uart deviceO amp uart pdata mxoe register device amp mxoc uart devicel amp uart_pdata SMSC9118 IRQ pin gpio_direction_input MX31_PIN_GPIO1_0 static void X init armadillo5xO timer init void Abilitare la compilazione del driver di rete smsc911x c ed impo stazione del root filesystem d
20. quei bug fix o nuove funzionalit date dalle versioni successive del main line kernel nel proprio branch se non con gli stessi costosi processi di merge inverso risultando cos in un prodotto potenzialmente incompleto e poco mantenibile 28 Questo il caso del branch Atmark del kernel Linux a supporto della board di sviluppo Armadillo 5002 Atmark mette a disposizione due ver sioni del kernel 2 6 18 e 2 6 26 quest ultima pubblicata solo di recente non presente all inizio di questo lavoro di tesi basate sul branch Free scale a supporto del core i MX31 con modifiche ed estensioni nei driver di periferica Tenendo conto che la BSP Freescale non mai stata inserita nel reposito ry mainline perch non ritenuta di qualit sufficiente e che nella versione 2 6 27 stato iniziato un restyling completo del codice a supporto delle board ARM il codice sviluppato da Atmark ad oggi diventato obsoleto Atmark directory http download atmark techno com armadillo 500 SLinux BSP for Freescale i MX31ADS allindirizzo http www freescale com webapp sps site overview jsp nodeId 0127260061033202A7 72 6 1 Il progetto ARM Linux ed il supporto ai nuovi kernel per questa board decaduto Uno degli obbiettivi di questo lavoro di tesi sviluppare il codice di supporto alla board Atmark Armadillo 500 in seno alla comunit che mantiene la platform per i processori Freescale i MX famiglia MXC via necessaria per l inserim
21. salvato nel registro r4 Questo indirizzo specifico per ogni piattaforma definito nella va riabile di sistema zreladdr Per la piattaforma i MX questa variabile definita nel file arch arm mach mx3 Makefile boot zreladdr y 0x80008000 Codice kernel specifico del processore ARM Dopo la decompressione del kernel la routine eseguita dipendente dal larchitettura Nel caso di processori ARM all indirizzo zreladdr pre 80 6 1 Il progetto ARM Linux sente la procedura stext dal file arch arm kernel head S che provve de a Passare alla modalit Supervisore e disabilitare gli interrupt Individua il tipo di processore attraverso la pro cedura lookup processor type definita in arch arm kernel head common S Questa ritorner un puntatore ad una struttura proc info list definita nel file arch arm include asm procinfo h che contie ne puntatori a routine specifiche per l architettura individuata arch arm mm proc v6 S v6 proc info Individua il tipo di macchina attraverso lid salvato con la procedura lookup machine type definita nel file arch arm kernel head common S Questa ritorner un puntatore ad una strut tura di tipo machine desc definita nel file arch arm include asm mach arch h ed inizializzata nel sorgente specifico nella cartella arch arm mach mx3 Crea la page table attraverso la procedura create page tables abbastanza grande per mappare almeno il codice del kernel Salta a
22. 4 10 Timers GPT ed EPIT External Memory EMI ARM BP I F Per DMA Burst DMA CRC BP DMA unit Int unit unit unit Not Connected functional units bus Connected AIPS peripheral bus Figura 4 3 Connessioni del modulo SDMA Platform MUX Il modulo SDMA costituito da un processore RISC completo connesso al core ARM ed al bus delle periferiche come in figura 4 3 Sono disponibili 32 canali DMA virtuali con scheduling preemptive priority based a due livelli di priorit La dimensione del singolo burst di trasferimento programmabile fino a 16 word ed presente un meccanismo di timeout con error firing attraverso interrupt se non possibile concludere il burst nel tempo definito 4 10 Timers GPT ed EPIT Gli Application Processors i MX31 e i MX31L includono due tipologie di timer 53 L Application Processor Freescale i MX31L General Purpouse Timer GPT Contatore a 32bit con clock source selection tra cui una sorgente ester na programmabile per essere attivo anche in low power mode Sono presenti tre registri compare associati ognuno ad un pin di output pro grammabile l evento di match pu invertire lo stato del pin portarlo al livello alto o basso oppure generare un impulso e due segnali di input capture con trigger capaci di far memorizzare lo stato del contatore in due registri appositi Le modalit di funzionamento supportate sono Restart mode poss
23. FB flags Si voluto supportare i due standard di risoluzione VGA 640 x 480 60Hz e SVGA 800 x 600 56H2 per i quali sono stati definiti i seguenti parametri Foixa MHz Frow Hz Fframe Hz Pixel totali Righe totali per riga per frame VGA 25 175 31469 59 94 800 525 SVGA 33 33 35161 56 34 948 624 Le dimensioni dei margini e la lunghezza degli impulsi dei segnali VSYNC e HSYNC sono stati determinati in modo empirico testandone i risultati Modifiche al codice di supporto al file armadillo5x0 c Di seguito sono riportate le modifiche Listing 6 18 armadillo5x0 04ToFB patch ck ok ck ck ok ck ck ck ok ck ck ck ok k x 35 40 sas 35 42 include lt mach iomux mx3 h gt include lt mach board armadillo5x0 h gt include mach mmc h gt include mach ipu h include mach mx3fb h include devices h CETTE ode koe ke dese ele x 58 63 nn 60 139 MX31 PIN SD1 DATAO SDIl DATAO 129 Linux su piattaforma Freescale i MX31L t t t 4 4 MX31 PIN SD1 CLK SDIl CLK MX31 PIN SD1 CMD SDl CMD Framebuffer MX31 PIN LDO LDO MX31 PIN LD1 LDIl MX31 PIN LD2 LD2 MX31 PIN LD3 LD3 MX31 PIN LDA4 LD4 MX31 PIN LD5 LD5 MX31 PIN LD6 LD6 MX31 PIN LD7 LD7 MX31 PIN LD8 LD8 MX31 PIN LD9 LD9 MX31 PIN LD1O LD10 MX31 PIN LD11 LDI11 MX
24. IF CLK DOWN WR div gt gt 4 2 lt lt 14 DISP3_IF_CLK_UP_WR mx3fb write reg mx3fb old conf DI DISP3_TIME_CONF else mx3fb write reg mx3fb div 8 1 lt lt 22 div DI DISP3 TIME CONF DI settings old conf mx3fb read reg mx3fb DI DISP IF CONF amp Ox78FFFFFF 1 5 4 3 Il manuale dell Application Processor i MX31 33 Sezione 44 3 3 8 15 definisce il significato del registro DI DISP3 TIME CONF che regola la forma d onda del clock in uscita del terzo display proprio del control ler SDC DI DISP3 TIME CONF memorizza i tre valori dal bit meno significativo DISP3 IF CLK PER WR 11 0 Numero a 4 cifre decimali parte intera bit 11 4 parte decimale bit 3 0 Divide la frequenza del clock HSP_CLK per ottenere la fre quenza del segnale DISPB D3 CLK Il periodo di pixel quindi cos ottenuto tj 4 THSP_CLK DISP3 IF CLK PER WR DISP3 IF CLK UP WR 21 12 Numero a 2 cifre decimali parte intera bit 21 14 parte decimale bit 13 12 Indica la posizione del fronte di salita del segnale di clock DISPB D3 CLK Il fronte di salita si trover all istante 2 DISP3 IF CLK UP WR Tusp crk 2 DISP3 IF CLK DOWN WR 31 22 Numero a 2 cifre decimali parte intera bit 31 24 parte decimale bit 23 22 Indica la posizione del fronte di discesa del segnale di clock DISPB D3 CLK Il fronte di discesa si trover all istante 2 o DISP3_IF_CLK_DOWN WR s TH
25. LCD in massimo risparmio energetico Off Il sistema spento 19 Android Le transizioni da uno stato all altro dipendono dagli input dell utente e possono essere regolate via software ogni processo unit di esecuzio ne pu richiedere di bloccare il sistema in un particolare stato tramite l acquisizione di oggetti wake lock che possono essere principalmente di due tipi FULL wake lock il sistema verr bloccato nella modalit Full power fin ch ogni wake lock di questo tipo verr rilasciato PARTIAL wake lock la CPU forzata a rimanere attiva gli stati possi bili sono Full power e LCD Off viene utilizzato da applicazioni che non richiedono esplicitamente il display ed interpretano la volon t dell utente di eseguire in modo continuativo fino a nuovo ordine mp3 player Questo intervento non preclude altri meccanismi di gestione dell energia per questo fortemente consigliato il supporto al frequency scaling della CPU se presente per adattarne il consumo alle necessit computazionali dei due stati che la vogliono attiva RAM Console Log Device Android Debug Bridge Moduli di utilit diagnostica RAM Console permette di salvare i messaggi di log del kernel in un buffer in memoria Logger implementa un sistema di logging unificato per tutte le entit user space al quale pu connettersi il modulo RAM Console Android Debug Bridge ADB implementa un canale di comunicazion
26. SDC e ADC i canali di comunicazione con l unit IC per i dati necessari ai va ri livelli di processing ed infine i canali di comunicazione con l u nit PF per interventi nelle operazioni di post processing per la compressione video MPEG 60 4 19 Interfaccia Audio 4 19 Interfaccia Audio Il sottosistema audio degli Application Processor i MX31 e i MX31L costituito da due moduli di interfaccia per la connessione a processo ri audio esterni gli standard di collegamento sono Synchronous Serial Interface SSI o Inter IC Sound 5 connessi al bus interno attraver so un modulo di routing dinamico AUDMUX E supportato lo standard AC 97 61 L Application Processor Freescale i MX31L 62 Capitolo 5 Atmark Armadillo 500 Prodotta dalla ditta Giapponese Atmark Techno la Board Armadillo 500 pu essere considerata una buona piattaforma di sviluppo per sistemi embedded multimediali su architettura ARM11 CON12 MIC IN CON13 HP OUT CON3 USB CON18 Power 060000000000000000009 00000000000000000000 Figura 5 1 La board Atmark Armadillo 500 Ihttp www atmark techno com 63 Atmark Armadillo 500 In questo capitolo verr presentato un estratto utile della documenta zione disponibile nel sito Atmark 23 tradotta dal giapponese grazie al servizio Google Translate Oltre a ci che qui presentato nel proseguo del documento si far rife rimento al materia
27. adeguamenti ad innovazioni tecnologiche cor renti La microarchitettura ARM11 la prima implementazione del set di istru zioni ARMv6 E stata sviluppata seguendo le finalit e gli obbiettivi dell architettura implementata il target operativo quello dei dispositivi embedded ed stata posta attenzione particolare alla riduzione del consumo di potenza In questo capitolo oltre ad una breve descrizione dell evoluzione e ca ratteristiche innovative dell architettura ISA ARMv6 verranno presentati i maggiori dettagli implementativi che caratterizzano la microarchitettu ra ARM11 ed infine verr presentato il Core ARM1136JF S modulo di elaborazione posto all interno dell Application Processor presente nella board di sviluppo utilizzata 39 Microarchitettura ARM11 Per maggiori informazioni si rimanda ai documenti 25 27 45 3 1 Architettura ARMv6 Evoluzione delle architetture ISA ARM Il rapporto performance potenza dissipata e stato uno dei fattori di mag gior interesse nello sviluppo delle architetture ARM fin dalle prime ver sioni Per questo nel tempo stata data maggiore importanza alle tecni che di ottimizzazione migliorando l efficienza di utilizzo della memoria il throughput di trasferimento dati con la stessa ottenendo maggiori per formance nelle operazioni numeriche ed accelerando compiti ricorrenti Di seguito sono presentate le maggiori innovazioni portate dalle prece denti architettur
28. caricamento delle istruzioni E implementata inoltre la tecnica di branch folding per la quale se il risul tato della predizione e che il salto non viene eseguito allora l istruzione di branch viene eliminata dalla pipeline folded risparmiando cosi cicli macchina La somma di queste tecniche d 185 di branch previsti correttamen te con un risparmio di circa cinque cicli macchina nel caso di branch folding Waiting time di accesso alla memoria Leggere e scrivere nella cache in caso di cache miss risulterebbe in uno stallo della pipeline pari al tempo necessario ad accedere alla memoria principale se il percorso di esecuzione lineare Per ridurre questo ritardo l architettura ARM11 prevede due percorsi di esecuzione per istruzioni aritmetiche logiche ed istruzioni di lettura scrittura in memoria ed implementa tre tecniche per sfruttare il paralle lismo creato non blocking hit under miss ed out of order completition Se un istruzione di lettura scrittura dati provoca un cache miss il da to non presente nella cache grazie ai percorsi differenti seguiti vedi la figura 3 1 questa viene parcheggiata in attesa che la lettura nella memoria principale sia terminata non fermando il flusso di esecuzione della pipeline non blocking delle istruzioni non dipendenti da quella in attesa Il flusso di queste istruzioni pu continuare anche fino al comple tamento out of order completition Il flusso della pipeline non si bl
29. che altre applicazioni possono riutilizzare o sosti tuire per abbattere i tempi di sviluppo ed evolvere le funzionalit presenti liberamente Questo capitolo si basa su documentazione ricavata dagli eventi Google I O 5 16 ed altre informazioni ricavate nella rete 2 1 Licenza della piattaforma La licenza di riferimento del progetto open source Android Apache 2 0 licenza free software approvata dalla comunit Open Source Initiative http www openhandsetalliance com 15 Android OSI Come una qualsiasi licenza free software la licenza Apache garantisce agli utilizzatori del software la liberta di utilizzarlo distribuirlo modifi carlo e distribuirne prodotti derivati Apache 2 0 per non copyleft non esprime obblighi rispetto al regime giuridico dei prodotti derivati i quali al limite possono essere distribuiti con licenza proprietaria E imposto per l obbligo di citazione del lavoro originale Ci che ha spinto Google ad utilizzare questa tipologia di licenza proprio la libert rispetto alla forma di licenza dei lavori derivati Per sua natura Android una piattaforma espandibile e personalizzabile aziende pro duttrici di dispositivi mobili possono si contribuirne allo sviluppo ma in questo modo possono anche inserire o modificare componenti User In terface senza dover necessariamente rilasciare il codice sorgente con licenza open source 2 2 Architettura Android si present
30. connesso un chip Seiko Instruments S 35390A con fun zionalit di Real Time Clock Il chip SI S 35390A espone una sorgente di interrupt connessa al pin GPIO GPIO1 20 A supporto del controller J C interno all Application Processor stato svi luppato il driver in kernel drivers i2c busses i2c imx c gi abilita to alla compilazione e per il quale verr registrato il device di piattaforma mxc i2c devicel mentre drivers rtc rtc s35390a c implementa le API RTC utilizzando il chip Seiko Instruments S 35390A 143 Linux su piattaforma Freescale i MX31L Parametri del driver i2c imx c La struttura che determina i possibili parametri del driver i2c imx c definita nel file include linux i2c h Listing 6 25 Estratto del file include linux i2c h 8 struct i2c_board_info template for device creation type chip type to initialize i2c client name flags to initialize i2c_client flags addr stored in i2c client addr QGplatform data stored in i2c client dev platform data archdata copied into i2c client dev archdata irq stored in i2c client irq struct i2c_board_info char type I2C NAME SIZE unsigned short flags unsigned short addr void platform data struct dev archdata archdata int irq is 8 This macro initializes essential fields of a struct i2c board info declaring what has been provided on a particular board Optional x fields such as associated irq or d
31. dati nelle configurazioni seguenti Data word lunghe 7 bit o 8 bit 1 o 2 bit di stop parit definita tra even odd oppure nessuna Baud rate programmabile fino ad un massimo di 1 875 Mbit s e 32 byte di buffer di trasmissione FIFO ed in ricezione buffer FIFO di 32 halfword con supporto auto baud e Supporto alla trasmissione infrarossi Infrared Data Association Ir DA 1 0 nelle modalit Serial Infrared Speed SIR 4 12 Interfaccia C E presente un controller per bus multiple master Philips Inter Integrated Circuit 72C Il bus a due fili uno di clock ed uno per dati bidirezionale la linea dati e di I O 7 C fornisce un metodo semplice per lo scambio di dati tra com ponenti della stessa board Sullo stesso bus possono essere connessi pi componenti ai quali viene assegnato un indirizzo differente che posso no agire tutti alternativamente come bus master Il controller presente supporta i protocolli di arbitration e collision detection delo standard 1 C La velocit di clock pu essere selezionata tra le 64 possibili fino ad arrivare 400Kbit al secondo 4 13 Interfaccia USB Il modulo USB comprende tre porte di collegamento USBH1 USBH2 e USBOTG delle quali USBH1 e USBOTG possono essere attive in modo esclusivo dato che condividono una parte importante dei segnali di inter faccia del modulo Tutte le porte sono USB 2 0 complaint implementan do lo standard Intel Enhanced Host Controller Interface EHCI 4
32. di intervento promessa alla comunit molti operatori del settore pensano ad Android come una piattaforma con grosse potenzialit di crescita 1 4 Ruolo dell Open source Ci che rende interessante il paradigma open source applicato ai Mobi le OS la possibilit di creare un luogo di incontro tra un ecosistema aziendale importante e comunit di liberi sviluppatori capace attraver so il resource sharing di velocizzare lo sviluppo ed il deployment della piattaforma Le velocit del mercato con le quali le aziende Independent Software Vendors ISV devono confrontarsi la quantit di nicchie locali del merca to globale da soddisfare e la notevole mole di lavoro necessaria per man tenere ed evolvere continuamente un intero stack software per mobile devices costituiscono fattori killer per piattaforme proprietarie 12 1 4 Ruolo dell Open source Solamente leader mondiali del settore hanno le capacit economiche ed eredit software tali da reggere la sfida anche se con qualche acciac co vedi le difficili interfacce Microsoft ed il lento sviluppo dell iPhoneOS mentre nuove societ o alleanze anche tra i pi grossi produttori di dispo sitivi non sarebbero in grado di mantenere il ritmo di sviluppo fra tutti Symbian OS nato dall alleanza tra i pi grossi vendors ora rilasciato con licenza open source Il software e pi ampiamente il paradigma open source permettono alle nuove piattaforme di competere nelle
33. di spazio occupato dal file eseguibile gestione della memoria e velocit d esecuzione Sicurezza Ogni applicazione in Android corrisponde ad un processo Linux che esegue in seno ad una propria istanza Dalvik privata Questo permette di garantire l isolamento della memoria a disposi http webkit org 5http www pv com products android index html 8http www androidguys com 2008 06 03 34 weeks of oha 10 2 23 Android zione della singola applicazione e di costruire politiche di gestione degli accessi sfruttando i concetti di utenti e gruppi Linux Gestione della Memoria La moltiplicazione di istanze JVM cos ottenu ta ha richiesto ottimizzazioni stringenti nella gestione della memoria rispetto alle JVM standard Per questo stato sviluppato un nuovo formato di file eseguibile dex Dalvik EXecutable capace di contene re pi definizioni di classi alla pari dei file jar che contengono pi file class riordinate in modo da eliminare la ripetizione di aree fun zionali e dati comuni ottenendo cos una riduzione di pi del 50 dello spazio occupato dai componenti di Android Core Libraries Application Framework in un formato eseguibile non compresso Prestazioni Sforzi sono stati fatti per migliorare le prestazioni dell in terprete attraverso ottimizzazioni in fase di installazione static lin king inlining di speciali metodi pruning di metodi vuoti e definendo un nuovo set di istruzioni pi
34. e la definizione locale degli indirizzi dei registri di configurazione presente nel file arch arm mach mx3 crm_regs h 35Dalla commit bd3fd62ecc99c709739cb969be76f44903a4043b mtd MXC NAND support for 2KiB page size flashes 139 Linux su piattaforma Freescale i MX31L Modifiche al codice di supporto Di seguito sono riportate le modifiche al file armadillo5x0 c Listing 6 22 armadillo5x0 06ToNAND patch 2 ok oe K ck ck ck ck ck ck ck ch ck k k kkk 23 28 cxx 23 29 include linux interrupt h include linux irq h include lt linux mtd physmap h gt include lt linux io h gt include lt mach hardware h gt include lt asm mach types h gt ok ok ok k k ok k k OK k k k k k k 38 45 suse 39 48 include mach mmc h gt include lt mach ipu h gt include mach mx3fb h include lt mach mxc_nand h gt include devices h include crm_regs h static int armadillo5x0_pins UARTI Kock k ck ck ok ck ck ck ok SK ck ck ko ok 88 93 c 91 104 Js fe NAND Flash 0 static struct mxc nand platform data armadillo5xO nand flash pdata width 1 hw_ecc 1 MID NOR Flash static struct mtd partition armadillo5x0_nor_flash_partitions Kock ok ck ck ok ok ck ck ok SK ck ck ok k 309 314 ss 320 331 Register NOR Flash mxc register device amp armadillo5xO nor flash amp armad
35. e39866e 100644 terface come BDI3000 possibile avere il controllo completo del processore utilizzando l interfaccia Jtag I metodi di debug hardware non verranno trattati in questo documento 86 6 1 Il progetto ARM Linux a kernel printk c b kernel printk c 44 6 44 10 void asmlinkage attribute weak early printk const char fmt define LOG BUF LEN 1 lt lt CONFIG LOG BUF SHIFT ifdef CONFIG_DEBUG_LL extern void printascii char endif printk s without a loglevel use this define DEFAULT MESSAGE LOGLEVEL 4 KERN WARNING 668 6 672 10 asmlinkage int vprintk const char fmt va list args sizeof printk buf printed len fmt args ifdef CONFIG DEBUG LL printascii printk_buf endif Copy the output into log buf If the caller didn t provide appropriate log level tags we insert them here 1 5 4 3 Attenzione al conflitto di scrittura sulla porta seriale che avviene suc cessivamente al corretto caricamento della console di sistema se questa scrive sulla porta seriale tra le due procedure di output dei log del ker nel Chiaramente dovr essere disabilitata l opzione CONFIG DEBUG LL per utilizzare in modo univoco il driver seriale caricato appositamente I 6 1 4 2 Normal Debug Successivamente al caricamento della console di sistema questa prov veder a mostrare tutti i messaggi in coda nel buff
36. embedded Linux pu essere eseguito sia nelle macchine host ma anche nei dispositivi device In Linux lo stack software USB Device si presenta come in figura 6 4 fi VELA IENE p USB Device Implementation USB Device Controller drivers USB Hardware Figura 6 4 Linux USB Device Stack usbudc Il driver che gestisce il Controller USB deve agire secondo le spe cifiche device e fornire verso lo strato software superiore l interfaccia Linux usb gadget driver framework gadget driver Driver che determinano le funzionalit esposte dal siste ma embedded compatibili con il device model USB E possibile in stallare pi gadget driver alla volta ma in caso di connessione solo uno puo essere attivo upper levels I driver gadget possono utilizzare tutte le funzionalit Linux per svolgere i loro compiti filesystems media capture USB OTG Illayer software di gestione del Controller USB nel caso que sto disponga della funzionalit OTG e la si volesse sfruttare appieno deve poter definire per ogni connessione il ruolo del Controller nella comuni cazione ed attivare lo stack software adatto I driver per controller OTG fanno parte della famiglia dei gadget driver 148 6 3 Fasi del porting Codice di supporto per i Controller USB degli Application Processor i MX Daniel Mack lt daniel caiag de gt basandosi su un concept iniziale di Sascha Hauer recentemente ha lavorato per ottenere in kernel il sup por
37. ger supportate da un infrastruttura backend completa ed interoperabilit con i pi comuni software enterprise level Nel dicembre 2007 stato istituito il BlackBerry App World Store dove si possono trovare applicazioni anche di terze parti iPhone OS di Apple Inc 13 3 Mobile OS completo derivato dal sistema operativo Mac OS X che anima l iPhone e iPod Touch Pensato innanzitutto per il mercato user presen ta una user interface studiata per colpire l utente e per essere facile da utilizzare La diffusione non stata importante fino al rilascio della versione 2 0 in luglio 2008 con il conseguente rilascio dell SDK per lo sviluppo di ap plicazioni da parte di terze parti sono state implementate applicazioni business level ed stato aperto L App Store un marketplace dove ad ora possibile trovare ogni genere di applicazione immaginabile Windows Mobile di Microsoft 9 Basato sul Sistema Operativo Windows CE la piattaforma Windows Mo bile il prodotto di Microsoft per questo settore Simile al BlackBerry OS come modello di business permette una naturale interoperabilit con i software enterprise level Microsoft Exchange etc Piattaforme Linux 6 Il sistema operativo Linux viene utilizzato da diversi vendors come base per lo sviluppo delle proprie Mobile platforms pressoch incompatibili tra di loro Alcuni protagonisti in questo mercato sono Nokia Ha dato spunto e mantiene diversi progetti open source l
38. identificativo hash univoco che la colloca in un punto preciso della storia del repository git questo riflette il fatto che le modifiche registrate in una commit acquisiscono un senso solo se considerate come ultime di un preciso stack di altre commit che determinano l evoluzione locale del progetto Una commit solitamente descritta da un messaggio breve espresso nel l opzione m che ne indica l argomento toccato e da una spiegazione pi lunga esprimibile con l opzione F che ne sviluppa le motivazioni e gli interventi veri e propri della modifica Una commit pu essere firmata dal suo autore deve esserlo nel caso si volesse procedere al review della patch associata con l opzione s se l ambiente git correttamente configurato Attenzione Il processo di review delle patch alla piattaforma i MX avviene a questo livello Il codice risultante procede nella catena di merge nei repository gerarchicamente pi elevati senza nessuna modifica 92 6 2 Ambiente di sviluppo la macchina host Git offre dei comandi utili a valutare lo stato del repository locale e a decidere quali delle ultime modifiche non registrate debbano andare a comporre la successiva commit git status Riporta lo stato del repository locale mostrando quali file sono stati modificati e quali sono stati aggiunti e non considerati dall indice git git add Aggiunge le modifiche ad un determinato file nell insieme di quelle che andranno a for
39. le callback onCreate e onStart del servizio con i rispettivi compiti di inizializzazione del le risorse necessarie ed inizializzazione delle attivit da eseguire Ripetute chiamate a startService sullo stesso servizio si pro durranno in ripetute chiamate a onStart fornendo cosi un meto do allo stesso servizio per lavorare su pi risorse Un servizio pu essere terminato tramite una chiamata a Context stopService Intent service non importa quante siano state le chiamate a startService oppure dallinterno con 31 Android il metodo stopSelf Queste azioni produrranno la chiamata alla callback onDestroy da parte di Activity Manager il cui compito fermare tutte le attivit in corso thread accessori e liberare le risorse del servizio Remota Nel caso sia necessario interagire con il servizio creato attra verso la sua interfaccia pubblica In questo caso un componente client pu accedere al servizio con Context bindService Activity Manager provveder alla ricerca del servizio voluto tra quelli gi attivi iniziati con chiamate a bindService oppure a startService creandolo se neces sario La callback chiamata in seguito all operazione di bind onBind preceduta da onCreate nel caso di nuova attivazione terminata la quale il servizio sar pronto allinterazione tramite interfaccia remota Il client potr disconnettersi dal servizio tramite il meto doContext unbindService producendo l
40. lit di connessione USB1 1 nella modalit High Speed Device Controllers Viene cos chiamata la porzione hardware che im plementa la funzionalit USB Device secondo le modalit di trasferimento e le classi di dispositivo definite dagli standard USB 1 1 e USB 2 0 USB OTG USB On The Go addendum allo standard USB 2 0 stato sviluppato specificatamente per device embedded come PDA etc defini sce le specifiche hardware e di interfaccia per controller capaci di agire sia come device che come host nella comunicazione USB Successiva mente alla definizione del ruolo per una data connessione chiaro che questo rimarr tale per l intera durata della connessione stessa A seconda delle necessit un device embedded pu assumere i ruoli di device oppure host se un PDA viene connesso al PC per la sincronizza zione allora necessariamente il PC avr la parte di Host ed il PDA dovr comportarsi come un normale device mentre se si vuol connettere una memoria USB al PDA allora questo dovr assumere il ruolo di Host 4 14 Secured Digital Host Controller SDHC Il modulo SDHC fornisce il supporto per la connessione di dispositivi Multi Media Card MMC e memorie Secure Digital SD includendo SD I O combo card dispositivi con funzionalit di storage ed I O 57 L Application Processor Freescale i MX31L 4 15 Interfaccia PCMCIA La porta PCMCIA Rel 2 1 presente nell Application Processor i MX31L parte del mo
41. mx3lpdk o obj CONFIG MACH MX31MOBOARD mx3lmoboard o mx3lmoboard devboard o mx31moboard marxbot o obj CONFIG MACH QONG qong o obj CONFIG MACH ARMADILLO5XO armadillo5x0 0 Early debug Per permettere il debug nella prima fase di boot del ker nel si veda la sezione 6 1 4 1 oltre allo scheletro di base devono esse re inserite le seguenti modifiche nel codice di piattaforma della famiglia MXC In arch arm plat mxc include mach deve essere creato un file hea der apposito chiamato board armadillo5x0 h contenente le definizioni riguardo l indirizzo del dispositivo seriale da utilizzare nelle operazioni di early debug Listing 6 11 arch arm plat mxc include mach board armadillo5x0 h Copyright 2009 Alberto Panizzo lt maramaopercheseimorto gmail com gt All Rights Reserved 110 6 3 Fasi del porting This program is free software you can redistribute it and or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation ifndef __ASM_ARCH_MXC_BOARD_ARMADILLO5X0 H_ define _ASM_ARCH_MXC_BOARD_ARMADILLO5XO H_ include lt mach hardware h gt mandatory for CONFIG_DEBUG LL define MXC LL UART PADDR UARTI BASE ADDR define MXC LL UART VADDR AIPS1 IO ADDRESS UARTI BASE ADDR endif Nel file arch arm plat mxc include mach debug macro S deve es sere inserito il collegamento al file h
42. ricco per limitare il numero di instruction dispatch e letture scritture accessorie in memoria A supporto della JVM Dalvik sono state implementate le librerie Android Core Libraries per ricreare il sottoinsieme utile delle API fondamentali Java strutture dati accesso ai file e fornirne di nuove specifiche per l interfacciamento con le librerie ed i servizi degli strati inferiori Grafica Network Web Per maggiori informazioni su Dalvik si faccia riferimento al documento 40 Hardware Abstraction Layer LIBRARIES ANDROID RUNTIME Surface Media Manager Framework Audio Manager FreeType SSL E Dalvik Virtual Machine SQLite WebKit Core Libraries OpenGLJES HARDWARE ABSTRACTION LAYER Graphics Camera Bluetooth GPS Radio RIL LINUX KERNEL Display Driver Camera Driver Bluetooth Driver thn i Meh Binder IPC Driver Audio Power USB Driver Keypad Driver WiFi Driver Divers Management Figura 2 4 Posizionamento del Hardware Abstraction Layer Android 24 2 2 Architettura Android inserisce un layer di astrazione tra librerie di sistema ed il siste ma operativo Linux per unificare casi specifici di comportamenti driver non standard e fornire un livello di separazione tra componenti Android e software GPL L intero layer sviluppato in C C e definisce per ogni tipologia di di spositivo un interfaccia di controllo da implementare in uno stub di comunicazione verso il driver Linux vero
43. sfide che il mercato offre utilizza re il sistema operativo Linux come Base System OS significa avere alte prestazioni in termini di tempi di risposta e throughput supporto per una grande variet di hardware CPU periferiche board specifiche tool ed utility libere per lo sviluppo un sistema altamente personalizzabile e ben documentato con una quantit di librerie software gi mature non indifferente Il software open source esistente per non copre interamente i bisogni dell intero stack Mobile OS e la tendenza della comunit open a svilup pare maggiormente funzionalit o supporti che interessano un numero rilevante di componenti della stessa comunit non aiuta a colmare i gap esistenti E in questa attivit che lo sviluppo aziendale pu dare quel valore ag giunto che caratterizzer la propria piattaforma E generalmente accet tata la barriera detta value line in figura 1 3 una linea di demarcazio ne tra le componenti software pi adatte ad uno sviluppo di tipo open source e moduli che costituiscono valore aggiunto portato dall azienda sviluppatrice Nell ultimo periodo sono stati formati consorzi industriali come OSDL Mobile Linux Initiative MLI Consumer Electronics Linux Forum CELF Linux Phone Standards Forum LiPS e Linux Mobile Foundation LiMo per identificare e colmare le lacune di Linux ed ecosistema FOSS Free and Open Source Software verso una piattaforma mobile comune e standard di interoper
44. smp lock h Esegue la routine schedule kernel sched c Ora l ambiente di esecuzione multitasking Esegue la funzione cpu idle arch arm kernel process c Questo thread il codice in esecuzione quando nessun altro processo nel sistema attivo Mantenere la CPU attiva con un thread che non fa nulla serve a risparmiare energia e mantenere basse le latenze del sistema I Memory allocation subsystem http www ibm com developerworks linux library l linux slab allocator ca dgr lnxw07LinuxSlabAllo 84 6 1 Il progetto ARM Linux In kernel init init main c Inizia a preparare lambiente SMP con smp prepare cpus arch arm mach realview platsmp c che non fa nulla per archi tetture UP Configura alcuni parametri dello scheduler con sched init smp kernel sched c e In do basic setup inizializza il supporto alle work queue con init workqueues il driver model con driver init drivers base init c ed altre inizializzazioni do initcalls e Infine chiama init post init main c dove si entra nella modalit utente cercando di creare il processo di inizializzazione tentando in sequenza run init process sbin init run init process etc init run init process bin init run init process bin sh Il processo init cerca di inizializzare l ambiente user del sistema per poi trasferire il controllo alla console e rimanere in esecuzione 6 1 4 Metodi di de
45. tabella 44 12 Identificatore pin Funzione Descrizione MX31 PIN VSYNC3 DISPB D3 VSYNC Sincronizzazione di Frame MX31 PIN HSYNC DISPB D3 HSYNC Sincronizzazione di riga MX31 PIN FPSHIFT DISPB D3 CLK Clock dei dati MX31 PIN LD 0 17 DISPB DATA 0 17 Output digitale dei dati MX31 PIN DRDYO DISPB D3 DRDY Data enable MX31 PIN LCS1 GPIO Segnale Power Save Sono presenti 18 linee di output per la definizione del colore del singolo pixel in configurazione 6 6 6 6 bit per colore primario RGB collegate ai rispettivi pin MSB del modulo DAC che prevede un interfaccia digitale in ingresso a 24 bit in configurazione 8 8 8 Il segnale Data Ready DRDY indica la validit o meno dei valori delle linee di output ed connesso al pin BLANK del modulo DAC di modo da rendere nulla l uscita analogica quando i dati digitali non sono validi Questo meccanismo viene utilizzato ad alto livello per spegnere lo schermo in regime di Power Save Il segnale LCS1 connesso al pin PSAVE del modulo DAC Quindi pu essere utilizzato per aumentare l effetto di risparmio in regime di Power 125 Linux su piattaforma Freescale i MX31L Save I segnali di sincronizzazione VSYNC e HSYNC vengono riportati direttamen te nel connettore analogico tramite un circuito driver di canale mentre CLK collegato in ingresso al modulo DAC e determina nel suo fronte di salita l istante in cui i da
46. time vengono implementati file system studiati ap positamente per gestire i dispositivi di storage disponibili ed il power management deve essere pervasivo ed efficace Device Drivers data la continua evoluzione tecnologica la quantit di nuovi dispositivi da gestire attraverso driver notevole Sforzi si stanno facendo per standardizzare interfacce verso moduli hard ware omogenei Librerie di Sistema ottimizzate nelle dimensioni se sviluppate in modo da implementare standard aperti POSIX danno l opportunit agli strati superiori di riutilizzare moduli software gi esistenti e maturi Application Enablement A questo livello di astrazione vengono implementati i moduli software che caratterizzano il Mobile OS dalla user interface alla gestione della tele fonia dal framework multimediale audio video 3D alla gestione delle tecnologie di comunicazione Bluetooth WiFi IrDA passando per il fra mework Web sono le librerie che definiscono le capacit funzionali della piattaforma le potenzialit Mobile Application amp Services Sono le applicazioni vere e proprie utilizzabili dall utente Solitamente un Mobile OS fornito con un set di applicazioni di base come Telephone Call Organizer Calendar Media Player etc integrate successivamente anche da sviluppatori di terze parti per mezzo di Software Development Kit oppure attraverso framework appositi come Java VM 1 3 Il mercato dei Sistemi Operativi per dispos
47. v6 proc info PROCINFO_INITFUNC che risulta nella chiamata a v6 setup nel file arch arm mm proc v6 S Inizializzando cosi la TLB la cache ed il modulo MMU Abilita il modulo MMU con enable mmu che dopo alcune opera zioni preliminari chiamer turn mmu on indirizzo salvato in lr ancora in stext arch arm kernel head S Da _ turn mmu on dopo operazioni nei registri di confi gurazione viene chiamata _ switch data indirizzo salvato in r13 ancora in stext che eseguir mmap switched arch arm kernel head common S In mmap switched Viene copiato il segmento dati in RAM il segmento BSS viene cancellato Al termine viene chiamata la routine start kernel nel file init main c Ora l ambiente pronto per la porzione del kernel indipendente dall ar chitettura 81 Linux su piattaforma Freescale i MX31L Il kernel vero e proprio In start kernel init main c Disabilita gli interrupt per la prima CPU con 1ocal irq disable include linux irgflags h Acquisisce il lock del kernel con 1ock kernel per esser sicuri che l esecuzione non venga interrotta o subisca preemption da interrupt a priorit maggiori 1ib kernel lock c Registra la routine di notifica dei tick con tick_init kernel time tick common c Attiva il primo processore CPUO con boot cpu init init main c Inizializza il sottosistema di gestione della memoria con page _address_init mm highmem o
48. write protect della scheda Le schede di memoria SD MMC possiedono un selettore che se attivato preclu de la capacit di scrittura nella scheda Lo stato di que sto selettore analizzabile attraverso lo stato elettrico del 121 Linux su piattaforma Freescale i MX31L connettore WP_SW collegato al pin MX31_PIN_ATA_RI dell Application Processor ESET_B La funzione get_ro infine deve analizzare lo stato del segnale WP_SW per fornire le condizioni attuali del selettore write protect della scheda I rimanenti parametri non sono stati presi in considerazione Rigu ardano modifiche al comportamento elettrico del controller non necessarie per la configurazione circuitale presente nella board Modifiche al codice di supporto Di seguito sono riportate le modifiche al file armadillo5x0 c compreso l allocazione dei pin di interfaccia fisica del primo controller SDHC Listing 6 16 armadillo5x0 03ToSDHC patch Kok ok ck ck ok ck k k k SK ck cR k k nes 34 39 con 34 40 include mach imx uart h include lt mach iomux mx3 h gt include lt mach board armadillo5x0 h gt include lt mach mmc h gt include devices h HORROR RRR 50 55 ssa 51 126 MX31 PIN RXD2 RXD2 LAN9118 IRQ IOMUX MODE MX31 PIN GPIO1 0 IOMUX CONFIG GPIO static int armadillo5xO sdhcl get ro struct device dev return gpio_get_value IOMUX TO_GPIO MX31_PIN_ATA_RESET
49. 0 106 6 3 Fasi del porting struct tag struct meminfo struct sys_timer struct machine desc Note The first four elements are used by assembler code in head S head common S unsigned int Dr architecture number unsigned int phys io start of physical io unsigned int io pg offst byte offset for io page tabe entry const char name architecture name unsigned long boot params tagged list unsigned int video_start start of video RAM unsigned int video_end end of video RAM unsigned int reserve lpO 1 never has lpO unsigned int reserve_lpl 1 never has lpl unsigned int reserve_lp2 1 never has lp2 unsigned int soft reboot 1 soft reboot xf void fixup struct machine desc struct tag char struct meminfo void map io void IO mapping function void init_irq void struct sys_timer timer system tick timer void init machine void E Set of macros to define architecture features This is built into a table by the linker define MACHINE_START _type _name static const struct machine_desc __mach_desc_ _type used N attribute section arch info init N nr MACH TYPE type N name name define MACHINE END N P endif Mentre gli id di macchina sono registrati nel file arch arm tools mach types Lo scheletro della piattaforma di sup
50. 000 define FB_SYNC_DATA INVERT 0x20000000 define FB SYNC CLK IDLE EN 0x10000000 define FB_SYNC_SHARP_MODE 0x08000000 define FB_SYNC_SWAP_RGB 0x04000000 define FB SYNC CLK SEL EN 0x02000000 as struct mx3fb platform data mx8fb platform data dma dev pointer to the dma device used for dma slave connection mode pointer to a platform provided per mxc register fb videomode struct mx3fb_platform_data struct device dma_dev const char name const struct fb_videomode mode int num modes endif Il device dma_dev verra impostato al device risultante dalla registrazione del dispositivo di piattaforma mx3_ipu mode un array di num_modes strutture fb_videomode che indica le ca ratteristiche delle modalit video supportate per i dispositivi display colle gabili alla board delle quali viene impostata di default quella identificata dal parametro name La struttura fb_videomode cos definita struct fb_videomode const char name mode name 128 6 3 Fasi del porting u32 refresh optional u32 xres x frame resolution u32 yres x frame resolution u32 pixclock pixel period in pico u32 left margin H margins in pixels u32 right margin u32 upper margin V margins in rows u32 lower margin u32 hsync len in pixels u32 vsync len in rows u32 sync Proprietary sync mode u32 vmode FB video mode u32 flag
51. 1 Opzione Valore Note Serial Device dev ttyUSBO Per cavi USB Seriali altrimenti dev ttyN Lockfile Location var lock Callin Program No Callout Program No Bps Par Bits 115200 8N1 115200bps 8bit lenght No parity lbit stop Hardware Flow Control No Software Flow Control No tftp server Per scaricare file nella flash della board tramite boot loader necessario installare un server tftp nella macchina host sudo apt get install tftpd hpa Con le seguenti viene creata una cartella di scambio e dato l accesso in lettura e scrittura ai normali utenti sudo mkdir tftp http alioth debian org projects minicom 103 Linux su piattaforma Freescale i MX31L sudo chmod a r tftp sudo chmod atw tftp Proseguendo nella configurazione del demone deve essere modificato il file di configurazione dei servizi etc inet conf aggiungendo la riga servicename sockettype protocol wait nowait user serverprogram serverprogarguments tftp dgram udp wait root usr sbin in tftpd usr sbin in tftpd s tftp L argomento s indica al demone tftpd di utilizzare la directory t ftp come root directory se si vuole ottenere maggiori informazioni di debug aggiungere v Se non avviati nella fase di boot del sistema con sudo inetd Verranno attivati i servizi configurati in etc inet conf assieme al ser ver tftp Specificando l opzione d verranno visualizzate le s
52. 1 amp armadillo5x0_i2c_rtc 1 static void __init armadillo5x0_timer_init void Configurazione del kernel Il supporto al sottosistema C ed il driver i2c imx c sono gi abilitati per l inserimento statico in kernel Mentre il supporto ai dispositivi Real Time Clock viene abilitato con Device Drivers lt gt Real Time Clock ed successivamente il driver rtc s35390a c selezionando lt gt Seiko Instruments S 35390A Utilizzare il modulo RTC Compilato e scaricato nella board Armadillo 500 il kernel con le modifiche apportate il driver rtc s35390a c fornir un interfaccia di controllo del dispositivo RTC Allora con le seguenti verr impostato l orologio di sistema e scritta I impostazione nella memoria del chip RTC targets date s YYYY MM DD hh mm ss targets hwclock w Mentre hwclock s imposter l orologio di sistema con la data letta dal chip RTC Per mostrare la data attuale del chip RTC sufficiente invocare hwclock senza parametri 6 3 10 USB Il software in kernel a supporto dei controller USB Host presenti nell Application Processor i MX31 non ad ora divenuto standard Se da un lato i tre controller supportano lo standard EHCI la maggior parte dei registri di controllo dei moduli Controller sono EHCI compatibili liberando il driver specifico dalle questioni di protocollo e gestione dei dati nella comunicazine USB deve essere implementato e standardizzato il codice di gestione spe
53. 1 per le due porte USBH1 e USBH2 ed il supplemento allo standard USB 2 0 On The Go OTG per la porta USBOTG Le velocit di trasferimento 55 L Application Processor Freescale i MX31L supportate sono quelle definite dallo standard USB 2 0 high speed 480 Mbit s full speed 12 Mbit s e low speed 1 5 Mbit s Per raggiungere la compatibilit con lo standard USB 1 1 presente un Embedded Transaction Translator modulo hardware interno ai control ler trasparente all interfaccia EHCI che permette la connessione diretta di dispositivi USB 1 1 senza la necessit di moduli Companion Controller Il design del modulo tale da supportare connessioni transceiver less verso dispositivi on board che implementano l interfaccia ULPI La con nessione del modulo a porte USB fisiche necessita la presenza di disposi tivi transceiver che a partire dall interfaccia ULPI implementino il livello fisico USB PHY level USB in pillole Alberi USB In riferimento allo standard USB 2 0 32 il Bus USB viene utilizzato per connettere un Host PC workstation ad un certo nu mero di Device periferici I due ruoli sono ben definiti e non modificabili successivamente l instaurazione della connessione Nell albero delle connessioni USB presente un unica radice Host come system master alla quale pu essere connesso una foglia dispositivo Device oppure un nodo intermedio Hub capace di connettere foglie o altri n
54. 2 a P af R lower D Sub9 Drv Rcv DC Jack UART2 D Sub9 CPU Module Ia USBI USB TypeA Transceiver USB2 USB TypeA Transceiver 64MByte DDR SDRAM 256Mbit x 2 Ethernet Controller 16MByte VGA I F DI e 16 NOR Flash D Sub15 CPU j GMX31 Ei 256MByte 16 ue HP OUT o NAND Flash ir Audio 2Gbit M k Mini Jack CODEC EN p Ext BUS MIC IN 1 Header 60pin Mini Jack RTC tie I i E aas e cote pied ENDS i GPIO LINE OUT Header 4pin ETM Mictor 38pin SD MMC JTAG Header 20pin Figura 5 2 Diagramma a blocchi della board Atmark Armadillo 500 5 1 4 Slot SD MMC E presente uno slot SD MMC per SD Card connesso direttamente ai segnali del primo modulo SDHC dell Application Processor i MX31L vedi la sezione 4 14 I segnali dell interfaccia SD Card Detect e Write Protect sono connessi all Application Processor tramite pin GPIO dedicati 22 foglio 4 5 1 5 Output Video E presente un connettore D Sub15 pin per cavi RGB standard verso display I segnali prodotti dall interfaccia digitale SDC dell Application Processor sono convertiti nello standard analogico attraverso il chip Video DAC 65 Atmark Armadillo 500 Digital to Analog Converter Analog Devices ADV7125 22 foglio 7 5 1 6 NAND Flash Sul retro della board montato un chip ST Micro NAND Flash da 256 MByte con bus a 8 bit organiz
55. 3 Driver Debug Le funzioni di log consigliate per il debug di driver sono dev emerg dev alert dev crit dev err dev warn dev notice dev info edev debug wrapper tutte della funzione dev printk LEVEL dev format che prevede in ingresso il parametro dev contenente le informazioni del device per il quale si sta scrivendo il messaggio di log dev printk utilizza infine la normale printk per scrivere nella console risultando in un messaggio nella forma devicename messag 88 6 2 Ambiente di sviluppo la macchina host Tutte queste funzioni vengono abilitate dal parametro di configurazione DEBUG 6 2 Ambiente di sviluppo la macchina host La macchina host o workstation quel Personal Computer uti lizzato per lo sviluppo del software che eseguit nella macchina target Solitamente contiene tutti i tool necessari ad acquisi re il codice sorgente modificalo compilarlo e trasferirne i file binari nella macchina target Di seguito sono riportate le caratteristiche importanti della macchina host utilizzata CPU Intel R Pentium R M processor 1 73GHz cache size 2048 KB bogomips 1597 75 Memoria RAM 2074640 KB Sistema Operativo Ubuntu Linux 8 04 Hardy Heron rilasciato nell aprile 2008 Importante la configurazione della shell bash per la gestione dei mec canismi di compilazione e per automatizzare determinate attivit Per questo si s
56. 3 Il Core ARMIISOJE 9 we ue diede ee al en D 4 L Application Processor Freescale i MX31L 4 1 LApplication Processor Lili X Ro a reos 4 2 Il Core di Elaborazione oU RU Rye 4 3 La gestione degli interrupt 0 4 4 Interfaccia verso la memoria esterna 4 5 Clock e Power Management 4 6 Multiplexing GPIO e Pad Control 4 7 Interfaccia AIPS verso il bus diespansione 4 8 Shared Peripheral Bus Arbiter SPBA 4 9 Smart Direct Memory Access Controller 4 10 Timers GPT d EPID amp v aueh XE CR RW a armo 4 11 Interfacce seriali UART ios dp koe EO RARA A 19 InterfacciauI wa puteo SCANS M db Aia e di desi Z p p3InterEicc Er USB ceo dep exerci et de Rp edv god 4 14 Secured Digital Host Controller SDHC 4 15Interfaccia PCMCIA gt i ond WR dox CR AXE ROSEO RUN 4 16Il modulo Watchdog pus perire ai i ASV Real Tune Clock 2 2 45 obi Aa RI 4 18Immagini Video e Grafica Li 2 a e a di A EO Interfaccia AUdIO e ion a Or 5 Atmark Armadillo 500 5 1 L hardware della board nel dettaglio 5 1 1 Armadillo 500 SOM se os o9 Ru dla I EO 5 12 Porte serial B9232 eo 4 9 qoe ope oe eed vi INDICE SLS Rete Ethernet 9 t mt y lai 64 DI Slot SD MMC V soa eau Meteo iat Deo A a 65 5 1 5 Output Video ls a ow D LAC Oa Bete 65 516 NAND BIGSD 154 2 4 eroe i See in Deuda e e e 66 5 1 7 Real Time Clock RTC
57. 31 PIN LD12 LD12 MX31 PIN LD13 LD13 MX31 PIN LD14 LDI14 MX31 PIN LD15 LDI5 MX31 PIN LD16 LD16 MX31 PIN LD17 LDI17 MX31 PIN VSYNC3 VSYNC3 MX31 PIN HSYNC HSYNC MX31 PIN FPSHIFT FPSHIFT MX31 PIN DRDYO DRDYO IOMUX MODE MX31 PIN LCSI1 vsync len sync vmode flag 800x600 56 Hz name refresh xres yres pixclock left margin right margin upper margin IOMUX CONFIG GPIO ADV7125 PSAVE fa FB support static const struct fb_videomode fb_modedb 640x480 60 Hz name CRT VGA refresh 60 Xres 640 yres 480 pixclock 39721 left margin 35 right margin 115 upper margin 43 lower margin 1 hsync len 10 l FB_SYNC_OE_ACT HIGH FB_VMODE NONINTERLACED 0 CRI SVOA 56 800 600 30000 30 108 13 130 6 3 Fasi del porting lower margin 10 hsync len 10 vsync len 1 Sync FB SYNC OE ACT HIGH FB SYNC HOR HIGH ACT FB_SYNC_VERT_HIGH_ACT vmode FB_VMODE NONINTERLACED flag 0 static struct ipu platform data mx3 ipu data irq base MXC IPU IRQ START static struct mx3fb platform data mx3fb pdata dma_dev amp mx8_ipu dev name CRI VGA mode fb_modedb num modes ARRAY SIZE fb modedb Js k k k k E E EE GR e REGE 189 188 cix 259 268
58. 31L E per questo che solo il codice mainline deve essere considerato di quali t a differenza di branch distribuiti da altre fonti modificati per accogliere capacit specifiche difficilmente mantenibili a fronte dello sviluppo prin cipale del mainline kernel e quindi spesso destinati alla fossilizzazione in una specifica e datata versione del kernel Ci che spinge la nascita di repository non ufficiali nel caso di aziende nel campo embedded il miraggio della velocit di sviluppo di un siste ma utilizzabile adatto al nuovo prodotto in cantiere Il processo di review delle patch al main line kernel si efficace in termini di qualit ma richiede un tempo ritenuto troppo grande rispetto alle necessit di de ployment dettate dal mercato ed impone un elevato rigore rispetto a per sonalizzazioni esotiche dovute ad hardware non conforme agli standard accettati Alcune aziende allora preferiscono sviluppare internamente tutto il codice di supporto in un repository locale creando una nuova linea di biforcazio ne branch la quale solitamente raggiunge una distanza tale dal kernel mainline che la fusione tra le due al termine dei lavori ritenuta troppo costosa oppure impossibile se suporta hardware non standard Oltre a non contribuire attivamente al progetto principale privandolo di contributi che potrebbero essere utili anche ad altri membri della comu nit queste aziende si ritrovano nella condizione di non implementare
59. 31_PIN USBOTG_DATAO_USBOTG_DATAO MX31 PIN USBOTG DATA1 USBOTG DATA MX31 PIN USBOTG DATA2 USBOTG DAT22 MX31_PIN USBOTG DATA3 USBOTG DATA3 MX31_PIN USBOTG_DATA4_USBOTG_DATA4 MX31_PIN USBOTG_DATA5_USBOTG_DATA5 MX31_PIN USBOTG_DATA6__USBOTG_DATA6 MX31 PIN USBOTG_DATA7_USBOTG_DATA7 MX31 PIN USBOTG_CLK_USBOTG_CLK MX31 PIN USBOTG DIR USBOTG DIR MX31 PIN USBOTG NXT USBOTG NXT MX31 PIN USBOTG STP USBOTG STP mxc_iomux_setup_multiple_pins pins ARRAY SIZE pins USB OIG t tt ttttt t tt ititt t 150 6 3 Fasi del porting t t tttttitdtttit tt mxc iomux set pad MX31 PIN USBOTG DATAO USB PAD CFG mxc iomux set pad MX31 PIN USBOTG DATA1 USB PAD CFG mxc iomux set pad MX31 PIN USBOTG DATA2 USB PAD CFG mxc iomux set pad MX31 PIN USBOTG DATAS3 USB PAD CFG mxc iomux set pad MX31 PIN USBOTG DATA4 USB PAD CFG mxc iomux set pad MX31 PIN USBOTG DATA5 USB PAD CFG mxc iomux set pad MX31 PIN USBOTG DATA6 USB PAD CFG mxc iomux set pad MX31 PIN USBOTG DATA7 USB PAD CFG mxc iomux set pad MX31 PIN USBOTG CLK USB PAD CFG mxc iomux set pad MX31 PIN USBOTG DIR USB PAD CFG mxc iomux set pad MX31 PIN USBOTG NXT USB PAD CFG mxc iomux set pad MX31 PIN USBOTG STP USB PAD CFG Chip already enabled by hardware OTG phy reset gpio request OTG RESET USB O
60. 5x0_nor_flash_partitions name nor bootloader offset 0x00000000 size 4 32 1024 name nor kernel offset MTDPART OFS APPEND size 16 128 1024 ba name nor userland offset MTDPART OFS APPEND size 110 128 1024 Est name nor config offset MTDPART OFS APPEND size 1 128 1024 Py Js static struct platform device name id num resources resource tt tt t tt ttt ttet toe t strt to st eor osettiso 6etitso r6oet ti static struct physmap flash data armadillo5xO nor flash pdata width 2 parts armadillo5xO nor flash partitions nr parts ARRAY SIZE armadillo5xO nor flash partitions static struct resource armadillo5xO nor flash resource flags JORESOURCE MEM start CSO BASE ADDR end CSO BASE ADDR SZ_64M 1 armadillo5xO nor flash physmap flash amp armadillo5x0_nor_flash_resource 137 Linux su piattaforma Freescale i MX31L FB support static const struct fb_videomode fb_modedb ok ok ok oR k ok k k k k k k k k k wee 262 267 ss 305 314 Register FB mxc register device amp mx3 ipu amp mx3 ipu data mxc register device amp mx3 fb amp mx3fb pdata Register NOR Flash mxc register device amp armadillo5xO nor flash amp armadillo5bxO nor flash pdata static void __init armadillo5xO timer init void
61. 64 bit tra le seguenti unit fondamentali ALU I D Cache Fornendo la capacit di caricare due istruzioni al la volta oppure di scrivere o leggere due registri nella cache in un singolo ciclo di bus Coprocessore ALU Abilitando la possibilit di fornire due operandi da elaborare in un solo ciclo di bus 3 3 Il Core ARM1136JF S Primo core della famiglia ARM11 sviluppato da ARM Come la maggior parte dei prodotti ARM il core ARM1136JF S viene licenziato come In tellectual Property IP ARM non produce fisicamente chip contenenti la 45 Microarchitettura ARM11 Figura 3 2 Diagramma a blocchi del core ARM1136JF S singola unit di elaborazione ma fornisce il modulo in licenza per poterlo integrare nei processori prodotti dagli OEM La S nella dicitura enfatizza questo aspetto indica la caratteristica Syn thesizable cio la capacit da parte degli OEM di personalizzare alcune propriet del core come la dimensione delle cache oppure estenderlo collegando altri moduli attraverso il bus AHB Lite versione single master del bus ARM Advanced High performance Bus come la cache L2 dati e istruzioni ed altre periferiche compatibili Le lettere J ed F specificano invece funzionalit opzionali presenti in questo core J indica la presenza dell estensione Jazelle tramite la quale possibile l esecuzione diretta di bytecode Java Per usufruire di tale estensio ne hardware devono essere presenti nel sist
62. 7 2 Allegati a questo documento nella cartella ScriptDiBootAndroid sono presenti gli script di boot utilizzati nei test effettuati da sovrascrivere e copiare nel root filesystem Android 7 4 Problemi e Soluzioni Lo stack Android generato nella sezione precedente pronto per il primo boot Dove come logico aspettarsi Android segnala errori e non tanto logico impazzisce nello schermo In questa sezione verranno descritti i problemi incontrati e le soluzioni proposte 7 4 1 Framebuffer Come descritto nella sezione 2 2 2 il server SurfaceFlinger opera una sor ta di double buffering nella scrittura dei frame nella memoria video Se il driver video lo supporta direttamente nel frame buffer altrimenti viene mappata una seconda area in memoria di dimensione pari ad un frame normale utilizzata come buffer di disegno prima della copia dei dati nella memoria video Il test effettuato per determinare o meno se il driver video pu suppor tare tale double buffering un semplice controllo sulla dimensione dello schermo virtuale Listing 7 4 Test effettuato nel file frameworks base libs ui EGLDisplaySurface cpp ed effetti status t EGLDisplaySurface mapFrameBuffer struct fb var screeninfo info if ioctl fd FBIOGET VSCREENINFO amp info 1 return errno 172 7 4 Problemi e Soluzioni info yres virtual info yres 2 uint32 t flags PAGE FLIP if ioctl fd FBIOPUT VSCREENINFO amp inf
63. 7 3 Personalizzare il processo di build per la board Armadillo 500 Dopo aver selezionato tutte le opzioni riguardanti la board Armadillo500 si veda la sequenza di porting nella sezione 6 3 di questo documento si procede ad abilitare le funzionalit necessarie ad Android ashmem In General setup gt Enable the Anonymous Shared Memory Subsystem wake_lock In Power management options gt x Power Management support Wake lock x Userspace wake locks Early suspend security In Networking support gt Networking options Only allow certain groups to create Sockets binder log ram buffer low memory killer In Device Drivers gt x Staging drivers gt Android gt Android Drivers x Android Binder IPC Driver lt gt Android log driver x Android RAM buffer console Android Low Memory Killer Infine deve essere abilitato il sottosistema Event interface Device Drivers Input device support gt lt gt Event interface per compatibilit con il sistema di Input Android Cosi configurato il kernel pronto per la compilazione ed il trasferimento nella board 7 3 Personalizzare il processo di build per la board Armadillo 500 Gli script di generazione dello stack risiedono nella directory build del repository Android dove possibile trovare inoltre il documento Android Build System 2 dogumentazione parziale ma utile degli stessi Il sistema di build di A
64. ACH PCM043 config MACH ARMADILLO5X0 bool Support Atmark Armadillo 500_Development_Base_ Board select ARCH MX31 select MXC ULPI help 149 Linux su piattaforma Freescale i MX31L Include support for Atmark Armadillo 500 platform This includes specific configurations for the board and its peripherals diff git a arch arm mach mx3 armadillo5x0 c b arch arm mach mx3 armadillo5x0 c index dlOee27 936fc86 100644 a arch arm mach mx3 armadillo5x0 c b arch arm mach mx3 armadillo5x0 c 36 6 36 9 include linux input h include linux gpio keys h include linux i2c h include linux delay h include linux usb otg h include lt linux usb ulpi h gt include lt mach hardware h gt include lt asm mach types h 52 6 55 8 include lt mach ipu h gt include mach mx3fb h include mach mxc nand h include mach mxc ehci h include lt mach ulpi h gt include devices h include crm_regs h 105 6 110 127 static int armadillo5xO pins MX31 PIN CSPI2 MISO SDA USB define OTG RESET IOMUX TO GPIO MX31 PIN STXD4 define USBH2 RESET IOMUX TO GPIO MX31 PIN SCK6 define USBH2 CS IOMUX TO GPIO MX31 PIN GPIOI 3 define USB PAD CFG PAD CTL DRV MAX PAD_CTL SRE FAST PAD CTL HYS CMOS PAD CTL ODE CMOS PAD CTL 100K PU static int usbotg_init struct platform device pdev unsigned int pins MX
65. B static int armadillo5x0_sdhcl_init struct device dev irq handler t detect_irq void data SDHC1 MX31_PIN_SD1_DATA3_SD1_DATA3 MX31_PIN_SD1_DATA2_SD1_DATA2 MX31_PIN_SD1_DATA1_SD1 DATA MX31_PIN_SD1_DATAO_SD1_DATAO MX31 PIN SD1 CLK SDI CLK MX31 PIN SD1 CMD SDIl CMD us SDHC 1 MMC support 122 6 3 Fasi del porting int ret int gpio det gpio wp gpio det IOMUX TO GPIO MX31 PIN ATA DMACK gpio wp IOMUX TO GPIO MX31 PIN ATA RESET B ret gpio request gpio det sdhc card detect if ret return ret gpio direction input gpio det ret gpio request gpio wp sdhc write protect if ret goto err gpio free gpio direction input gpio wp When supported the trigger type have to be BOIH ret request irq IOMUX TO IRQ MX31 PIN ATA DMACK detect irq IRQF DISABLED IRQF TRIGGER FALLING sdhc detect data if ret goto err gpio free 2 return 0 err gpio free 2 gpio free gpio wp err gpio free gpio free gpio det return ret static void armadillobxO sdhcl exit struct device dev void data free irq IOMUX TO IRQ MX31 PIN ATA DMACK data gpio free IOMUX TO GPIO MX31 PIN ATA DMACK gpio free IOMUX TO GPIO MX31 PIN ATA RESET B static struct imxmmo platform data sdhc pdata get ro armadillo5xO sdhcl get ro init armadillo5xO sdhcl ini
66. B ed i pin di interfaccia verso la rete ethernet sono connessi direttamente al connettore RJ 45 viene utilizzato il modulo di gestione del layer fisico interno Allora il flag di configurazione del driver determinato dal solo modificatore SMSC911X USE 16BIT Il segnale di interrupt collegato al processore attraverso un circuito con resistenza di Pull Up Questo per rendere possibili tutte e due le configurazioni circuitali interne al controller Push Pull e Open Drain nel caso la semantica dell interrupt lo vuole attivo basso Test effettuati hanno mostrato come la configurazione Open Drain risulti comunque in errori nella generazione del segnale per la semantica scelta per cui la configurazione preferita Push Pull Allora i parametri di configurazione sono definiti in questo modo static struct smsc911x platform config smsc911x info flags SMSC911X USE 16BIT irq polarity SMSC911X IRQ POLARITY ACTIVE LOW irq type SMSC911X IRQ TYPE PUSH PULL Configurazione della sorgente di interrupt Il segnale di interrupt LAN IRQ connesso al pin gpio GP101_0 dell Application Processor i MX31 Allora tale gpio deve essere configurato come input ed essere collegato al circuito interno di generazione degli interrupt Per ottenere questo risultato deve essere registrato lidentificatore di pin MX31 PIN GPIOl1 0 modificato nella funzione IOMUX CONFIG GPIO ed impostato nella direzione con gpio direction input
67. C e un root filesystem di base che fornisca la struttura contenitore alle applicazioni Open Source Embedded Linux Automation Services http www oselas com 100 6 2 Ambiente di sviluppo la macchina host Con la seguente riga di comando possono essere personalizzate le con figurazioni di piattaforma force inserito per compatibilit tra le versioni differenti di ptxdist ptxdist force platformconfig Nel menu risultante deve essere deselezionato Linux Kernel dato che un kernel apposito verr sviluppato nel proseguo del lavoro Importante poi il sotto menu image creation option dove definito il formato di output dell immagine di root che pu essere nelle forme hd img Contiene il boot loader grub il kernel ed il root filesystem in una partizione ext2 root jffs2 Directory root in una partizione jffs2 uRamdisk Directory root in una immagine Ramdisk compatibile con u boot initrd gz Tradizionale immagine RAM initrd utilizzabile dal kernel co me initrd ramfs root ext2 Directory root in una partizione ext2 root squashfs Directory root in una partizione squashfs root tgz Directory root in un file compresso gzip unica da selezionare Configurata la piattaforma si procede alla configurazione della Board Support Package considerata come l insieme di tutto il software che ver r installato nella root directory ptxdist force menuconfig In Project Specific Configurat
68. CH e tentare il metodo three way merge nel caso di conflitto nell applicazione della patch corrente 160 7 2 Ottenere un kernel valido git am crea un database delle mail patch a lui inviate nella directo ry dotest Nel caso si verificassero errori di applicazione che richie dono l intervento a mano git am termina temporaneamente l applica zione della sequenza lasciando il marge della patch incriminata allo sviluppatore Per riprendere nella sequenza di applicazione dalla patch incriminata git am resolved mentre con git am skip la sequenza di applicazione continuer saltando la patch corrente Nel caso si volesse annullare la sequenza di applicazione corrente e ritornare allo stato iniziale rm r dotest git reset hard androidArmadillo500 Patch Tralasciate Non tutte le patch risultanti sono state applicate per problemi di incompatibilit con la versione scelta del kernel Si trattano per lo pi di bug fix proposti dal gruppo Android ad aree del kernel non strettamente legate allo stack Android non accettati finora dalla comunit Linux Tra le patch non applicate c il supporto in kernel del filesystem yaffs2 Per problemi nellapplicazione e dato che questo filesystem non ver r utilizzato nei test successivi si deciso di non implementare tale funzionalit Patch Applicate Le patch applicate introducono nel kernel tutte le funzionalit necessarie allo stack Android assenti nella versio
69. Capitolo 8 Risultati I risultati del presente lavoro di Tesi vengono qui suddivisi nelle due fasi principali del progetto svolto 8 1 Piattaforma di supporto per la board Atmark Armadillo 500 nel kernel Linux La piattaforma di supporto della board Atmark Armadillo 500 per il ker nel Linux ottenuta nel capitolo 6 da considerarsi il massimo risultato ottenibile rispetto allo stato di supporto degli Application Processors i MX e dei driver presenti nel mainline kernel Di seguito per ogni device presente nella board riassunto il livello di supporto raggiunto NOR Flash Ottimo Transfer Rate 3 3 MB s E gestita tramite un driver standard in kernel E stato possibile mantenere lo schema delle partizioni originario permettendo il pos sibile salvataggio di un immagine ramdisk nella porzione userspace Porte seriali Ottimo Le due porte seriali esposte dalla board sono gestite tramite il rela tivo driver di piattaforma Il driver in questione fornisce supporto anche a transceiver IrDA per una possibile espansione futura Rete ethernet Discreto Transfer Rate NFS Min 200 kB s Med 600 kB s Max 2 MB s Il controller Ethernet gestito tramite un driver standard in kernel 179 Risultati fornendo piena funzionalit di rete alla board Non implementata l interfaccia verso il sistema di Power Management Linux Controller SD MMC Discreto Transfer Rate 5 MB s Il controller SDHC dell Application Proce
70. EAD azzera le informa zioni di modifiche temporaneamente registrate per la commit successiva git reset hard HEAD annulla tutte le ultime modifiche apportate al repository HEAD la commit precedente all ultima registrata HEAD n riferisce l n esima commit precedente l ultima registrata 93 Linux su piattaforma Freescale i MX31L Ad ogni commit pu essere associata una patch da sottoporre al proces so di review attraverso le mailing list Per questo esiste il comando git format patch che fornisce un metodo completo per creare file di patch validi per la serie di commit eseguite a partire da una in particolare op pure per un range definito di commit L output di format patch regolato dalle sue opzioni delle quali le seguenti sono normalmente utili o dir per definire la directory di output dei file di patch prodotti n inserisce come prefisso al messaggio di commit la stringa PATCH n m con numero attuale del gruppo ed m numero totale delle patch del gruppo check esegue dei controlli formali sullo stile del codice come spazi bianchi oltre la fine delle righe e spazi prima di tab nelle indentazioni Codice scritto con errori in questo senso non viene neppure considerato nel processo di review L ultimo parametro indica generalmente da che punto di commit generare le patch Se indicato origin verranno create le patch di tutte le commit effettuate dalla creazione del repository locale Se indicato un n
71. Il documento 7 fornisce una descrizione completa riguardante la gestio ne dei pin gpio nel kernel Linux Modifiche al codice di supporto Il file armadillo5x0 c allora viene cosi modificato 35Nel caso Push Pull il controller in grado di generare entrambi gli stati alto e basso 1 o 0 mentre nel caso Open Drain la resistenza esterna di pull up che provvede ad alzare il livello del segnale quando il circuito interno viene spento 117 Linux su piattaforma Freescale i MX31L Listing 6 14 armadillo5x0 02ToEthernet patch ok ok oe oko ck ck ck ck ck ck ck ck ck RI 18 2 18 27 t inclu inclu inclu inclu inclu inclu inclu inclu inclu 9 sue de lt linux init h gt de lt linux clk h gt de lt linux platform_device h gt de lt linux gpio h gt de lt linux smsc911x h gt de linux interrupt h de lt linux irg h gt de lt mach hardware h gt de lt asm mach types h RRR GR OR k k k k k kk k k xk 44 49 sus 48 87 Oe GGG GR GR GR GR GR RGB tt t t t 4 MX31 PIN RTS2 RTS2 MX31 PIN TXD2 TXD2 MX31 PIN RXD2 RXD2 LAN9118 IRQ IOMUX MODE MX31 PIN GPIO1 0 IOMUX CONFIG GPIO SMSC 9118 Network support static struct resource armadillo5xO_smc911x_resources start CS3 BASE ADDR end CS3 BASE ADDR SZ_32M 1 flags IORESOURCE MEM Fs 1f start IOMUX TO IRQ MX31
72. In paging_init mdesc arch arm mm mmu c configura la page table con le tabelle zero page e bad page ed inizializza le mappature statiche in memoria virtuale con mdesc map io in devicemaps init mdesc request standard resources amp meminfo mdesc dove mdesc utilizzata per inizializzare la memoria video se definito mdesc video start e le risorse LPT IpO Ip1 1p2 cpu init completa l inizializzazione della CPU Inizializza i puntatori alle funzioni dipendenti dall hardware su cui e in esecuzione init arch irq mdesc gt init_irg system timer mdesc gt timer init machine mdesc init machine Esegue early trap init Configura lo scheduler di Linux con sched init kernel sched c Inizializza la coda dei processi Crea un thread idle con init idle current smp processor id kernel sched c Inizializza le zone di memoria come DMA normal high memory con build all zonelists mm page alloc c Processa i parametri del kernel con parse early param init main c e parse args kernel params c Inizializza la tabella degli interrupt il Generico Inter rupt Controller ed il vettore di cattura delle eccezioni con init IRQ arch arm kernel irq c e trap init arch arm kernel traps c Assegna inoltre le affinit per gli interrupt ai differenti processori Prepara la CPU di boot ad accettare le notifiche dei tasklets con softirq init kernel softirg c In
73. PRJROOT android sources kernel git branch r korg android 2 6 25 korg android 2 6 27 korg android 2 6 29 korg android goldfish 2 6 27 korg android goldfish 2 6 29 m master l opzione r indica al comando git branch di visualizzare non solo i branch locali del progetto ma anche quelli reomoti 157 Android su piattaforma Freescale i MX31L Quale versione del kernel quella favorevole Dato che la piattafor ma di supporto alla board Armadillo 500 entrata a far parte del mainline kernel dalla versione maggiore 2 6 31 e che le versioni precedenti del ker nel contengono errori significativi che ne precludono l utilizzo i bug fix dei driver Seriale e NAND sono necessari inoltre il sottosistema USB si basa esplicitamente sulla versione della piattaforma i MX MXC contenu ta nel kernel Linix 2 6 31 deve essere eseguita una fusione consistente tra le due versioni del kernel Android e Linux mainline a partire da una versione favorevole L operazione di avanzamento del kernel Android android 2 6 29 allo stato mainline non conveniente la mole di patch che dovrebbero essere applicate e le inconsistenze da ripianare il merge dei differenti repository di sviluppo nel mainline kernel richiede spesso la risoluzione di inconsi stenze da risolvere a mano sono tali da rendere il processo inutilmente faticoso Neppure possibile ora applicare l intera sequenza di patch Android al mainline kernel Linux ad ora alla v
74. PS AHB Lite 2 to IP Bus Rev 3 0 SkyBlue line interface Interfaccia di collegamento tra il bus AHB Lite 2 ed il bus Freescale SkyBlue line per periferiche IP compatibili AIDL Android Interface Definition Language ALU Arithmetic logic unit AMBA Advanced Microcontroller Bus Architecture Standard de facto per le architetture Bus di collegamento tra periferiche 21 Sviluppato da ARM definisce quattro tipologie di bus Advanced System Bus ASB Advanced Peripheral Bus APB evoluto nel Advanced High performance Bus AHB ed infine Advanced eXtensible Interface AXI Introdotto nel 1996 la versione pi recente del 2003 AMBAv3 AP Application Processor Tipologia di architettura per SoC ottimizzata per dispositivi mobili API Application Programming Interface ARM Advanced RISC Machines Compagnia fondata nel novembre del 1990 leader nel settore dei microprocessori e tecnologie affini Fornisce prevalentemente Intellectual Property IP ARMv ARM vesion 6 189 ELENCO DEGLI ACRONIMI APB Advanced Peripheral Bus Tipologia di Bus sviluppata da ARM Ltd parte dello standard AMBA ASB Advanced System Bus Tipologia di Bus sviluppata da ARM Ltd parte dello standard AMBA AVIC ARM11 platform Vectored Interrupt Controller Periferica programmabile per la gestione vettorializzata degli interrupt presente negli Application Processor i MX31 i MX31L AXI Advanced eXtensible Interface Tipologia di Bus sviluppata da ARM Ltd
75. S EXT mxc register device amp mxoc otg host amp usbotg_pdata mxc register device amp mxoc usbh2 amp usbh2_pdata t t tt t 152 6 3 Fasi del porting static void __init armadillo5x0_timer_init void 1 5 4 3 A differenza della patch di Daniel non stato inizializzato il controller USBHI stato introdotto un inpulso di reset ai transceiver nelle rispet tive funzioni di inizializzazione e sono state rimosse le modifiche al regi stro di controllo del modulo multiplexer GPR per l interfaccia relativa al controller USBOTG 153 Linux su piattaforma Freescale i MX31L 154 Capitolo 7 Android su piattaforma Freescale i MX31L Nel capitolo precedente si sono descritte le fasi che hanno portato alla creazione della piattaforma di supporto della board Atmark Armadillo 500 per il kernel Linux Non tutte le periferiche sono state abilitate ma il livello di multimediali t di supporto ai dispositivi di I O e di memorizzazione di massa sono sufficienti per eseguire una verifica del Sistema Operativo Android nella board Armadillo 500 A momento della redazione di questo documento il repository Android risiede approssimativamente alla versione 1 5 cupcake 7 1 Il codice sorgente di Android Seguendo la traccia pubblicata nel sito ufficiale del progetto open source si procede con il download dell utility repo utilizzata per le operazioni di base di gestione del repository locale
76. SP_CLK 2 che ne cessariamente deve essere successivo a quello del fronte di salita La varibile div nella funzione sdc_init_panel calcolata per la genera zione di un segnale di clock in uscita con periodo pari all impostazione 133 Linux su piattaforma Freescale i MX31L di modalit mode pixclock nella forma corretta per essere scritta nella porzione DISP3 IF CLK PER WR valore reale con shift a sinistra di 4 bit Il comportamento standard del driver allora impone il fronte di salita all istante iniziale del periodo di clock ed il fronte di discesa circa a met periodo meno Tysp crx Dai datasheet del modulo ADV7125 19 si apprendono le temporizzazioni adottate nel processo di lettura dei dati nel bus conversione ed output del relativo segnale come mostrato figura 6 2 il modulo ADV7125 esegue la lettura nel bus latching nei registri interni dei dati digitali nel fronte di salita del clock e dopo il tempo di conversione necessario circa 5ns riporta in uscita il segnale analogico per ogni componente di colore CLK Dati digitali Risposta analogica Istante di Latching dei dati Figura 6 2 Andamento temporale dell output analogico del modulo DAC rispetto agli input digitali Impostare il fronte di salita all inizio del periodo di clock pu portare allora a letture di dati in fase di transizione nel bus e quindi non sempre corrette La modifica persentata al driver interviene proprio in questo s
77. TG RESET if gpio direction output OTG RESET 1 HIGH pr warning Failed to reset usbotg phy i1 return gpio set value OTG RESET 0 4 OW s msleep 5 gpio set value OTG RESET 1 sHIGH return 0 int usbh2 init struct platform device pdev int pins MX31 PIN USBH2 DATAO USBH2 DATAO MX31 PIN USBH2 DATA1 USBH2 DATAI IOMUX MODE MX31 PIN STXD3 IOMUX CONFIG FUNC IOMUX MODE MX31 PIN SRXD3 IOMUX_CONFIG_FUNC IOMUX MODE MX31 PIN SCK3 IOMUX CONFIG FUNC IOMUX MODE MX31 PIN SFS3 IOMUX CONFIG FUNC IOMUX MODE MX31 PIN STXD6 IOMUX CONFIG FUNC IOMUX MODE MX31 PIN SRXD6 IOMUX CONFIG FUNC MX31 PIN USBH2 CLK USBH2 CIK MX31 PIN USBH2 DIR USBH2 DIR MX31 PIN USBH2 NXT USBH2 NXT MX31 PIN USBH2 STP USBH2 STP mxc iomux setup multiple pins pins ARRAY SIZE pins USB H2 mxc iomux set pad MX31 PIN USBH2 CLK USB PAD CFG mxc iomux set pad MX31 PIN USBH2 DIR USB PAD CFG mxc iomux set pad MX31 PIN USBH2 NXT USB PAD CFG mxc iomux set pad MX31 PIN USBH2 STP USB PAD CFG mxc iomux set pad MX31 PIN USBH2 DATAO USB PAD CFG mxc iomux set pad MX31 PIN USBH2 DATA USB PAD CFG mxc iomux set pad MX31 PIN SRXD6 USB PAD CFG mxc iomux set pad MX31 PIN STXD6 USB PAD CFG mxc iomux set pad MX31 PIN SFSS3 USB PAD CFG 151 Linux su piattaforma Freescale i MX31L mxc_iomux_set_pad MX31_PIN_SCK3 USB PAD CFG mxo
78. X31L presentano una catena di ge stione dei contenuti multimediali completa sono capaci di acquisire ma nipolare e visualizzare flussi video con accelerazioni hardware dedicate La figura 4 4 descrive l intera catena di video processing Image Sensor Display Format Combining Conversion with Graphics Quality Format Enhancement onversion Resolution Adjustment Post Filtering Resolution Adjustment YUV e Memory _ Combining Separation with Audio from Audio Communication Network Performed By Di Camera or ARM11 software Hardware Module IPU EE ARM11 Software Figura 4 4 IPU workflow Il modulo Image Processing Unit IPU ha un ruolo centrale in questa ca tena include le interfacce di acquisizione e visualizzazione dei contenuti video oltre a moduli di hardware video processing per liberare la CPU dal carico di operazioni standard e non come il pre processing per la compressione video MPEG4 Di seguito sono presentate le unit contenute Camera Sensor Interface CSI interfaccia di acquisizione da sorgen 59 L Application Processor Freescale i MX31L ti video Si avvale del protocollo C per collegare il chip della videocamera Image Converter IC unit capace di effettuare diverse operazioni al frame ricevuto dalla CSI in particolare Resize del frame incrementando o diminuendone la dimensione interpolazione lineare o decimazione p
79. a Freescale i MX31L env gt SetObjectField obj gFieldIds mBatteryTechnology env gt NewStringUTF buf endif static JNINativeMethod sMethods 7 4 3 Mouse USB come sistema di tracking Android nella versione a disposizione non implementa il supporto a dispositivi mouse come sistemi di tracking In rete presente il progetto Patch hosting for android x86 support 3 che con successo ha portato la piattaforma Android in un pc x86 Asus Eee PC Tra le altre modifiche alla piattaforma stata pubblicata una patch al sottosistema di Input Android che inserisce la categoria mouse nella serie di dispositivi di tracking abilitati se gestita attraverso l interfaccia Event Interface evdev del kernel La patch introduce la classificazione della nuova tipologia di eventi nei file frameworks base core java android view RawInputEvent java e frameworks base include ui EventHub h b include ui EventHub diff git a core java android view RawInputEvent java b core java android view RawInputEvent java index 30da83e 4d9alla 100644 a core java android view RawlInputEvent java b core java android view RawlInputEvent java 13 7 13 8 public class RawInputEvent public static final int CLASS ALPHAKEY 0x00000002 public static final int CLASS TOUCHSCREEN 0x00000004 public static final int CLASS TRACKBALL 0x00000008 public static final int CLASS MOUSE 0x00000010 More speci
80. a SQLite Core Libraries Framework Package Manager DalvikVirtual OpenGL ES FreeType WebKit Machine SGL SSL libe LINUX KERNEL Bluetooth Flash Memory Binder IPC Driver Driver Driver Display Driver Camera Driver USB Driver Keypad Driver WiFi Driver Drivers pia Figura 2 1 Stack di Android che del modello delle applicazioni Android sono stati introdotti nel kernel i moduli seguenti IPC Binder Il modulo Binder fornisce un metodo evoluto per il meccanismo Inter Process Communication IPC simile agli standard CORBA e Java RMI per Sistemi Distribuiti Nasce dallo sviluppo di un vecchio progetto interno a PalmSource Open Binder pubblicato con licenza open source nel 2005 e del quale esiste ancora la documentazione online Questa tipologia di architettura IPC permette interazioni complesse tra processi difficilmente riproducibili attraverso meccanismi standard PO SIX se non con un elevato overhead computazionale ogni processo pi http www angryredplanet com hackbod openbinder 17 Android precisamente ogni thread viene considerato un entit capace di esporre o utilizzare servizi di altre entit Processo A Processo B ServerB pubblica la sua Interfaccia remota ClientA richiede il servizio pubblicato da ServerB IPC Binder ritorna lo stub del ServerB O Percorso delle Remote Method Invocation Marshalling Un marshalling dei dati IPC B
81. a chiamata alla callback onUnbind il cui compito liberare le risorse utilizzate nella comunicazione onUnbind pu richiedere di far sopravvivere il servizio in uno stato dormiente anche se non ci sono connessioni attive in questo caso nuove richieste di connessioni si produrranno in chiamate alla callback onRebind Per Android un Servizio non interrompibile se utilizzato dall attivi t in primo piano nel sistema oppure quando sono in esecuzione una delle sue callback che marcano il ciclo di vita onCreate onStart onDestroy onBind onUnbind onRebind Broadcast Receiver life cycle Un Broadcast Receiver possiede una sola callback onReceive Context intent alla quale affidato il compito di reazione all evento configura to L intervallo di esecuzione di questa callback viene considerato come il solo non interrompibile da Android Per tutto il resto del tempo questo componente se risiede in un processo non attivo pu essere terminato per liberare memoria Dato che l esecuzione della callback deve essere il pi possibile veloce al trimenti il main thread del processo nel quale risiede ne viene bloccato 32 2 2 Architettura e che thread creati da questo componente non sono considerati attivi t protette da Android elaborazioni di risposta ad eventi che richiedono tempo dovrebbero essere eseguite da un servizio accessorio 2 2 7 Processie ciclo di vita dei componenti Nel caso l
82. a con una architettura multi layer a componenti mo strata in figura 2 1 ed analizzata qui nel dettaglio 2 2 1 Kernel Level Come scritto in precedenza Android basato sul sistema operativo Linux 2 6 con alcune estensioni per questo lo stack Android detto Linux derived invece di Linux based Linux fornisce una solida base alla piattaforma Android fornisce mo delli consolidati nella gestione dei processi della mernoria dei driver di periferica supporta librerie condivise ed implementa un ottimo modello di sicurezza basata su permessi Inoltre supporta una grande quantit di piattaforme hardware consolidate ed facilmente portabile in quelle ancora in sviluppo disponendo di una grossa comunit di sviluppatori continuamente attiva nell evolvere il sistema operativo per mantenerlo al passo con i requisiti delle moderne tecnologie Linux per sviluppato principalmente per servire sistemi informatici con capacit computazionali elevate e senza particolari limiti nel con sumo di energia fattore limitante per il target dei dispositivi mobili Per migliorare la gestione dell energia e per implementare le funzionalit criti 16 2 2 Architettura APPLICATIONS Contacts Phone Browser APPLICATION FRAMEWORK Window Content View Notification CW icy Managed Manager Providers System Manager Telephony Resource Location Manager Manager Manager GTalk Service LIBRARIES ANDROID RUNTIME n Surface Manager Medi
83. a il tag dei moduli per la loro inclu sione nello stack genrato I comandi make e make eng producono lo stesso effetto droid un alias di eng Vengono impostate le seguenti variabili di default ro secure 0 Le applicazioni non certificate possono eseguire nel lo stack ro debuggable 1 E generato il server adb e viene attivato di default user Con make user viene generata la versione finale dello stack Ven gono installati i soli moduli taggati user e quelli non taggati ma inclusi nelle specifiche di prodotto scelto Vengono impostate le seguenti variabili di default ro secure 1 Le applicazioni non certificate non possono eseguire nello stack ro debuggable 0 E generato il server adb ma viene disabilitato di default userdebug Con make userdebug viene generata una versione simile a user contenente inoltre i moduli taggati debug Vengono impostate le seguenti variabili di default ro secure 1 Le applicazioni non certificate non possono eseguire nello stack ro debuggable 1 E generato il server adb e viene attivato di default 170 7 3 Personalizzare il processo di build per la board Armadillo 500 Per non utilizzare nella versione scelta moduli compilati con altri modificatori necessario eseguire cd SPRJROOT android sources make installclean che provveder a pulire le directory di output del prodotto Android scelto senza eliminare file binari intermedi all inter
84. a piat taforma principale Maemo gi matura e montata su diversi device presenti nel mercato Con l acquisizione di Trolltech nel 2008 Nokia ha preso le redini della piattaforma Qtopia ora Qt Extended e pi 11 Sistemi Embedded e Mobile Devices importante dell intero sviluppo delle librerie grafiche Qt sulle quali prevista la migrazione della piattaforma Maemo Motorola Prima azienda ad aver portato Linux nei mobile devices specie nel mercato asiatico con la piattaforma MOTOMAGX basata su Mon taVista Linux Successivamente nel 2007 assieme a NEC NTT Do CoMo Panasonic Mobile Communications Samsung Electronics e Vo dafone ha fondato la LiMo Foundation con l obbiettivo di sviluppare una piattaforma Linux based globalmente competitiva e sviluppare standard di interoperabilit tra le diverse piattaforme Linux Access Azienda giapponese che nel 2005 ha acquisito con PalmSour ce la piattaforma PalmOS attraverso la quale ha sviluppato il pro prio Mobile OS ACCESS Linux Platform Access fa parte della LiMo Foundation e la sua piattaforma ne conforme alle specifiche di interoperabilit Android 2 Android la piattaforma open source Linux derived studiata in questo lavoro di tesi Supportata da Google assieme a diverse aziende importanti di sviluppo hardware e software ed operatori mobili riuniti nella Open Handset Alliance grazie alla spinta di questo ecosistema al modello di sviluppo adottato ed alla libert
85. a propria applicazione ad altre applicazioni Nel momento in cui venga richiesto uno specifico componente di una ap plicazione Android fa si che il processo legato a questa sia in esecuzione iniziandolo se necessario 2 2 4 Il file Manifest Ci che da ragione al contenuto di un pacchetto apk il file Android Manifest xml al suo interno Il file Manifest descrive tramite codice XML 27 Android tutto ci che contiene il pacchetto apk e Le risorse immagini audio video stringhe e I vari componenti dell applicazione riuniti per tipologia Nella lista delle attivit deve essere esplicitata quella principale ed in genere per ogni componente vengono esplicitati gli intent filter metadati che identificano le capacit esposte dal componente specifico cos che un applicazione esterna possa accedervi attraverso una ricerca per capacit e I permessi che l applicazione si aspetta gli vengano assegnati di accesso ai specifici servizi tramite ID di gruppo condivisione di risorse con applicazioni specifiche etc e Le librerie oltre alle Core Libraries necessarie all applicazione Per una descrizione approfondita dei file Manifest di Android si faccia riferimento alla documentazione online 37 2 2 5 Attivit e componenti affini Le attivit nell ambiente di esecuzione Dalvik vengono individuate comu nicando al server Activity Manager oggetti di tipo Intent Ci significa che dall attivit princ
86. abilit con quelle esistenti 13 Sistemi Embedded e Mobile Devices Operator Value Add Value Line M Enabling Middleware Value Line Building Blocks NEED WE h Mobile Linux Operating System b Hardware and Device Drivers Figura 1 3 Posizione della value line all interno dello stack software di un Mobile OS La rappresentazione a piramide da un indicazione della quantit di ore uomo richieste nello sviluppo dei vari layer nello stack 14 Capitolo 2 Android Sviluppato inizialmente all interno di Google e promosso da una delle maggiori alleanze del settore la Open Handset Alliance Android una piattaforma completa ed innovativa per dispositivi mobili rilasciata con licenza open source ad Ottobre 2008 Il concetto importante che sta alla base dello sviluppo di Android rias sunto dalla parola Open Android aperto ad ogni livello della sua archi tettura utilizza Linux come Base System OS per una maggiore portabili t il framework di librerie costituito da un mix tra progetti open source esterni e componenti interni rilasciati anche questi con licenza open in fine le applicazioni vengono sviluppate in un modello collaborativo mai visto prima ogni applicazione libera di utilizzare tutte le funzionalit presenti nella piattaforma senza differenze tra applicazioni base di An droid e quelle prodotte da singoli sviluppatori Inoltre ogni applicazione formata da componenti
87. al classes for QueuedEvent below public static final int CLASS CONFIGURATION CHANGED 0x10000000 diff git a include ui EventHub h b include ui EventHub h index 3848d8c 280959c 100644 a include ui EventHub h b include ui EventHub h 52 7 52 8 public CLASS_KEYBOARD 0x00000001 CLASS_ALPHAKEY 0x00000002 CLASS TOUCHSCREEN 0x00000004 Shttp code google com p patch hosting for android x86 support 176 7 4 Problemi e Soluzioni CLASS_TRACKBALL 0x00000008 CLASS_TRACKBALL 0x00000008 CLASS MOUSE 0x00000010 uint32_t getDeviceClasses int32_t deviceld const Ed inserisce le azioni da intraprendere nel caso il mouse generi eventi nei due file frameworks base libs ui EventHub cpp e frameworks base services java com android server KeyInputQueue java similmente alle risposte agli eventi generati da dispositivi trackball Infine il server WindowManager viene modificato per visualizzare a schermo il puntatore del mouse nel file frameworks base services java com android server WindowManagerService java viene creato un oggetto Surface tale da disegnare a schermo un triangolo translucido che segue la posizione assoluta raggiunta dal puntatore La patch Android Add mouse support Event and Cursor patch allegata a questo documento e deve essere applicata al repository android sources frameworks base 177 Android su piattaforma Freescale i MX31L 178
88. amento del frame nello schermo il quale pu uscire dall Area visualizzata Per posizionare correttamente il frame nell area visibile e non distorta cromaticamente si pu intervenire nei tempi di traslazione left trightstuptdown Che in unit pixel sono chiamati anche margini del frame Tutte queste grandezze unite al tempo utile dei dati visualizzati a schermo sono legate dalle seguenti equazioni 1 Fframe TuS tup trow Throws tdown trow lleft Mpixels Upizel tright 126 6 3 Fasi del porting Sincronizzazione di frame VSYNC Pixel HSYNC Area di Aree dello schermo sincronismo Area di Retrace disegno Orizzontale Area visualizzata Retrace erticale Figura 6 1 Andamento temporale dei segnali di sincronizzazione nello standard VGA 127 Linux su piattaforma Freescale i MX31L Dove Fframe Frequenza di aggiornamento del frame trow Periodo di ag giornamento di riga e t xe Periodo di pixel sono standardizzati per le differenti risoluzioni video esistenti Parametri del drivermx3fb c La struttura che determina i possibili parametri del driver mx3fb definita nel file header seguente Listing 6 17 arch arm plat mxc include mach mx3fb h ifndef ASM ARCH MX3FB _H__ define ASM ARCH MX3FPBH include linux device h include lt linux fb h gt Proprietary FB SYNC flags define FB SYNC OE ACT HIGH 0x80000000 define FB_SYNC_CLK_INVERT 0x40000
89. assegnazione in una tabella di allocazione propria di piattaforma mxc pin alloc map e ne imposta uno ad uno la funzione richiesta in tervenendo nei registri di configurazione del IOMUX Controller interno all Application Processor 33 Cap 4 con il metodo mxc iomux mode Gli id che identificano ogni pin del processore sono definiti nel file header 112 6 3 Fasi del porting arch arm plat mxc include mach iomux mx3 h assieme alle macro di modificazione della funzione Registrare i due dispositivi nel driver model Linux A questo proposito esiste la funzione int _ init mxc register device struct platform device pdev void xdata Wrapper della funzione standard int platform device register struct platform device xpdev Dove il dispositivo di piattaforma descritto da una struttura platform device definita come struct platform device const char name int id struct device dev u32 num resources struct resource resource struct platform device id id entry arch specific additions struct pdev archdata archdata I membri di questa struttura rilevanti nella registrazione di un dispositivo di piattaforma sono nome di dispositivo permette di ricercare il driver corretto tra quelli registrati e id specifica nel caso siano disponibili pi dispositivi dello stesso tipo quale deve essere considerato 1 se la scelta univoca Le risorse elencate in un array di dimension
90. atch filtra non solo nel set di patch quelle che intervengono nelle due directory ma anche le patch stesse eliminando gli interventi congiunti in altre porzioni del kernel rendendo cosi il risultato inconsistente Applicare il set di patch ottenuto Dopo un analisi a mano del set ottenuto in precedenza Qgit nel risolvere gli eventi di merge tra due branch avvenuti nel range di patch selezionato crea oltre alla serie di patch selezionate l intera serie del branch di merge sovrapponendole e possibile procedere nell applicazione delle patch In allegato a questo documento sar presente la directory platformPatches contenente la serie consistente Per applicarla si esegua lo script seguente da salvare nel la directory kernelAndroidArmadillo500 1inux 2 6 dove stata precedentemente copiata plat formPatches Listing 7 2 updatePlatform sh bin bash git reset hard android done cat platformPatches patch git am k 3 cp platformPatches Kconfig arch arm mach mx3 git add arch arm mach mx3 Kconfig git commit m Kconfig merge cat platformPatches armadilloSpec git an k 3 A questo punto il kernel contenuto nel repository locale kernelAndroidArmadillo500 1inux 2 6 pronto per poter essere configurato e compilato 7 2 3 Configurare il kernel Android ottenuto Per configurare il kernel Android ottenuto si esegue cd SPRJROOT kernelAndroidArmadillo500 linux 2 6 make menuconfig 164
91. azione del problema posto nell ambito dei Sistemi Embedded e pi specificatamente in quello dei Mobile Devices Nel Capitolo 2 vi una presentazione approfondita del Sistema Operativo Android del lato tec nico Architettura Modello delle applicazioni etc e della della filosofia che Android porta con se nella licenza di distribuzione e nel modello di businness applicato I Capitoli 3 e 4 descrivono del dettaglio l architettu ra dell Application Processor montato nella board Atmark Armadillo 500 presentata a sua volta nel Capitolo 5 Successivamente si entra nella fase operativa del progetto svolto nel Capitolo 6 viene trattato lo sviluppo del livello di astrazione software per il kernel Linux a supporto della Board Atmark Armadillo 500 Il codice prodotto stato sottoposto a review da parte della comunit open source e ora presente nei sorgenti pubblici del main line kernel Il Capitolo 3 INDICE 7 tratta infine della fusione dello strato software creato con il branch Android del kernel Linux e la generazione di una versione personalizzata della piattaforma Android per la board di sviluppo Armadillo 500 I Capitoli 8 e 9 terminano la trattazione del presente lavoro di Tesi pre sentando e commentando i risultati ottenuti Capitolo 1 Sistemi Embedded e Mobile Devices I sistemi embedded hanno ormai consolidato un ruolo importante nel la nostra vita quotidiana rappresentano la classe dei computer proget tati
92. bug Linus Torvalds categorico nella sua mail a riguardo 47 Linux non contiene e non vorr mai contenere un modulo kernel debugger che permetta l esecuzione step by step delle istruzioni alla ricerca della sola che produce il bug Le motivazioni sono nobili mirano ad una maggiore conoscenza e con sapevolezza dei meccanismi interni del kernel da parte degli sviluppatori rispetto alla mera analisi delle interazioni tra righe di codice Il risultato di questa linea di pensiero che l unica via software possibile per tracciare l esecuzione del kernel l output nella console di sistema ottenuto tramite chiamate alla funzione printk oppure bug trace di eventi oops o kernel panic 20Esistono dei casi in cui la console un lusso che lo sviluppatore non pu permetter si principalmente nello sviluppo di un nuovo hardware abstraction layer quando ancora non possibile instaurare una connessione seriale allora attraverso hardware debug in 85 Linux su piattaforma Freescale i MX31L 6 1 4 1 Early debug Con Early debug si intende il tracciamento dell esecuzione del kernel tramite stringhe di output nella prima fase di boot dove ancora non stata caricata la console di sistema ed il canale di comunicazione tra macchina host di analisi e macchina target dove sta eseguendo la versione di test del kernel la sola connessione seriale standard RS232 Come descritto nella sezione 6 1 3 le prime stringhe di debug
93. c iomux set pad MX31 PIN SRXD3 USB PAD CFG mxc iomux set pad MX31 PIN STXD3 USB PAD CFG mxc iomux set gpr MUX PGP UH2 true Enable the chip gpio request USBH2 CS USB H2 CS gpio direction output USBH2 CS 0 Enabled H2 phy reset gpio request USBH2 RESET USB H2 RESET if gpio direction output USBH2 RESET 1 HIGH pr warning Failed to reset usbh2 phy in return 1 gpio_set_value USBH2_RESET 0 OW msleep 5 gpio_set_value USBH2 RESET 1 HIGH tttttttttttt ttttit iti return 0 static struct mxc_usbh_platform_data usbotg_pdata init usbotg_init portsc MXC EHCI MODE ULPI MXC EHCI UTMI 8BIT flags MXC EHCI POWER PINS ENABLED static struct mxc_usbh_platform_data usbh2_pdata init usbh2 init portsc MXC EHCI MODE ULPI MXC EHCI UTMI 8BIT flags MXC EHCI POWER PINS ENABLED RIC over I2C define ARMADILLO5X0_RTC_GPIO IOMUX TO GPIO MX31 PIN SRXD4 393 6 519 15 static void X init armadillo5xO init void if armadillo5x0_i2c_rtc irq 0 pr warning armadillo5xO init failed to get RIC IRQWM i2c register board info 1 amp armadillo5bxO i2c rtc 1 USB usbotg pdata otg otg ulpi create amp mxoc ulpi access ops USB OTG DRV VBUS USB OTG DRV VBUS EXT usbh2 pdata otg otg ulpi create amp mxc ulpi access ops USB OTG DRV VBUS USB OTG DRV VBU
94. cata l immagine del kernel cosi ottenuta nella board come descrit to nel paragrafo 6 2 8 e dato il comando di boot si potranno vedere nel terminale minicom le prime righe di debug del kernel riguardo l inizializ zazione della CPU ed operazioni iniziali fino all errore fatale riguardo la mancanza di una console di sistema 6 3 2 Console attraverso la porta seriale Il kernel necessita della console di sistema innanzitutto per presentare l output di debug e successivamente per poter instaurare una possibile interfaccia interattiva di controllo per l utente Per la piattaforma MXC stato sviluppato da Sascha Hauer lt sa scha saschahauer de gt il driver drivers serial imx c a supporto dei dispositivi UART della famiglia di Application Processor i MX che oltre ad abilitare il canale di comunicazione seriale implementa le API di console di sistema permettendo cosi la comunicazione di debug e controllo da e per la macchina target Per far si che il kernel riconosca e configuri correttamente i due dispositivi seriali UART1 e UART2 vedi la sezione 5 1 2 necessario Configurare correttamente le funzioni dei pin di comunicazio ne associati ai due device UART Per questo esiste la funzione di piattaforma int mxc iomux setup multiple pins unsigned int xpin list unsigned count const char label Definita nel file arch arm plat mxc include mach iomux c che da to in ingresso un array di identificatori di pin pin list ne regi stra l
95. cchetto apk Android Package E questa la forma in cui una applicazione pu essere distribuita ed installata in un dispositivo reale Ogni applicazione in esecuzione nel sistema operativo se lanciata esegue in un proprio processo Linux in seno a una propria istanza JVM priva ta lo User ID del processo viene assegnato da Android in modo univoco nell insieme dei processi in esecuzione se non esplicitamente definito e i permessi dei file vengono impostati cosi che ogni applicazione non possa accedere direttamente a risorse non proprie Componenti di una applicazione Una caratteristica fondamentale del modello applicativo Android la pos sibilit di rompere i confini delle singole applicazioni considerando que ste un insieme di componenti riutilizzabili o sostituibili Il vantaggio fi nale e la velocit di sviluppo chi scrive codice per Android non deve re implementare tutto da capo ma puo avvalersi di componenti gi presen ti e disponibili nel sistema richiamandoli al momento giusto Per questo una applicazione non contiene un main entry point metodo main ma 26 2 2 Architettura costituita da un insieme di componenti collegati tra di loro sviluppati per eseguire un determinato compito Esistono quattro tipologie di componenti Activities Una attivit presenta un interfaccia all utente da disegnare in una singola finestra per uno scopo specifico come visualizzare un gruppo di immagini scegliere un o
96. celto di creare uno script di inizializzazione chiama to android sh che verr via via riempito con le configurazioni di am biente necessarie da eseguire nella shell corrente qualora si intendesse utilizzarla per lo sviluppo mkdir bin touch bin android sh chmod x bin android sh Il file android shinizialmente verr definito cosi Listing 6 2 android sh Forma iniziale bin bash Directory dove risiedono tool eseguibili privati export PATH S PATH S HOME bin Shell di lavoro bash 89 Linux su piattaforma Freescale i MX31L Aprendo una shell per inizializzare l ambiente di lavoro baster esegui re bin android sh Note sugli script per shell bin bash deve essere sempre la prima riga di uno script shell Le variabili di ambiente sono definite in una shell Linux in questo modo VARIABILE Valore e vengono richiamate con il modificatore echo VARIABILE Valore Per creare una nuova variabile in una sola riga echo FRANKY Franky Franky Mentre per valutare espressioni aritmetiche echo FOUR 4 2 6 La keyword export invece ampia la visibilita della variabile esportata al trimenti locale alla shell di creazione a tutti i processi figli della presente shell 6 2 1 Posizione del progetto La directory root del progetto deve essere accessibile in lettura e scrittura e risiedere in una partizione abbastanza capiente da contenere tutti i s
97. che un meccanismo di gestione condivisa della memoria con device esterni Sono supportati device di memoria ad alta velocit come SRAM SDRAM fino a 133MHz PSRAM fino a 133MHz DDR SDRAM fino a 266MHz di data rate Inoltre sono presenti i moduli di interfaccia verso dispositivi di memorizzazione di massa quali dispositivi Flash NAND supporto per chip a 8 e 16 bit fino a 2 GByte di spazio indirizzabile ed presente un buffer interno di 2 KByte per l accesso veloce SmartMedia Card e PCMCIA release 2 1 4 5 Clock e Power Management I processori i MX31 e i MX31L possiedono un albero dei clock relativa mente complesso capace di fornire ogni unit funzionale della frequenza di clock adatta gestito tramite il modulo Clock Control Module CCM Per migliorare l efficienza energetica dell Application Processor sono state implementate le due tecniche frequency scaling e power gating La frequenza di funzionamento della Microcontroller Unit MCU pu es sere adattata al carico di lavoro corrente frequency scaling grazie alla possibilit di eseguire lo switch run time della sorgente alla radice del percorso di generazione ed il passaggio attraverso un clock divider del segnale prima dell ingresso nella MCU Per migliorare ulteriormente l efficienza energetica sono stati definiti 3 domini di Power gating indipendenti Piattaforma ARM11 Core ARMI1 50 4 6 Multiplexing GPIO e Pad Control MMU Caches DPLL Cloc
98. cifica dei Controller i MX compresa la funzionalit OTG ed il supporto all interfaccia ULPI verso i transceiver OTG NXP ISP 1504 146 6 3 Fasi del porting USB in Linux Stack software lato Host 12 In Linux lo stack software USB Host si presenta come in figura 6 3 sora a N ica user space 4 class drivers vendor spec ts USB device i drivers 0 a x x USB BUS driver USB Host Controller drivers USB Hardware USB 2 0 Figura 6 3 Linux USB Host Stack usbcore Il modulo usbcore rappresenta il layer di astrazione per i dri ver di dispositivo verso le differenti implementazioni dello standard USB L interfaccia verso lo strato superiore viene detta usb driver framework ed stata definita in base al modello di descrizione dei dispositivi usb usb device model device drivers Moduli software che rendono utilizzabili i dispositivi USB all utente I driver USB vengono sviluppati in relazione ad una de terminata classe di dispositivi del device model implementando la relativa interfaccia usbhcd Driver di gestione del controller hardware Implementa una spe cifica interfaccia usb EHCI OHCI UHCI per la gestione della comu nicazione sul bus USB Si serve di codice specifico per le operazioni di inizializzazione e gestione del controller hardware installato 147 Linux su piattaforma Freescale i MX31L Stack software lato Device 15 Data la crescente complessit dei sistemi
99. clude mach mmc h board specific SDHC data optional If not present a writable card with 3 3V is assumed struct imxmmc_platform_data Return values for the get_ro callback should be O for a read write card 1 for a read only card ENOSYS when not supported equal to NULL callback or a negative errno value when something bad happened int get ro struct device board specific hook to de initialize the SD slot The board code can call handler on a card detection change giving data as argument int init struct device dev irq handler t handler void data void exit struct device dev void data available voltages If not given assume MMC VDD 32 33 MMC VDD 33 34 unsigned int ocr_avail adjust slot voltage void setpower struct device unsigned int vdd Le due funzioni init ed exit permettono di allocare e deallocare dina micamente le risosrse GPIO e IRQ necessarie alle attivit del driver nel suo ciclo di vita che sono Gestione dell evento card detect L alloggiamento montato possiede un semplice circuito elettrico capace di segnalare la presenza o meno di una scheda di memoria SD MMC Il segnale generato connesso al pin MX31 PIN ATA DMACK dell Application Processor e dovr essere gestito come sor gente di interrupt per i due fronti di salita e di discesa del segnale attraverso la routine handler data Analisi dello stato
100. critture di byte half word word e double word con buffer per modulo dedicati e che richiedano almeno due cicli di clock per la lettura e tre cicli di clock per la scrittura 4 8 Shared Peripheral Bus Arbiter SPBA L SPBA un modulo di interfaccia tre a uno per bus SkyBlue line capace di arbitrare l accesso al singolo bus delle periferiche da parte di massimo tre linee di controllo con un meccanismo di resource locking della singola periferica al master bus corrente 51 L Application Processor Freescale i MX31L SDHC2 UART3 e cse ARM11 SPBA sips module en 31 0 obsc0 Interrupt to Controller obsc31 Figura 4 2 Shared Peripheral Bus Arbiter SPBA Dato che il bus SkyBlue line di tipo single master l accesso contempora neo da parte della Microcontroller Unit ed il modulo SDMA alle periferiche deve avvenire tramite un interfaccia capace di multiplarne adeguatamen te le attivit Il modulo SPBA da la possibilit di accedere ai master bus fino a 31 periferiche in modo condiviso il modulo SPBA pu essere con siderato la 32 esima periferica con una frequenza di funzionamento fino a 67 MHz 4 9 Smart Direct Memory Access Controller Modulo di gestione del sottosistema DMA capace di liberare il core cen trale dalle operazioni di trasferimento dati sequenziali tra memoria e memoria o tra periferiche on chip e memoria 52
101. d Hermit AT di instaurare una connessione Trivial ftp attraverso la rete per scaricare un determinato file immagine dalla workstation e scriverlo nella regione di memoria indicata Per poter eseguire questo comando la board deve essere connessa alla rete di sviluppo attraverso l interfaccia ethernet hermit tftpdl 192 168 0 10 192 168 0 2 userland linux bin gz I parametri del comando hanno il seguente significato 1 Indirizzo IP utilizzato dalla board 2 Indirizzo IP del server TFTP workstation 3 Path del file da scaricare nella regione indicata della memoria NOR Flash regione path Il path relativo rispetto alla directory root del server TFTP Il nome di regione identifica una delle seguenti partizioni della memoria NOR Flash del modulo CPU 68 5 2 Il boot loader configurazione del sistema tra boot differenti Regione Descrizione Dimensione all Per sovrascrivere l intera memoria 16 MB Prima area contiene Hermit At bootloader Errori di scrittura in quest area richiedono 128 KB una procedura di recovery particolare T Regione dove risiede il kernel in formato 2 MB zImage seland Pu contenere un file ramfs in formato 13 75 MB compresso cone Area ideata allo scopo di memorizzare i file di 128 KB Tabella 5 1 Partizioni della memoria flash NOR del modulo CPU Di seguito presentato il log di una normale trasmissione tftp Listing 5 1 Log di una normale trasmission
102. di appli cazioni Android disponibile per tutte le maggiori piattaforme PC Linux Windows e MAC nel sito ufficiale L SDK contiene Un emulatore di handset Android viene utilizzato Qemu per creare un ambiente di emulazione dell architettura ARMv5 Vengono fornite quindi le immagini del kernel sviluppato ap positamente versioni goldfish ed un root filesystem conte nente lo stack Android Librerie di sviluppo nel pacchetto sono presenti le librerie Android com plete in formato jar In questo modo possibile compilare una applicazione con l SDK Java fornito da sun I binari ver ranno poi tradotti nel formato dex e poi uniti nel pacchetto http developer android com sdk 8http www nongnu org qemu 34 2 3 Android SDK apk per l installazione e l esecuzione nell emulatore Una applicazione sviluppata tramite SDK pu essere eseguita in un qualsiasi dispositivo reale Debugger L SDK contiene l utility Android Debug Bridge adb Documentazione Esempi e Tutorial Tutte le informazioni necessarie per iniziare a sviluppare applicazioni per Android Il modo pi semplice di utilizzare SDK Android attraverso il Plugin Eclipse acfADT scaricabile dalla stessa posizione indicata per l Android Software Development Kit 2 3 1 Personalizzare le versione di Android eseguita dall emu latore Successivamente l installazione dell Android Software Development Kit nella workstation si dispone di Qemu un emula
103. di opzio nali chiamati solamente nel caso le transazioni dell attivit avven gono per cause dipendenti dal sistema operativo e non per azioni specifiche dell utente In questo caso l attivit pu trovarsi negli stati Paused o Stopped vulnerabile alla terminazione da parte di Android in mancanza di memoria disponibile L utente non ha voluto chiudere l applicazione per cui si aspetta che riportandola nello stato Running navigando nello stack delle attivit aperte presenti lo stesso stato volatile del l interfaccia grafica lasciata in precedenza Allora onSaveInstanceState ha il compito di salvare lo stato vo latile dell attivit in un oggetto di tipo Bundle sequenze di chiavi e valori affidato al server Activity Manager che provveder a passarlo come parametro del metodo onRestoreInstanceState chiama to nel processo di riattivazione dell attivit dopo che questa stata distrutta Service Come le attivit anche i servizi possiedono metodi che ne caratterizzano la posizione all interno del loro ciclo di vita In Android esistono due modalit per usufruire di un servizio a seconda della complessit di interazione voluta Semplice Nel caso non sia necessario interagire con il servizio tramite metodi di interfaccia oppure il servizio non ne implementa affatto una In questo caso un componente pu creare il servizio con Context startService Intent service Activity Manager provveder a chiamare in sequenza
104. dica la presenza statica nell immagine finale mentre il simbolo M indica la creazione di un modulo esterno che il kernel potr caricare durante l esecuzione Configurato il kernel il processo di build deve essere istruito per utiliz zare la cross toolchain corretta creata precedentemente Per questo deve essere impostata la variabile d ambiente CRPSS_COMPILE toolchain prefix con toolchain prefix prefisso completo dei binari della toolchain Dato che queste due variabili sono globali a tutto il progetto vengono inserite in android sh con le righe Listing 6 5 android sh Configurazione dell ambiente di compilazione ARM export PATH PATH S PRJROOT build tools bin Per compilare kernel ARM export ARCH arm export CROSSCOMPILE SPRJROOT tools OSELAS Toolchain 1 99 3 arm 1136jfs linux gnueabi gcc 4 3 2 glibc 2 8 binutils 2 19 kernel 2 6 27 sanitized bin arm 1136jfs linux gnueabi Shell di lavoro Una volta impostate correttamente le variabili d ambiente il kernel pu essere compilato make Al termine del processo di build in PRJROOT kernelLinus linux 2 6 arch arm boot sar presente il file zImage immagine compressa del kernel da scaricare nella macchina target mentre i moduli creati dovranno essere installati nella root directory scelta SPRJROOT root fs con 99 Linux su piattaforma Freescale i MX31L make modules install INSTALLMODPATH SPRJROOT rootfs 6 2 6 Creare un root filesyst
105. dice di piattaforma sviluppato Questa sequenza stata applicata al repository locale del branch mxc master del kernel Linux5 a partire dalla versione 2 6 29 Ogni fase ha prodotto patch specifiche che dopo il processo di review del gruppo MXC della comunit ARM Linux sono state inserite nel repository Pengutronix ed hanno proseguito la strada verso il mainline kernel Le piattaforme simili presenti nella sottodirectory del kernel tree arch arm mach mx3 ed i sorgenti del branch Atmark del kernel sono state utili linee guida per il lavoro svolto e qui documentato 6 3 1 Early support Come mostrato nella sequenza di boot su architettura ARM nella sezione 6 1 3 il kernel utilizza il parametro id di macchina MACH TYPE per ricer care una struttura dati di tipo machine desc che contenga il codice di inizializzazione della piattaforma hardware presente La struttura dati machine desc definita nel file arch arm include asm mach arch h Listing 6 7 arch arm include asm mach arch h arch arm include asm mach arch h This program is free software you can redistribute it and or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation Copyright C 2000 Russell King ifndef _ ASSEMBLY _ Si faccia riferimento alla sezione 6 2 2 per l inizializzazione di questo repository 3lnttp download atmark techno com armadillo 50
106. do della board data da BusyBox Wake on Lan Il controller Lan SMSC 9118 prevede un secondo segna le di interrupt chiamato PME rRQ Power Management Event Interrupt per implementare il meccanismo Wake on Lan nel caso di attivit di rete ricevuta mentre il sistema si trova nello stato di risparmio energetico Dato che il driver smsc911x c non implementa le funzionalit di Power Management di Linux questo segnale non stato considerato 6 3 4 SDHC MMC Raggiunta linterattivit del sistema si procede nel supporto dei dispositivi di piattaforma In riferimento alla sezione 5 1 4 la board monta un alloggiamento per schede di memoria SD MMC collegato al primo Host Controller SDHC del l Application Processor i MX31 vedi la sezione4 14 supportato dal driver in kernel drivers mmc host mxcmmc c gi abilitato alla compilazione Risorse del dispositivo Essendo un dispositivo di piattaforma nel file arch arm mach mx3 devices c sono presenti i descrittori mxcsdhc device0 e mxcsdhc devicel per i due controller SDHC com pleti delle risorse utili che sono l area di memoria dei registri di con figurazione dei singoli controller e le singole sorgenti di interrupt per i trasferimenti di dati in DMA 120 6 3 Fasi del porting Parametri del driver La struttura che determina i pos sibili parametri del driver mxc mmc definita nel file arch arm plat mxc include mach mmc h Listing 6 15 Estratto del file arch arm plat mxc in
107. do di pilotare fisicamente il canale di comunicazione secondo un determinato standard PSRAM Pseudostatic RAM RAM dinamica che incapsula circuiti di refresh ed accesso di modo da potervi accedere come SRAM RTC Real Time Clock Modulo hardware capace di mantenere l orologio di sistema Attivo anche se il sistema spento grazie ad una batteria di riserva ed un circuito di clock indipendente SDC Synchronous Display Controller SDHC Secured Digital Host Controller SDK Software Development Kit SDMA Smart Direct Memory Access SIMD Single Instruction Multiple Data Aritmetica che permette eseguire con un unica istruzione la stessa operazione su un numero di dati diversi 2 4 SIR Serial Infrared Speed Fascia di velocit di trasferimento per connessioni IrDA supportate da una normale porta seriale UART 9600 bit s 19 2 kbit s 38 4 kbit s 57 6 kbit s 115 2 kbit s SMC SmartMedia Card Standard Toshiba per memorie flash SOC System on Chip SoM System on Module SPBA Shared Peripheral Bus Arbiter 192 ELENCO DEGLI ACRONIMI SSI Synchronous Serial Interface TCM Tightly Coupled Memory TCP Transmission Control Protocol TLB Translation Look aside Buffer Tabella di riferimento per la traduzione da indirizzi virtuali a fisici utilizzata dalla MMU per accedere alla cache di sistema UART Universal Asynchronous Receiver Transmitter Dispositivo capace di gestire I O seriali come una connessione attraverso la po
108. droid Paused ha perso il fuoco ma ancora visibile all utente Accade quando un altra attivit viene mostrata sopra la prima con una finestra trasparente o che non copre l intero schermo Una attivit in pausa pu essere distrutta solamente in caso di estrema mancanza di memoria Stopped stata completamente oscurata da un altra attivit In caso di mancanza di memoria sono innanzitutto queste le attivi t che vengono sacrificate per prime Activity Manager permette alle attivit di avere coscienza delle proprie transizioni di stato chiamando i metodi seguenti nell ordine mostrato in figura 2 5 29 Android void onCreate Bundle savedInstanceState Metodo che ha il com pito di inizializzare tutti gli oggetti necessari all attivit L oggetto savedInstanceState lo stesso che riceverebbe la fun zione onRestoreInstanceState nel processo di riattivazione del la attivit void onStart Chiamato subito prima della visualizzazione dell attivi t seguito da onResume se la transazione pu procedere oppure da onStop in caso di problemi Assieme a onStop delimita la porzione visibile del ciclo di vita dell attivit per questo dovr essere utilizzato per creare ed acqui sire tutte quelle risorse necessarie alla visualizzazione della stessa come la creazione di Broadcast Receiver che avranno impatti nella User Interface void onRestart Chiamato all inizio della transazione dallo sta
109. dulo External Memory Interface EMI e fornisce supporto al la connessione di periferiche esterne quali schede di rete wired wireless Compact Flash Card ed altre 4 16 Il modulo Watchdog Il modulo Watchdog fornisce un metodo per recuperare il controllo del sistema nel caso questo non risponda per un determinato periodo di tem po Periodo di Watch Entrambe le variabili periodo di controllo e azione eseguita sono programmabili Periodo di Watch Programmabile nel campo 0 5 64 s con risoluzione 0 5s Azione al termine In caso di timeout il modulo watchdog puo essere programmato per eseguire le seguenti azioni in modo incrementale 1 Generare un interrupt per gestire l evento via software 2 Reset dell Application Processor dopo un periodo di timeout successivo all istante di generazione dell interrupt 3 Reset dei device on board attraverso un pin esterno in seguito al reset dell Application Processor 4 17 Real Time Clock Il modulo Real Time Clock RTC serve a mantener aggiornato l orologio di sistema anche nello stato power down Oltre alla funzionalit di orologio ha la capacit di Generare un interrupt dopo un numero programmato di minuti Generare un interrupt allarme giornaliero ad un ora programmata Generare interrupt uno al giorno uno all ora uno al minuto uno al secondo 58 4 18 Immagini Video e Grafica 4 18 Immagini Video e Grafica Gli Application Processor i MX31 e i M
110. e ARMv3 Indirizzamento a 32 bit e migliore gestione delle eccezioni Variante T Set di istruzioni Thumb a 16 bit utilizzo pi efficien te della memoria e maggior throughput nel caricamento delle istruzioni Variante M Registri risultato a 64 bit per moltiplicazioni tra grandi numeri Standard nella versione v4 ARMv4 Istruzioni di lettura e scrittura di halfword 16 bit ARMv5 Miglioramenti dello switch tra modalit normale e Thumb Variante E Set di istruzioni DSP per moltiplicazioni veloci ed ope razioni aritmetiche con saturazione Variante J Accelerazione per l esecuzione nativa di bytecode Java Le varianti TEJ fanno parte dell architettura ARMv6 Gestione pi efficiente della Memoria Le performance di un sistema a microprocessore sono strettamente le gate all efficienza nell utilizzo della memoria parametri come il tempo medio di fetch di istruzioni e latenze di lettura scrittura di dati incidono fortemente nella velocit di esecuzione risultante oltre al risparmio di potenza dissipata dovuto alla riduzione degli accessi Le innovazioni portate dalla versione 6 sono 40 3 1 Architettura ARMv6 Cache TCM oltre al normale sistema di Cache L1 stata definita un a rea di memoria strettamente accoppiata con il core interno Tightly Coupled Memory gestita via software Pu essere utilizzata per cari care dati da elaborare in modo intensivo che non incorreranno nelle regole automatiche di aggiornam
111. e attraverso bus USB tra il sistema target che esegue Android e la workstation di sviluppo tramite il quale possibile installare ap plicazioni scambiare file ottenere le stringhe di log del sistema ed aprire una shell remota di comando Alarm Modulo creato per gestire a livello kernel la funzionalit di sveglia Se nella piattaforma hardware presente un orologio di sistema Real Ti me Clock RTC correttamente configurato questo potr essere istruito attraverso il modulo Alarm per riattivare il sistema ad un ora stabilita 20 2 2 Architettura 2 2 2 Framework Libraries Scritte in C C forniscono le funzionalit di base necessarie agli strati superiori ed implementano quei servizi per i quali le performance d ese cuzione sono un fattore critico del sistema Bionic Libc Implementazione personalizzata delle librerie C C ottimizzata per l uso nei sistemi embedded Le librerie Bionic sono state sviluppate per essere leggere e veloci imple mentando le sole funzionalit ritenute necessarie dello standard POSIX non esiste il supporto per le eccezioni in C per i caratteri wchar con cetto gi ampiamente sostituito dallo standard unicode e l implemen tazione della libreria pthread si mostra alleggerita di funzionalit non essenziali Oltre a voler essere uno strumento agile le librerie C C in Bionic libc sono state adattate al sistema operativo Android implementando fun zionalit specifiche co
112. e come stringhe icone file video audio proprie di Android riducendo gli sprechi di memoria attraverso un fruizione il pi possibile condivisa Content Provider Simile al Resource Manager fornisce un metodo uni ficato per accedere ai contenuti intesi come dati es contatti del 25 Android la rubrica o file multimediali memorizzati nel database di sistema accessibili localmente o via rete View System Gestisce l assemblaggio dei componenti grafici che an dranno a creare l interfaccia delle singole applicazioni Notification Manager Gestisce la presentazione all utente degli eventi Questi possono essere eventi di sistema Low battery oppure eventi creati appositamente da un applicazione messaggio in arri vo appuntamento La notifica viene presentata nella barra delle notifiche e pu avvalersi di suoni vibrazioni e grafica Inoltre sono presenti dei server di interfaccia verso i dispositivi hardware disponibili che sono Telephony Service Location Service GPS Bluetooth Service WiFi Service USB Service Sensor Service accelerometri com passo E grazie alle interfacce esposte da questi che le applicazioni possono accedere ai driver di periferica attraverso lo stack di sistema Modello delle Applicazioni 36 In Android le applicazioni sono scritte in linguaggio Java il bytecode com pilato e le risorse necessarie alla singola applicazione vengono riuniti con l ausilio del tool aapt in un pa
113. e di modifiche nel recente futuro Codec Audio Assente Grazie allo stato di supporto in kernel possibile dialogare con il codec audio attraverso il bus C e la relativa interfaccia Alsa di gestione low level presente e funzionale E necessario implemen tare pero il driver di collegamento tra l architettura high level Alsa e 180 8 2 Android nella board Atmark Armadillo 500 quella low level che utilizzi le funzionalit specifiche del processore AUDMUX SDMA Modulo Watchdog Assente Non presente in kernel un driver di gestione del modulo watchdog dell Application Processor i MX31 Questo impendisce all ambiente user space linux di operate il reset del sistema Sottosistema SDMA Assente Il modulo DMA interno all Application Processor i MX31 imple mentato attraverso un core uRISC vedi figura 4 3 Dato che nel l evoluzione degli Application Processors della famiglia i MX l archi tettura interna di tale core indipendente e quindi l interfaccia di comando esposta ha subito modificazioni significative specie dalla famiglia i MX2x al i MX31 ed ancora nel i MX35 non presente ancora nel mainline kernel il codice di supporto al modulo SDMA dell Application Processor i MX31 Come risultato le periferiche esterne che potrebbero usufruire del l architettura DMA per il trasferimento dati memory card SD MMC ATA etc impegnano in modo importante la CPU 8 2 Android nella board Atmark Armadillo 500
114. e num resources che possono indicare al driver l area di memoria dove sono mappati i registri di controllo e configurazione tag IORESOURCE MEM gli iden tificativi di interrupt assegnati tag IORESOURCE_IRO ed i buffer di memoria DMA associati tag TORESOURCE DM 32 I Lj archdata infine permette di passare al driver dei parametri specifici riguardo le modalit di interfacciamento hardware utilizzata 221 file include linux ioport h contiene le definizioni di tutti i possibili tag di risorsa espressi nel parametro 1ag della struttura resource 113 Linux su piattaforma Freescale i MX31L Una descrizione pi approfondita della gestione dei dispositivi di piatta forma pu essere trovata nel documento 9 parte della definizione del Linux Driver Model 14 Il codice di piattaforma definisce nel file arch arm mach mx3 devices c una specifica struttura platform device per ogni device interno agli Application Processor i MX31 completa delle risorse standard Allora per i due dispositivi UART1 e UART2 devono essere registrati i descrittori mxc_uart_device0 e mxc uart devicel Modifiche al codice di supporto Di seguito sono riportate le modifiche al file armadillo5x0 c Listing 6 13 armadillo5x0 01T0UART patch Kok ok ck ck ok ok ck ck ok SK ck ck LI wee 17 22 cn 17 23 include linux types h include linux init h include lt linux clk h gt include linux platfo
115. e on IMX serial port Mentre deve essere disabilitata l opzione di debug low level Kernel hacking Kernel low level debugging functions per evitare conflitti di scrittura nel canale seriale Compilato e scaricato il kernel cosi modificato come descritto nella fase precedente nel menu di Hermit deve essere impostato il parametro del kernel perch il nuovo driver selezionato venga utilizzato come console di sistema hermit gt setenv console ttymxc0 Procedendo con l operazione di boot della board si potranno vedere le stringhe di debug nella nuova console seriale fino all errore fatale riguar do la mancanza di un root filesystem valido 6 3 3 Rete Ethernet La board Armadillo 500 monta un controller ethernet SMSC Lan 9118 vedi la sezione 5 1 3 controller diffuso nei sistemi embedded e suppor tato dal driver in kernel drivers net smsc911x c 115 Linux su piattaforma Freescale i MX31L Gli schemi logici della main board 22 foglio 3 i datasheet del dispositi vo 18 e la memory map in appendice A forniscono la conoscenza neces saria per definirne le risorse ed i parametri di configurazione corretti del device Risorse del dispositivo Devono contenere la zona di memoria dove stato mappato lo spazio di indirizzamento dei registri interni del con troller e l identificativo di interrupt al quale stato connesso il segnale LAN_IRO Il controller SMSC 9118 mappato nella terza regione di espansione de
116. e proprio oppure in genere verso l interfaccia esposta da una famiglia di driver es per il compo nente Camera sono possibili le estensioni verso le interfacce v4l v412 2 2 3 Application Framework Strato in blu dello stack presentato in figura 2 1 Comprende tutti quei server in esecuzione nell ambiente Android sviluppati alla pari delle ap plicazioni che gestiscono attivamente funzionalit del sistema operativo Activity Manager Gestisce il ciclo di vita delle applicazioni e mantiene ordine nell insieme di quelle aperte attraverso stack dove possibile navigare nel caso si volesse tornare indietro premendo il tasto Back es Dalla Home apro E mail client per leggere le mail aperta una Mail voglio visualizzare il documento pdf allegato Tornare indietro dall applicazione Pdf viewer significa ripercorrere all indietro lo stack creato ritornando alla visualizzazione della Mail precedente Package Manager Utilizzato dal server Activity Manager per caricare le informazioni esposte dalle applicazioni nei propri file Manifest in terni ai pacchetti apk Mantiene conoscenza di tutte le applicazioni caricate e delle capacit pubblicate dalle stesse Window Manager Server che gestisce lo schermo Dato l insieme di ap plicazioni in esecuzione ne determina l ordine di visualizzazione da comunicare al server Surface Flinger Resource Manager Manager delle risorse di sistema Fornisce l inter faccia per acquisire risors
117. e tftp hermit gt tftpdl 192 168 0 10 192 168 0 2 kernel linux bin gz Client Server 192 168 0 10 192 168 0 2 Region kernel linux bin gz initializing net device OK Filename linux bin gz Filesize 1841551 programing kernel THHHHHHHHHBHHEHR completed setenv e clearenv Con il comando setenv possibile impostare la stringa dei parametri del kernel in questo modo 3Alle volte la connessione tftp si blocca prima della fase di download solitamente eseguire un ping all indirizzo della macchina target sblocca la situazione 69 Atmark Armadillo 500 hermit gt setenv console ttymxc0 root dev mmcblk0pl rootdelay 1 loglevel 7 Mentre il comando clearenv azzera la stringa dei parametri memorizza ta boot D l ordine al boot loader di procedere con la sequenza di boot del kernel 5 3 Compatibilit tra revisioni successive del SoM Armadillo 500 Il Jumper JP7 utilizzato per indicare alla main board quale la versione del modulo CPU montata Versione Armadillo SoM Stato JP7 A50 Ux Short A50 Ux B A50 ZB A50 Ux C A50 ZC Open In questo modo viene mantenuta la compatibilita elettrica tra mainboard e differenti revisioni del modulo CPU 70 Capitolo 6 Linux su piattaforma Freescale i MX31L Linux uno dei maggiori progetti open source esistenti per antonomasia IL progetto open source impegna una comu
118. eader creato perch le routine printascii possa utilizzare il device seriale nel caso venga selezionata la macchina ARMADILLO5x0 Listing 6 12 Patch al file arch arm plat mxc include mach debug macro S diff git a arch arm plat mxc include mach debug macro S b arch arm plat mxc include mach debug macro S index 4f77314 af72235 100644 a arch arm plat mxc include mach debug macro S b arch arm plat mxc include mach debug macro S Qa 34 6 34 9 if d ef CONFIG MACH QONG include lt mach board qong h gt endif ifdef CONFIG MACH ARMADILLOSXO include lt mach board armadillo5x0 h gt endif macro addruart rx mrc p15 O Vx cl cO tst rx 1 MWU enabled Creazione dell immagine Cosi modificati i sorgenti del kernel ed applicata la patch per il low level debug listato 6 1 con git apply nome_patch si procede alla configurazione e compilazione come de scritto nel paragrafo 6 2 5 basando la configurazione sul file di de fault mx3_defconfig e selezionando l architettura appena creata nel sotto menu di configurazione del kernel System Type gt selezioneare ARM system type Freescal MXC iMX based e proseguendo in Freescale MXC Implementations 111 Linux su piattaforma Freescale i MX31L selezionare Support Atmark Armadillo 500 Development Base Board Per abilitare il debug low level Kernel hacking gt selezionare Kernel low level debugging functions Scari
119. ece un processo di affinamento delle qualit specifiche del singolo prodotto in relazione alle seguenti misure Portabilit Intesa come grado di facilit di trasporto in relazione alle dimensioni pi piccolo il prodotto meglio pu essere trasportato e quindi pi frequentemente pu essere utilizzato Produttivit Intesa come grado di complessit del lavoro eseguibile dall utente in relazione ai metodi di input ed alla qualit del work space pi piccolo o difficilmente manovrabile il prodotto minore sar la produttivit dell utente 1 2 Sistemi Operativi per Dispositivi Mobili Connettivit Indica la capacit del prodotto di connettersi alle reti di comunicazione maggiori sono le tecnologie di rete supportate e la loro qualit maggiore sar la possibilit di connessione con la rete globale Multimedialit e divertimento Indica la capacit del prodotto di ri produrre e o registrare e o elaborare contenuti multimediali e di intrattenere l utente attraverso giochi o applicazioni per il tempo libero Costo maggiori saranno le precedenti misure maggiore sar il costo del dispositivo Allora le dimensioni di un notebook pur sacrificando la portabilit per mettono alte Produttivit Connettivit e Multimedialit mentre gli smart phone di nuova generazione guadagnano notevolmente in Portabilit ma perdono necessariamente in Produttivit date le interfacce di input e output meno agevoli
120. ecuzione del processo init qui presenta ta nel dettaglio la sequenza delle operazioni che portano all inizializzazio ne dell ambiente Linux sull architettura ARM esplicitandone i contenuti per la famiglia di processori i MX Il boot loader Il boot loader un piccolo programma che esegue prima di Linux all av vio del sistema il cui compito e quello di effettuare alcune inizializzazioni preliminari dell hardware ed alla fine chiamare la routine iniziale di Li nux Esistono diversi boot loader che supportano Linux su piattaforma ARM U Boot Blob Redboot Dalla documentazione presente nella pagina web del progetto ARM Linux 44 46 si apprendono le operazioni di base che Linux si aspetta vengano eseguite dal boot loader Setup e inizializzazione della RAM Il boot loader deve cercare ed ini zializzare tutti i dispositivi di memoria RAM utilizzabili dal kernel come memoria volatile l5nttp www denx de wiki U Boot lnttp sourceforge net projects blob Mnttp sources redhat com redboot 77 Linux su piattaforma Freescale i MX31L La configurazione della memoria trovata deve essere comunicata al ker nel attraverso parametri ATAG_MEM La memoria RAM non deve essere ne cessariamente contigua per indirizzi fisici multipli parametri ATAG_MEM indicano differenti blocchi di memoria RAM non contigui Inizializzazione di una porta seriale La porta seriale inizializzata ver r utilizzata dal kernel pe
121. ella pipeline Maggiori sono gli stadi della pipeline maggiori sono i cicli di clock di attesa affinch l istruzione che determina il risultato necessario alla successiva termini permettendo quest ultima di continuare il suo percorso di esecu zione Per limitare i cicli di attesa stato fatto uso esaustivo della tecnica del forwarding Istruzioni di salto condizionato Nel caso di branch condizionali si pu verificare lo stallo dell intera pipeli ne dato che l istruzione successiva da caricare dipende dal risultato della condizione del branch Sono state implementate due tecniche di branch prediction statica e dinamica che agiscono alternativamente a seconda della probabilit presunta di successo della previsione 43 Microarchitettura ARM11 Dinamica Viene utilizzato un semplice database di frequenza per le 64 istruzioni di branch pi recenti dove per ogni istruzione vengono memorizzati quattro indirizzi target del branch separati nelle cate gorie Strongly Taken Weakly Taken Strongly not Taken Weakly not Taken L istruzione successiva sar caricata dall indirizzo target del branch pi frequentemente Statica Se viene analizzata un istruzione di branch non presente nel database la politica se listruzione salta all indietro si assume la presenza di un loop riprendendo cosi l esecuzione dall inizio del lo stesso target del salto altrimenti si attende il risultato della condizione prima di continuare nel
122. em valido Il progetto OSELAS gestito da Pengutronix di pi ampio respiro oltre a fornire un metodo automatizzato per creare una toolchain adatta per molte architetture ARM esistono progetti ptxdist per creare root filesy stem completi e se supportate fornisce utility per la scrittura nelle flash della board target Ci che interessa per questo lavoro di tesi la creazione di un root fi lesystem valido utilizzabile successivamente per le operazioni di test e debug A questo proposito disponibile il progetto OSELAS BSP mantenuto da Phytec Da una nuova shell bin android sh mkdir SPRJROOT build BSP cd SPRJROOT build BSP wget http www oselas com oselas bsp phytec download phyCOR OSELAS BSP Phytec phyCORE 12 1 tar gz tar xf OSELAS BSP Phytec phyCORE 12 1 tar gz cd OSELAS BSP Phytec phyCORE 12 1 G N Con le seguenti ptxdist viene correttamente configurato con il file di progetto ed un particolare file di piattaforma ptxdist select configs ptxconfig ptxdist platform configs phyCORE i MX31 1 99 12 3 platformconfig Dato che la directory di installazione della toolchain non standard deve essere impostata la corretta posizione ptxdist toolchain SPRJROOT tools OSELAS Toolchain 1 99 3 arm 1136jfs linux gnueabi gcc 4 3 2 glibc 2 8 binutils 2 19 kernel 2 6 27 sanitized bin Con il termine piattaforma ptxdist considera l insieme kernel librerie
123. ema operativo le librerie specifiche F indica la presenza del Coprocessore vettoriale per calcoli in virgola mobile VFP Online e disponibile il manuale utente lhttp infocenter arm com help index jsp 46 Capitolo 4 L Application Processor Freescale 1 MX31L Lo scopo di questo capitolo quello di presentare l Application Processor presente nella board utilizzata fornendo una breve descrizione dei moduli interni importanti per la trattazione successiva Per maggiori informazio ni si rimanda al contenuto del relativo manuale utente 33 e successivi aggiornamenti 4 1 L Application Processor I processori i MX31 e i MX31L sono stati sviluppati da Freescale Semi conductor per dispositivi embedded portatili come smartphone gaming machine etc ambiti applicativi dove vengono richieste alte prestazioni multimediali a fronte di consumi di potenza ridotti Il design interno riprende la ricchezza di periferiche accessorie tipica delle architetture DSP adattata alle funzionalit richieste dai dispositivi por tatili Questa tipologia di architettura viene detta Application Processor dove si cerca di ottenere il miglior rapporto tra capacita di elaborazione funzionalit offerte su potenza dissipata All interno del chip troviamo allora il core di elaborazione ed un gran numero di periferiche addizionali in grado di soddisfare le necessit di connettivit multimedialit e capacit di archiviazione tipiche dei d
124. en_GB PRODUCT_PACKAGES Lista dei moduli da inatallare nel dispositivo ee PRODUCT PROPERTY OVERRIDES Lista di elementi no me propriet valore per impostare determinate propriet di sistema PRODUCT_COPY_FILES Lista di elementi path_host path_targhet do ve possibile definire delle installazioni statiche di determinati fi les nella piattaforma path host relativo alla root directory del repository Android e path_targhet relativo alla root directory del root fylesystem targhet PRODUCT_OTA_PUBLIC_KEYS Lista di chiavi di cifratura valide per verificare le applicazioni certificate PRODUCT_POLICY Definisce quale set di regole di sicurezza utilzzare stata utilizzata la sola android policy phone 166 7 3 Personalizzare il processo di build per la board Armadillo 500 La definizione di prodotto pu essere effettuata sulla base di un prodotto parde ereditandone le impostazioni Questa operazione viene effettuata con la stringa call inherit product SRC_TARGET_DIR product parentProduct mk Che si occupa oltre che a definire le variabili di identificazione di ag giungere alle liste del prodotto padre i contenuti definiti per il prodotto presente Successivamente a questa chiamata dovranno essere sovrascritte le variabili di identificazione del nuovo prodotto Collegare un nuovo prodotto al processo di build Perch un nuovo file di definizione di prodotto venga considerato nel
125. ento della cache Il trasferimento dati da e verso la Cache TCM avviene tramite due canali DMA attivi in modo esclusivo Translation Address Tag Nel Tag che descrive la singola pagina di me moria presente in Cache L1 stato aggiunto un campo di Indice del Processo software che ne detiene il possesso Il risultato la possi bilit di un utilizzo concorrente della cache da parte di pi processi eliminando la necessit di cache flush durante il context switch ARM Ltd conta in un miglioramento prestazionale fino al 30 in termini di throughput grazie a queste ottimizzazioni Raw Multiprocessing Le funzionalit richieste dai sistemi portatili odierni spesso sfociano nel la definizione di architetture multiprocessore dove ad ogni singolo core viene assegnata un compito specifico Ad esempio per uno Smartpho ne un processore pu gestire l interfaccia utente mentre un secondo pu agire come DSP per la gestione della comunicazione radio ARMv6 introduce in questo senso due nuove istruzioni per la lettura e scrittura esclusive di dati in memoria fornendo le basi per una gestione concorrente pi efficiente della stessa e per metodi di sincronizzazione inter cpu consistenti LDREX esegue una lettura in memoria ed inizializza un monitor per controllare la locazione letta STREX esegue una scrittura in memoria ritornando nel registro ri sultato un valore positivo se il monitor non ha osservato accessi concorrenti alla stessa
126. ento di questo contributo nel mainline kernel 6 1 Il progetto ARM Linux Il primo porting di Linux su processore ARM stato eseguito con successo da Russel King nel 1994 Da allora fino ad oggi Russel ha continuato il suo contributo nelle vesti di mantainer ufficiale per questo progetto e punto di riferimento per i differenti sotto gruppi di lavoro Il progetto ARM Linux ora di dimensioni considerevoli sono suppor tate le ARM ISA dalla v3 alla v7 29 core specifici 39 architetture di Application Processor AP e 229 board I contenuti del sito ufficiale non sono del tutto aggiornati specie nella documentazione ferma al 2004 ma costituisce il punto di accesso alle mailing list vero strumento di interazione con i membri della comunit arm linux per lo scambio di informazioni ed il processo di review delle modifiche proposte ai sorgenti del progetto Esistono altri siti web pi o meno aggiornati che documentano il progetto ARM Linux I due di maggiore interesse per questo lavoro di tesi sono linux arm com e imxdev org costruiti con il paradigma wiki per il quale ognuno puo contribuire all aggiornamento dell informazione presentata il primo documenta il progetto ARM Linux senza entrare nelle specifi cit delle diverse piattaforme mentre il secondo pone maggiore fuoco sulla gestione e utilizzo di kernel compilati per la famiglia di processori Freescale i MX 6 1 1 Mailing list e gestione delle Patch Le mailing list sono lo
127. enza la possibilit di realizzare i pi semplici paradigmi che caratterizzano i sistemi operativi odierni multitasking gestione condivisa delle risorse astrazione L evoluzione tecnologica ha prodotto un rilassamento dei vincoli sopra esposti permettendo cos la realizzazione di stack software sempre pi completi modulari capaci di supportare gli standard attuali di comuni cazione e interoperabilit forniti di framework per lo sviluppo di appli cazioni verso una maggiore ricchezza di funzionalit offerte orientati ai contenuti ed al valore aggiunto che questo possa dare 1 2 1 Architettura di sistema per i moderni Mobile OS L architettura dei moderni sistemi operativi per dispositivi mobili Mobi leOS si presenta come in figura 1 1 E Mobile Application amp Services J L J Application Multimedia UI Telephony Enablement Framework Framework Framework Core Libraries amp OS Services Base OS Platform Device Kernel Drivers Figura 1 1 Stack software completo per dispositivi mobili Base OS Platform La Base OS Platform simile all architettura dei vicini Sistemi Opera tivi General Purpose GPOS ma ottimizzata per i vincoli presenti nei dispositivi hand held 8 1 3 Il mercato dei Sistemi Operativi per dispositivi mobili Kernel deve gestire in modo efficiente le limitate risorse computazio nali di memoria ed energia disponibile Lo scheduler implementa funzionalit real
128. er dedicato Come detto in precedenza per scrivere su tale buffer viene utilizzata la funzione printk printk si comporta come la normale funzione printf nel parsing delle stringhe ma prevede un parametro obbligatorio di debug level da inserire all inizio del formato della stringa per filtrare i messaggi in conso le a seconda delle preferenze espresse dall utente parametro loglevel del kernel 87 Linux su piattaforma Freescale i MX31L Allora la chiamata a printk deve essere nella forma printk LEVEL fmt ed i livelli sono KERN_EMERG lt 0 gt Comunicazioni nel momento in cui il sistema inutilizzabile KERN_ALERT 1 Azioni che devono essere fatte immediata mente KERN_CRIT lt 2 gt Condizioni critiche KERN_ERR lt 3 gt Errori di sistema KERN WARNING 4 Messaggi di attenzione KERN NOTICE 5 gt Messaggi significativi normali KERN INFO lt 6 gt Messaggi informativi livello di default vengono stampati tutti imessaggi conside rati pi seri di quelli di debug KERN_DEBUG lt 7 gt Messaggi utilizzati solo per debug So litamente viene utilizzata la macro wrap per pr_debug fmt che si risol ve in printk KERN DEBUG fmt se definito il parametro di configurazione DEBUG per utilizzare printk nel codice del kernel necessario includere il file header linux kernel h 6 1 4
129. ernelAndroidArmadillo500 linux 2 6 verificare le ultime commit alle due directory arch arm plat mxc e arch arm mach mx3 con cd SPRJROOT kernelAndroidArmadillo500 linux 2 6 git log arch arm plat mxc commit 7b9020bad 78327b3 cb567b466a1dd4d433710ce Author Uwe Kleine K nig lt u kleine koenig pengutronix de gt Date Tue Apr 21 22 56 14 2009 0200 mx27ads move PBC mapping out of vmalloc space git log arch arm mach mx3 commit 6b4b b87b638a4 114dfb6 72f4aclbe88a4ebe4 Author Rabin Vincent lt rabin rab in gt Date Tue May 26 22 31 46 2009 0530 mx 23 don t put clock lookups in _ initdata 2 Eseguire qgit nella directory PRIROOT kernelLinus linux 2 6 selezionare come elementi di filtro le due directory arch arm plat mxc e arch arm mach mx3 ed applicare Filter by tree 3 Selezionare tutte le patch dalla pi recente alla pi vecchia di quelle verificate nel repository kernelAndroidArmadillo500 ed esportarle con Format patch nella directory kernelAndroidArmadillo500 linux 2 6 platformPatches Ci che distingue questa sequenza di azioni dai comandi git cd SPRJROOT kernelLinus linux 2 6 git format patch 6b4b b87b638a4 114dfb6 72f4aclbe88a4ebe4 arch arm mach mx3 163 Android su piattaforma Freescale i MX31L e git format patch 7b9020bad 78327b3 cb567b466a1dd4d33710ce arch arm plat mxc la consistenza delle patch create in questo ultimo modo format p
130. ernelLinus git clone git git kernel org pub scm linux kernel git torvalds linux 2 6 git Cos in SPRJROOT kernelLinus linux 2 6 presente una versione completa del mainline kernel all ultimo stadio di evoluzione Per sincronizzare il repository locale con le ultime modifiche remote cd SPRJROOT kernelLinus linux 2 6 git pull lnttp git scm com documentation 91 Linux su piattaforma Freescale i MX31L Dato che il branch di sviluppo per gli Application Processor i MX ancora oggi in continua evoluzione per sfruttare le ultime funzionalit senza attendere il lungo processo di merge nel mailine branch ne utile la clonazione in locale mkdir SPRJROOT kernelMXC cd SPRJROOT kernelMXC git clone git git pengutronix de git imx linux 2 6 git git checkout origin mxc master L ultima riga di comando indica a git di spostarsi nel branch corretto mxc master del repository Pengutronix 6 2 3 Rudimenti di Git per la creazione di patch Un repository Git contiene al suo interno oltre ai file sorgenti del proget to dei metadati registrati in un database didtribuito detto index utilizzati da Git per rilevare le ultime modifiche apportate dopo l ultima commit Innanzitutto Effettuare una commit significa registrare nel database index le ultime modifiche apportate al repository locale successive alla precedente commit tramite il comando git commit Ad una commit viene assegnato un
131. ersione 2 6 32 rc1 dato che il co dice di Power Management Linux ha subito un evoluzione tale da non rendere applicabili le relative modifiche Android La soluzione proposta quella di utilizzare una versione intermedia del kernel la 2 6 30 dove le patch Android sono in maggior parte valide e l avanzamento della piattaforma per Application Processor della famiglia i MX in maggior parte lineare Per inizializzare un nuovo repository locale del kernel Linux alla versione selta si esegue mkdir SPRJROOT kernelAndroidArmadillo500 cd SPRJROOT kernelAndroidArmadillo500 git clone git git kernel org pub scm linux kernel git torvalds linux 2 6 git cd linux 2 6 git checkout v2 6 30 7 2 1 Le patch Android Ottenere le patch In riferimento all articolo 29 per ottenere la serie di patch Android da applicare al kernel 2 6 30 si procede come segue 158 7 2 Ottenere un kernel valido Il repository locale del kernel Android deve essere ricollocato nel bran ch android 2 6 29 dato che ad ora risiede per default nel branch android 2 6 27 cd SPRJROOT android sources kernel git checkout korg android 2 6 29 La serie di patch ottenuta con il comando git format patch v2 6 30 o androidPatches format patch provveder a creare nella directory androidPatches la serie completa di patch che dovrebbe dividere il kernel 2 6 30 dal kernel android 2 6 29 Questa operazione possibile dato che attra
132. ersonal Computer Google si inserisce in questo mercato con un sistema operativo capace di supportare gli standard di comunicazione in grado di portare i servizi di Google anche sui dispositivi mobili L obbiettivo che rende lo sviluppo di Android appetibile quello di penetrare il mercato dei sistemi operativi per dispositivi mobili per affermare gli standard di comunicazione che permettono a Google di fare soldi attraverso la propria offerta di servizi In Android Google ha facilitato l accesso ai propri servizi attraverso lo sviluppo di API native facendo questa una piattaforma privilegiata ma l obbiettivo principale l affermazione di una modalit di accesso alla re te standard per i normali PC che a fatica ora si sta cercando di riprodurre anche nei nuovi dispositivi mobili 24 37 Android 38 Capitolo 3 Microarchitettura ARM11 In Informatica l Architettura Instruction Set Architecture ISA definisce il set di istruzioni ed il modello di programmazione che ogni microprocessore deve implementare se basato su tale architettura Le differenti implementazioni di una Architettura ISA possono variare in performance e funzionalit offerte ed essere ottimiz zate per differenti applicazioni Il modo in cui una Architettura ISA Set di istruzioni e Model lo di programmazione viene implementata in un processore detto Microarchitettura Le implementazioni possono variare a seconda di obbiettivi specifici oppure
133. esata Flip orizzontale del frame Due livelli di conversione dello spazio dei colori RGB to YUV o viceversa Tra i due livelli di conversione dello spazio dei colori possibile combinare linearmente il frame con altre immagini e Rotazione del frame in multipli di 90 Post Filter PF elabora il frame in preparazione alla compressione MPEG4 effettuata dal modulo dedicato Synchronous Display Controller SDC controller per display sincro ni quali TFT Smart display Sharp display TV encoders necessita no dei segnali di sincronismo VSYNC e HSYNC generati dall uni t DI Contiene un blocco di image combining tra due livelli grafici Background e Foreground Asynchronous Display Controller ADC controller per display asin croni display che dispongono della logica e memoria necessaria per visualizzare autonomamente la grafica capace di pilotare fino a 3 display simultaneamente Display Interface DI interfaccia capace di collegare fino a 4 display contemporaneamente in time multiplexing Converte dati prove nienti dai controller SDC ADC e dalla MCU accesso raw nel forma to specifico dei display connessi secondo le specifiche programmate Image DMA Controller IDMAC tutte le operazioni che hanno a che fare con buffer di memoria e tra unit interne nel modulo IPU ven gono gestite in modalit DMA tramite la programmazione di questa unit Sono gestiti i canali DMA dai buffer video ai controller
134. evice specific platform data are provided using conventional syntax define I2C BOARD INFO dev type dev addr type dev type addr dev addr Per ogni device collegato ai bus C necessario esplicitare un descrittore i2c board info che anrd registrato nel controller specifico attraverso la funzione int i2c register board info int busnum struct i2c board info const xinfo unsigned n La macro I2C BOARD INFO aiuta in questo senso rendendo la definizione pi leggibile in sede di enumerazione dei device Per il chip Seiko Instruments S 35390A deve essere registrato un dispo sitivo di tipo s35390a id del driver rtc s35390a c all indirizzo 0x30 si veda il datasheet del dispositivo 1 Dato che il driver rtc s35390a c non effettua le operazioni di GPIO e IRQ request per la sorgente di interrupt associata al chip S 35390A allo ra queste andranno effettuate nella funzione armadillo5x0 init prima di impostare il parametro associato nel descrittore 144 6 3 Fasi del porting Modifiche al codice di supporto Di seguito sono riportate le modifi che al file armadillo5x0 c comprendenti la corretta configurazione delle funzioni dei pin di interfaccia del secondo controller C Listing 6 26 armadillo5x0 O8ToI2C patch Kock ok ck ck ok ck Ok ck k k k ck Ri 26 31 sx 26 32 include lt linux io h gt include linux input h include linux gpio keys h include linux i2c h
135. ey 28 MENU WAKE key 158 BACK WAKE diff git a target product AndroidProducts mk b target product AndroidProducts mk index lbf3c3f 37cl4dc 100644 a target product AndroidProducts mk b target product AndroidProducts mk 30 4 30 5 PRODUCT MAKEFILES LOCAL DIR min dev mk LOCAL DIR sdk mk LOCAL DIR sim mk LOCAL DIR generic with google mk LOCAL DIR generic with google mk LOCAL DIR armadillo500 mk diff git a target product armadillo500 mk b target product armadillo500 mk new file mode 100644 index 0000000 1e061b8 dev null b target product armadillo500 mk Qa 0 0 1 7 call inherit product SRC TARGET DIR product min dev mk Overrides PRODUCT BRAND generic PRODUCT NAME armadillo500 169 Android su piattaforma Freescale i MX31L PRODUCT DEVICE armadillo500 PRODUCT_LOCALES en_US 1 5 4 3 7 3 3 Modificatori di prodo tto Il sistema di build definisce dei modificatori di prodotto che determinano quale versione del prodotto si vuole generare Ogni componente Android libreria o applicazione pu esporre un tag che ne modifica la presenza o meno nella versione del prodotto scelta attraverso la lista LOCAL MODULI E TAGS I tag nativi sono eng debug user e development e permettono le versioni di prodotto date dai seguenti modificatori eng Modificatore di default non valut
136. gli indirizzi CS3 il pin di Chip select connesso al segnale CS3 con uno spazio di indirizzamento di 32 MB La sorgente di interrupt LAN IRO stata connessa al pin GPIO1_0 dell Application Processor i MX31 Allora le risorse sono cosi definite static struct resource armadillo5x0_smc911x resources start CS3 BASE ADDR end CS3 BASE ADDR SZ 32M 1 flags IORESOURCE MEM Pod start IOMUX TO IRQ MX31 PIN GPIOI 0 end IOMUX TO IRQ MX31 PIN GPIOI 0 flags IORESOURCE IRQ IORESOURCE IRQ LOWLEVEL La macro IOMUX TO IRQ trasforma l identificatore di pin del processore MX31 PIN GPIOl 0 in un identificatore di interrupt Il modificatore di flag di risorsa IORESOURCE IRO LOWLEVEL indica al driver lo stato attivo del segnale di interrupt che si sceglie essere quello basso Parametri del driver Nelfile include linux smsc911x h sono de finiti i parametri possibili di configurazione del driver smsc9118x che permettono le impostazioni seguenti del controller Larghezza del bus di dati 16 o 32 bit Quale modulo di gestione del livello fisico utilizzare phy interface interno oppure esterno forzandolo e Semantica del segnale di interrupt attivo alto oppure basso 116 6 3 Fasi del porting e Configurazione elettronica del circuito di interrupt Push Pull op pure Open Drain Il controller collegato al bus dati di sistema attraverso i soli 16 bit LS
137. guito passo per pas so sono riportate le fasi di inizializzazione dell ambiente Linux a partire da un immagine compressa ottenute analizzando il codice sorgente del kernel in riferimento alla traccia fornita dal documento 26 79 Linux su piattaforma Freescale i MX31L Decompressione dell immagine Il boot loader salta alla label start in arch arm boot compressed head S I parametri passati in r1 id macchina e x2 indirizzo della atag list sono salvati Disabilita gli interrupt ed aggiorna gli indirizzi rispetto all offset di esecuzione Abilita la cache dati chiamando la procedura cache on All interno di cache on viene individuata l architettura di sistema nella lista proc types Inizializza gli indirizzi per la chiamata alla routine di decompressio ne r4 indirizzo fisico di inizio kernel sp indirizzo della routine di decompressione Controlla che l immagine decompressa non sovrascriver limmagi ne zImage Chiama la routine di decompressione decompress kernel pre sente nel file arch arm boot compressed misc c decompress kernel stamper il messaggio UncompressingLinux nel terminale di output prose guendo nella chiamata della funzione gunzip ed in seguito alla visualizzazione del messaggio done booting the kernel Pulisce e disabilita la cache dati per ricreare le condizioni per la routine start del kernel Salta all inizio dell immagine decompressa del kernel indirizzo
138. i rete Per abilitare la compilazione del driver di rete nel menu di configurazione del kernel deve esse re selezionata per la presenza statica lopzione Device Drivers gt Network device support Ethernet 10 or 100Mbit SMSC LAN911x LAN921x families embedded ethernet support Mentre per abilitare il supporto a root filesystem di rete attraverso il protocollo NFS devono essere selezionate le seguenti impostazioni Networking support gt Networking options gt TCP IP networking e IP kernel level autoconfiguration File systems Network File Systems NFS client support e NFS client support for NFS version 3 e Root file system on NES 119 Linux su piattaforma Freescale i MX31L Compilato e scaricato il kernel cos modificato nel menu di Hermit pos sono essere impostati i parametri relativi al root filesystem di rete hermit gt setenv console ttymxc0 rootfstype nfs root dev nfs nfsroot 192 168 0 2 media dati android rootfs ip 192 168 0 10 192 168 0 2 192 168 0 2 255 255 255 0 armadillo eth0 off media dati android lespansione della variabile PRJROOT La sintassi e la semantica dei parametri qui scritti sono definite nel documento 13 Procedendo con l operazione di boot del sistema se la board corretta mente collegata alla rete di sviluppo ed i parametri del root filesystem nfs sono corretti allora nella console seriale verr alla fine presentata la shell di coman
139. i sottosistemi DMA e Audio devono avere la priorit maggiore nell immediato futuro in seno al completamen to del progetto di supporto degli Application Processors i MX3x nel kernel Linux Colmate tali lacune la board potr godere di piene prestazioni e funzio nalit multimediali Android su Atmark Armadillo500 L architettura sviluppata in An droid per l ambiente applicativo risulta in una richiesta di memoria ec cessiva per la board a disposizione ogni applicazione esegue in seno ad una istanza privata Dalvik ed ingloba tutte le librerie a collegamento di namico del processo generatore Il risultatdo una richiesta di memoria minima di circa 18 MB per applicazione che sommata ai server del fra mework Android consuma i 64 MB di memoria disponibile gi dopo il caricamento dei core processes di piattaforma Se da un lato la soluzione migliore l aumento della memoria di sistema a disposizione il requisito minimo pubblicato 128 MB per migliorare le prestazioni nel breve periodo si propone di implementare un architettura di swap su una partizione creata ad hoc in un device veloce Si propone inoltre di analizzare la compatibilit della nuova revisione del modulo CPU Armadillo 500 FX con la mother board a disposizione tale modulo CPU mantenendo lo stesso Application Processor dispone di dimensioni doppie sia della memoria RAM montata sia della memoria Flash NOR 186 Appendice A Memory Map Armadillo 500
140. ibile per il solo registro di compare 1 il contato re ricomincia da 0x0 dopo l avvenuto evento Comparel Scrivere nel primo registro compare in questa modalit produce il reset del contatore Free run mode il contatore continua il conteggio in modo indefinito fino all evento di rollover da dove riprende da zero OXFFFFFFFF gt 0x00000000 Il GPT pu generare interrupt negli eventi capture compare e rollover reset per overflow Enhanced Periodic Interrupt Timers EPIT Due timer EPIT set and forget a 32 bit capaci di generare interrupt ad intervalli regolari con il minimo intervento software Possono essere programmati per essere attivi in modalit low power Entrambi si basano su un contatore inverso e possono funzionare in due modalit Set and forget il contatore raggiunto lo zero ricarica automaticamente il valore programmato in precedenza nel registro EPITLR senza la necessit di intervento specifico via software Free run mode il contatore continua il conteggio in modo indefinito fino allo zero per poi riprendere da OxFFFFFFFF Anche in questa modalit possibile programmare il reset ad un valore specifico tramite il registro EPITLR L interrupt se abilitato viene generato ogniqualvolta il timer raggiunge lo zero 54 4 11 Interfacce seriali UART 4 11 Interfacce seriali UART Sono presenti 5 moduli Universal Asynchronous Receiver Transmitter UART programmabili capaci di trasmettere
141. ill do the trick Note writeable partitions require their size and offset be x erasesize aligned e g use MTDPART OFS NEXTBLK struct mtd_partition char name identifier string uint64 t size partition size uint64_t offset offset within the master MID space uint32 t mask flags master MID flags to mask out for this partition struct nand ecclayout ecclayout out of band layout for this partition NAND only struct mtd info mtdp pointer to store the MID object define MIDPART OFS NXTBLK 2 define MIDPART OFS APPEND 1 define MTDPART SIZ FULL 0 Dato che il bus di collegamento a 16 bit il parametro width sar impostato a 2 La definizione della mappa delle partizioni invece sar impostata di modo da riflettere esattamente l organizzazione interna della flash Modifiche al codice di supporto Di seguito sono riportate le modifiche al file armadillo5x0 c Listing 6 20 armadillo5xO O5ToNOR patch 2 ok oe ck ck ko ck ck ck ck ck ck hok k 22 27 xx 136 6 3 Fasi del porting 22 28 include lt linux smsc911x h gt include lt linux interrupt h gt include lt linux irq h gt include lt linux mtd physmap h gt include lt mach hardware h gt include asm mach types h gt 2 oR ok ck ok ck ck ck ck ck ck ck k k k ue 87 92 xxx 88 135 F MID NOR Flash static struct mtd_partition armadillo
142. illo5bxO nor flash pdata Register NAND Flash mxc register device amp mxc nand device amp armadillo5xO nand flash pdata t set NAND page size to 2k if not configured via boot mode pins 140 6 3 Fasi del porting __raw_writel __raw_read MXC CCM RCSR 1 lt lt 30 MXC CCM RCSR static void __init armadillo5x0_timer_init void Utilizzare il driver mxc_nand c Compilato e scaricato nella board Ar madillo 500 il kernel con le modifiche apportate il driver mxc_nand c provveder ad aggiungere un device MTD alla struttura di block devices per dispositivi flash Memory Technology Device Flash dev mtd3 nor config rw dev mtd3ro nor config ro dev mtd4 NAND rw dev mtd4ro NAND ro 6 3 8 GPIO Keyboard In riferimento alla sezione 5 1 8 nella board Armadillo 500 sono presenti due tasti low active connessi ai due pin gpio GPIO3 3 e GPIOS3 2 dell Ap plication Processor attraverso un semplice circuito RC di debouncing Per collegare questi tasti al sottosistema di input Linux esiste il driver in kernel apposito drivers input keyboard gpio keys c Parametri del driver La struttura che determina i possibili parametri del driver gpio keys definita nel file include linux gpio keys h Listing 6 23 Estratto del file include linux gpio keys h struct gpio keys button Configuration parameters int code input event code KEY SW int gpio int active lo
143. ils 2 18kernel 2 6 27 sanitized ptxconfig newlib Il progetto utile arm 1136jfs linux gnueabi gcc 4 3 2 glibc 2 8 binutils 2 19 _kernel 2 6 27 sanitized ptxconfig Selezionato e configurabile con le seguenti righe di codice ptxdist select ptxconfigs arm 1136jfs linux gnueabigcc 4 3 2 glibc 2 8 binutils 2 19kernel 2 6 27 sanitized ptxconfig ptxdist menuconfig Le voci del menu Project Name Personalizza il nome del progetto per costruire toolchain differenti OSELAS Toolchain 1 99 3 97 Linux su piattaforma Freescale i MX31L architecture Seleziona l architettura target arm toolchain target Definisce il prefisso del nome per ogni utility secondo lo standard cpu manufacturer kernel os arm 1 136jfs linux gnueabi Clibrary Definisce quale libreria C utilizzare tra glibc uClibc e altre glibc glibc Permette di configurare la compilazione delle librerie glibc glibc ports Permette di applicare una serie di patch a glibc relative ed un porting specifico binutils Permette di configurare la compilazione delle utility binutils kernel Permette di definire quale la versione del kernel di riferimento minima versione supportata gcc Permette di configurare la compilazione di gcc utilizzato poi come cross compilatore cross gdb Se selezionata allora verr creato il cross debugger gdb misc per definire alcuni parametri globali come directory di prefisso PRJROOT t
144. inder Kernel Figura 2 2 Modello di IPC introdotto da Android Binder Essenzialmente un driver in kernel pi librerie user space capaci di gestire l intero meccanismo IPC tra i processi in esecuzione nel sistema riassunto nella figura 2 2 quindi liscrizione la ricerca e l acquisizione dei servizi disponibili pubblicati dai componenti Services attivi secondo il meccanismo publish subscribe il meccanismo di marshalling unmar shalling dei dati la comunicazione vera e propria attraverso memoria condivisa e la gestione della consistenza delle referenze remote create dall acquisizione dei servizi La definizione dell interfaccia pubblica avviene tramite il linguaggio An droid Interface Definition Language AIDL capace di astrarre i diversi linguaggi di programmazione con i quali vengono realizzati i servizi in un paradigma ad oggetti Dato che deve essere utilizzato prevalentemente in sistemi embedded Binder stato ottimizzato nella dimensione dei messaggi e nella quantit di process switch necessari Low Memory Killer Modulo in grado di terminare processi nel caso sia rimasta poca memoria disponibile 18 2 2 Architettura Accetta in ingresso due array adj e minfree e sfrutta il parametro oom_adj assegnato ad ogni processo Finch la memoria libera rimane al di sotto di minfree i pagine processi con valori oom adj maggiori o uguali a adj i vengono terminati A differenza del componente Out Of Memor
145. ingresso alla CPU ckih rate frequenza di generazione di tutte le sorgenti di clock dell Application Processor ed inizializza l interfaccia clk dev del kernel Linux Il parametro init machine punta alla funzione che inizializzer in seguito tutti i device della board che per ora rimane vuota 109 Linux su piattaforma Freescale i MX31L Il codice di collegamento al processo di build del kernel I file Kconfig e Makefile interni alla directory arch arm mach mx3 devo no essere modificati per permettere di scegliere e compilare la nuova piattaforma Listing 6 10 Patch ai file Kconfig e Makefile in arch arm mach mx3 diff git a arch arm mach mx3 Kconfig b arch arm mach mx3 Kconfig index d623558 21b712a 100644 a arch arm mach mx3 Kconfig b arch arm mach mx3 Kconfig 64 4 64 11 config MACH QONG Include support for Dave DENX QongEVB LITE platform This includes specific configurations for the board and its peripherals config MACH ARMADILLO5XO bool Support Atmark Armadillo 500 Development Base Board select ARCH MX31 help Include support for Atmark Armadillo 500 platform This includes specific configurations for the board and its peripherals t t endif diff git a arch arm mach mx3 Makefile b arch arm mach mx3 Makefile index 272c8a9 b93bfa7 100644 a arch arm mach mx3 Makefile b arch arm mach mx3 Makefile 14 3 14 4 obj CONFIG MACH MX31_3DS
146. insieme di applicazioni aperte in un dato istante produca una situazione critica nel sistema in termini di risorse di memoria occupate Android provvede a terminare processi considerati di minore utilit In Android i processi vengono ordinati in una scala gerarchica a seconda dei componenti che contengono e della posizione che hanno nel loro ciclo di vita Allora i processi che stanno al livello inferiore sono quelli che prima di tutti verranno terminati nel caso il livello di risorse disponibili sia molto basso via via cos fino ai processi che stanno in cima nella scala gerarchica che subiranno l intervento del sistema solamente nel caso non siano disponibili i requisiti minimi di risorse per tale applicazione Sono definiti cinque livelli nella gerarchia rappresentati in seguito in ordine di importanza 1 Un processo attivo un processo in seno all applicazione corrente mente utilizzata dall utente Un processo attivo se e Sta eseguendo l attivit con la quale l utente sta interagendo e Contiene un servizio al quale l attivit utilizzata correntemente dall utente connessa attraverso bind e Contiene un servizio che sta eseguendo una delle sue life cycle callback e Contiene un Broadcast Receiver che sta eseguendo la propria callback onReceive 2 Un processo visibile un processo che non possiede nessun com ponente attivo ma che comunque influenza lo schermo dell utente Processi di questo tipo sono conside
147. ion deselezionare phyCORE MPC52001 simple FPGA loader In PTXdist Base Configuration possibile configurare la struttura del root filesystem e le applicazioni che vi verranno installate Le applicazioni vengono selezionate attraverso voci di menu a tre stati do ve il simbolo indica la presenza di default nell immagine mentre il sim bolo M indica la creazione di un pacchetto IPGK scaricabile ed installabile nella macchina target Mentre tutto il resto delle opzioni pu rimanere come gi impostato verr creato un root filesystem molto leggero basato su BusyBox 8 saranno 8http www busybox net 101 Linux su piattaforma Freescale i MX31L utili per questo lavoro di tesi le utility Graphics amp Multimedia gt framebuffer gt fbtest fbutils fbv da includere tutte e tre con il simbolo default Ora possibile partire con il processo di build ptxdist go Ptxdist utilizzando le informazioni in selected ptxconfige selected platformconfig link simbolici ai file di configurazione selezionati automaticamente prov veder a scaricare compilare ed installare i pacchetti necessari tenendo conto delle dipendenze specifiche per ogni pacchetto Al termine del processo di build il root filesystem si trover nella directory platform phyCORE i MX31 root mentre in platform phyCORE i MX31 packages risiederanno tutti i file pacchetto nel formato IPGK ipk delle applicazioni selezionate con il si
148. ion with a t the newest giant industry has arrived the money and meaning of mobile http communities dominate blogs com brands 2008 12 trillion with a html Dicembre 2008 21 ARM Ltd AMBA Specification rev 3 0 edition 2003 Web www arm com 22 Atmark Armadillo 500 base board schematics Nel CD allegato alla board document hardware armadillo 500 base sche revbl pdf 23 Atmark Atmark armadillo 500 board documentation resources http download atmark techno com armadillo 500 document 24 Lora Bentley More on gl and google s goals with android http www itbusinessedge com cm blogs bentley more on gl and googles goals with android cs 15048 Settembre 2008 196 BIBLIOGRAFIA 25 David Brash The arm architecture version 6 armv6 White paper ARM Ltd 2002 26 Alberto Panizzo Charly Bechara PeterPearse Booting arm linux smp 27 28 29 on mpcore http www linux arm org LinuxBootLoader SMPBoot 2009 David Cormie The armlltm microarchitecture White paper ARM Ltd 2002 David Cormie How to participate in the linux community White paper The Linux Foundation 2008 Elvis Dowson Re Is 2 6 29 kernel supported http www mail archive com android kernelQ googlegroups com msg00290 html 30 Wikipedia EN http en wikipedia org wiki Dhrystone 31 Jonas Fonseca Git quick reference 32 33 34 35 36 37 http
149. ipale per lanciare un attivit accesso ria deve essere creato un oggetto che la descriva attraverso il suo nome univoco se l obbiettivo identificare un componente specifico oppure attraverso una chiave di ricerca se si vuole utilizzare un componente ge nerico presente nella stessa applicazione oppure parte di applicazioni esterne Nel caso di richiesta generica la chiave di ricerca verr confrontata con tutti gli intent filter pubblicati per ogni componente del sistema alla ricerca del matching migliore attivando cosi la relativa attivit 2 2 6 Ciclo di vita dei componenti Activity Dalla creazione alla distruzione ogni attivit segue il proprio ciclo di vita all interno del diagramma stati transizioni mostrato in figura2 5 28 2 2 Architettura Starting 1 onCreate 2 onStart 3 4 onRestoreInstanceState onResume Running 3 onResume 1 onSaveInstanceState 2 onStart 12 Semen 1 onRestart onResume ll Stopped 1 onSaveInstanceState Paused 2 onStop onDestroy Process killed or Process killed Destroyed ostina Figura 2 5 Ciclo di vita del componente Activity Essenzialmente una attivit pu risiedere in uno dei tre stati Running in primo piano nello schermo l utente pu interagire con questa attivit Una attivit in questo stato non pu essere distrutta da An
150. iscesa del segnale Al momento della scrittura del codice di supporto la piattaforma plat mxc non supportava la modalit di generazione delle interruzioni descritta da to che lo stesso i MX31 non la supporta risultando in un comportamen to errato di generazione degli eventi E presente nella coda delle patch una modifica apposita che supporterebbe tale comportamento con un semplice work araund 34In riferimento sempre al documento 7 per la descrizione dei metodi utilizzati 124 6 3 Fasi del porting 6 3 5 Output Video In riferimento alla sezione 5 1 5 nella board Armadillo 500 l interfac cia Display Interface stata connessa ad un modulo Digital to Analog Converter ADV7125 della Analog Devices Questo permette di pilota re un normale schermo con ingresso VGA analogico utilizzando l out put del Synchronous Display Controller interno all Application Processor i MX31 Nel kernel tree presente il driver drivers video mx3fb c che imple menta le API di interfaccia Linux Frame Buffer 6 configurando la catena interna di output video del modulo IPU per utilizzare il controller SDC Il trasferimento dati dal Frame Buffer in memoria centrale alla memoria video del controller avviene tramite il sottosistema DMA del modulo IPU gestito dal driver drivers dma ipu ipu idmac c I segnali dell interfaccia Display Interface I segnali utili alla confi gurazione scelta per la catena di output IPU sono i seguenti 33
151. ispositivi embedded portatili enumerate nella figura 4 1 47 L Application Processor Freescale i MX31L Figura 4 1 Diagramma a blocchi dell Application Processor i MX31 Il processore i MX31L si differenzia dalla versione i MX31 per l assenza del dispositivo di accelerazione grafica 3D 48 4 2 Il Core di Elaborazione 4 2 Il Core di Elaborazione L unit di elaborazione data dal core ARM1136JF S descritto nella sezione 3 3 Realizzato con processo produttivo a 0 13 um stato dotato di e 16Kbyte di Data cache e 16 KByte di Instruction cache connesse attraverso bus a 64 bit e 128 KByte di cache L2 unificata dati e istruzioni connessa tramite il bus AHB Lite ed accessibile tramite tre interfacce read only 64 bit instruction interface 64 bit bidirectional data read write interface write only 64 bit data interface 16 KByte di SRAM per applicazioni a basso consumo energetico e 32 KByte di ROM per il codice di bootstrap e dati La frequenza di funzionamento pu variare nel campo 333 665MHz con prestazioni pubblicate fino a 660 Dhrystone 2 1 MIPS 4 3 La gestione degli interrupt I processori i MX31 ed i MX31L dispongono di una periferica dedica ta per la gestione degli interrupt detta ARM11 platform Vectored Inter rupt Controller AVIC connessa al core ARM1136JF S tramite la porta Vectored Interrupt Controller VIC L AVIC permette di gestire fino a 64 sorgenti di interr
152. itivi mobili Da una ricerca Gartner pubblicata ad Agosto 2009 34 riassunta in fi gura 1 2 possibile notare come nel secondo quarto dello stesso anno si sono affermati nel mercato i pi diffusi Mobile OS Sistemi Embedded e Mobile Devices 2 6 E Symbian E RIM 13 D Apple E Microsoft Bl Linux O Android 51 Figura 1 2 Percentuale di affermazione nel Mercato dei maggiori Mobile OS Symbian OS di Symbian Ltd 51 Nato da una collaborazione tra Ericsson Nokia Motorola e Psion con cretizzata nella societ Symbian Ltd nel 1998 Discende dal Sistema operativo EPOC sviluppato dalla sola Psion Nel 2008 Nokia ha deciso per l acquisizione dell intera Symbian Ltd per la costituzione della fondazione non profit Symbian Foundation alla qua le affidare l apertura del codice dell intera piattaforma con licenza open source Eclipse Public License EPL da completare entro il 2010 Il sistema operativo Symbian non include lo strato Application Enable ment cosi Nokia Ericsson ed altre hanno sviluppato al di sopra di Sym bian OS user interface e framework di sviluppo software personali Nokia S60 S80 S90 Ericsson UIQ NTT DoCoMo MOAP non compatibili tra di loro 10 1 3 Il mercato dei Sistemi Operativi per dispositivi mobili BlackBerry OS di RIM 18 7 Sistema Operativo studiato appositamente per il mercato business Il punto di forza proprio la quantit di applicazioni pensate per i mana
153. izializza e fa partire il timer di sistema con time init arch arm kernel time c 83 Linux su piattaforma Freescale i MX31L Abilita gli interrupt locali alla CPU di boot con local_irq_ enable include linux irgflags h Inizializza la console di sistema con console init drivers char tty io c Trova il numero totale di pagine libere in tutte le zone di memoria con mem init arch arm mm init c Inizializza il gestore della memoria slab con kmem cache init mm slab c e Determina la velocit del processore in BogoMips con calibrate delay init calibrate c Inizializza i componenti interni del kernel come SLAB caches VFS buffer code di segnali massimo numero di thread e processi etc Inizializza il filesystem proc con proc root init s proc root c e Chiama rest init che creer il processo con ID 1 n rest init init main c il kernel vivo non una funzione marcata con il modificatore init e quindi non sar memoria liberata successivamente perch inutile Continua la sequenza di inizializzazione che andr a crea re il processo init con kernel thread kernel init NULL CLONE FS CLONE SIGHAND Crea il thread demone del kernel radice di generazione di ogni kernel thread con kernel thread kthreadd NULL CLONE FS CLONE FILES kernel kthread c Libera il lock del kernel acquisiti all inizio di start kernel con unlock kernel include linux
154. jonas nitro dk git quick reference html USB Implementers Forum Universal serial bus http www usb org home Freescale semiconductor MCIMX31 and MCIMX31L Applications Processors Reference Manual rev 2 3 edition 2007 Web www freescale com Gartner Gartner says worldwide mobile phone sales declined 6 per cent and smartphones grew 27 per cent in second quarter of 2009 http www gartner com it page jsp id 1126812 Agosto 2009 Denton Gentry The six million dollar libc http codingrelic geekhold com 2008 11 six million dollar libc html Google Android application fundamentals http developer android com intl it guide topics fundamentals html Google The androidmanifest xml file http developer android com intl it guide topics manifest manifest intro html 197 BIBLIOGRAFIA 38 Google Contribute http source android com download using repo 39 Google Using repo and git http source android com submit patches 40 Dan Bornstein Google Dalvik vm internals http sites google com site io dalvik vm internals 2008 41 Intel Ehci specification http www intel com technology usb ehcispec htm 42 Russell King Sending in a patch http www arm linux org uk developer patches info php 43 Russell King When i trace kernel in head s i found problems that may be caused by turn mmu on any idea http www arm linux org uk maili
155. k management e Periferiche Per ogni do minio esistono le modalit OFF dominio spento Active funzionamento normale e Standby L energia viene mantenuta al minimo possibile 4 6 Multiplexing GPIO e Pad Control I segnali di interfaccia dei device interni all Application Processor sono mappati sui pin di collegamento fisici attraverso un meccanismo di mul tiplexing Cosi a seconda dell implementazione possibile abilitare o meno le porte di collegamento di determinati dispositivi e scegliere tra le configurazioni possibili la mappatura segnali pin migliore 33 cap 4 I circuiti logici che gestiscono il multiplexing permettono inoltre di im postare il comportamento elettrico dei singoli pin pull up pull down isteresi etc detto Pad Settings e di eseguire le osservazioni necessarie per la generazione di interrupt da parte dell AVIC E possibile inoltre impostare determinati pin come General Purpose Input Output GPIO per modificare o acquisire via software lo stato dei singoli oppure per creare sorgenti interrupt 4 7 Interfaccia AIPS verso il bus di espansione L interfaccia AHB Lite 2 to IP Bus Rev 3 0 SkyBlue line interface AIPS fornisce la possibilit di collegare al bus di sistema AHB Lite dispositivi a banda limitata conformi allo standard Freescale SkyBlue line Sono presenti due moduli di interfaccia AIPS AIPS A ed AIPS B a 32 bit con 32 MByte di spazio di indirizzamento ciascuno Sono supportate letture e s
156. le contenuto nella directory document hardware del cd allegato alla board contenente gli schemi logici della mother board ed i datasheet di ogni componente utilizzato 22 3 In appendice A riportata la mappatura nello spazio di indirizzamento dell Application Processor i MX31L delle interfacce di controllo per ogni dispositivo presente nella piattaforma 5 1 L hardware della board nel dettaglio La figura 5 2 presenta il diagramma a blocchi della piattaforma dove possono essere individuati i componenti principali descritti in seguito in maggior dettaglio 5 1 1 Armadillo 500 SoM Il modulo CPU contiene l Application Processor Freescale i MX31L de scritto nel capitolo 4 un modulo SDRAM DDR da 64 MByte e 16 MByte 128 Mbit di memoria NOR flash della famiglia Intel P30 128P30B La connessione alla scheda madre avviene tramite due connettori FX10A 140S 14 SV Hirose Electric a 156 pin ciascuno 5 1 2 Porte seriali RS232 Sono presenti due porte seriali RS232 standard connesse ai primi due moduli UART dell Application Processor i MX31L attraverso interfacce channel driver per raggiungere la compatibilit elettrica dei segnali con lo standard di canale RS232 22 foglio 6 5 1 3 Rete Ethernet Connesso al bus di espansione presente un controller SMSC LAN9118 per reti Ethernet 10BASE T 100BASE TX 22 foglio 3 http translate google it 64 5 1 L hardware della board nel dettaglio UARTI RS23
157. locazione di memoria Raw Multimedia Elaborare in modo pi efficiente grandi quantit di dati permette di au mentare l offerta di funzionalit multimediali possono essere implemen 41 Microarchitettura ARM11 tati codec audio e video avanzati con un miglior rapporto qualit occu pazione di banda e pu essere migliorata la user experience inserendo grafica 3D nelle interfacce utente A questo proposito nell architettura ARMv6 sono state introdotte istru zioni Single Instruction Multiple Data SIMD per aritmetica a 16 e 8 bit addizioni sottrazioni moltiplicazioni con accumulatore ed altre L ac celerazione ottenuta nelle applicazioni multimediali pu arrivare fino a 2 4 volte le performance ottenibili con le architetture precedenti Bus dati pi larghi Sono state definite istruzioni a supporto di bus a 64 bit e maggiori pur mantenendo l architettura di elaborazione a 32 bit Questa organizzazio ne vuole migliorare il throughput del sistema aumentando la quantit di dati spostati in un singolo accesso mantenendo l efficienza energetica dell architettura a 32 bit Eccezioni ed Interruzioni pi veloci Gli interrupt sono un meccanismo fondamentale per i sistemi odierni sia nelle implementazioni di tipo real time dove l efficienza di gestione degli interrupt rappresenta un fattore critico dell intero sistema sistema sia nei normali sistemi a microprocessore dove miglioramenti nelle latenze degli inte
158. ls src Source download Per personalizzare la locazione dei repository da dove prelevare i sorgenti IPGK Repository IPGK un sistema di pacchettizzazione per appli cazioni come deb o rpm Ptxdist cos da l opportunit di creare pacchetti per le applicazioni a supporto di una piattaforma gi esi stente Java SDK Ptxdist permette di sviluppare pacchetti contenenti file bi nari Java per i quali necessario impostare la locazione del SDK Salvate le configurazioni si procede nella costruzione della toolchain OSELAS toolchain Il progetto per la cross toolchain OSELAS pu essere scaricato con cd SPRJROOT build tools wget http www pengutronix de oselas toolchain download OSELAS Toolchain 1 99 3 4 tar bz2 tar xf OSELAS Toolchain 1 99 3 4 tar bz2 cd OSELAS Toolchain 1 99 3 4 Il pacchetto scaricato contiene diversi progetti ptxdist possibili per co struire toolchain tutti risiedono nella sottodirectory ptxconfigs ls ptxconfigs arm 1136jfs linux gnueabigcc 4 1 2glibc 2 5binutils 2 17kernel 2 6 18 ptxconfig arm 1136jfs linux gnueabigcc 4 3 2glibc 2 8binutils 2 19kernel 2 6 27 sanitized ptxconfig arm cortexa8 linux gnueabigcc 4 3 2glibc 2 8binutils 2 18kernel 2 6 27 sanitized ptxconfig armeb xsca inux gnueabigcc 4 1 2glibc 2 5binutils 2 17kernel 2 6 18 ptxconfig armeb xsca l linux gnueabigcc 4 3 2glibc 2 8binutils 2 18kernel 2 6 27 sani
159. lt asm mach types h gt include lt asm mach arch h gt include lt asm mach time h gt include lt asm memory h gt include lt asm mach map h gt include lt mach common h gt include lt mach board armadillo5x0 h gt 108 6 3 Fasi del porting Perform board specific initializations static void __init armadillo5x0_init void static void __init armadillo5x0_timer_init void mx31_clocks_init 26000000 static struct sys timer armadillo5xO timer init armadillo5xO timer init ys MACHINE START ARMADILLOS5XO Armadillo 500 Maintainer Alberto Panizzo phys io AIPS1 BASE ADDR io pg offst AIPSI BASE ADDR VIRT gt gt 18 amp Oxfffc boot params PHYS OFFSET 0x00000100 map_io mx3l map io init irq mx3l init irq timer amp armadillo5bxO timer init machine armadillo5xO init MACHINE END I parametri da phys ioa init_irq sono definiti con valori di piatta forma standard per l Application Processor i MX31 mx31 map io mappa staticamente le aree di indirizzi dell AVIC della me moria centrale e degli AIPS1 e 2 mx31 init irq inizializza i registri di controllo dell AVIC Il parametro timer punta ad una struttura sys timer contenente le informazioni necessarie ad inizializzare il sottosistema di sorgenti clock di Linux int _ init mx31 clocks init unsigned long fref imposta il va lore della frequenza di riferimento in
160. mare la prossima commit Attenzione che se lo stesso file verr modificato successivamente la registrazione con git add le ultime modifiche non verranno considerate nella commit git diff Serve a visualizzare le ultime modifiche effettuate Se richia mato senza opzioni riporta le modifiche ai file del repository loca le effettuate successivamente l ultima commit e successivamente a quelle temporaneamente registrate con git add Se richiamato con il parametro cached visualizza solo le modifiche registrate tem poraneamente con git add che andranno a comporre la prossima commit Alle volte necessario annullare una o pi delle recenti commit a questo proposito esiste il comando git reset lt commit gt che presenta tre diver se modalit la prima di default esplicitata dall opzione mixed le informazioni di commit successive a quella selezionata vengono eliminate dal database index le modifiche relative sono mantenute nel repository e considerate come nuove La seconda viene definita con l opzione soft che a differenza della prima oltre a cancellare le informazioni di indice considera le modifiche relative come temporaneamente registrate per la commit successiva La terza hard resetta sia le informazioni nel da tabase sia le modifiche ai file per avere un repository pulito alla commit selezionata Le commit in questo comando vengono identificate nella forma HEAD per l ultima commit eseguita git reset H
161. mbolo M La seguente riga di comando creer limmagine del root filesystem nella directory plat form phyCORE i MX31 images ptxdist images e con le seguenti l immagine sar disponibile nella directory SPRJROOT root fs mkdir SPRJROOT rootfs cp platform phyCORE i MX31 images root tgz SPRJROOT rootfs cd SPRJROOT rootfs sudo tar xf root tgz sudo rm root tgz Importante il file di configurazione della rete della macchina target SPRJROOT rootfs etc network interfaces da modificare a seconda delle impostazioni della rete utilizzata per lo sviluppo Ad esempio Listing 6 6 Template per il file PRJROOT rootfs etc network interfaces etc network interfaces auto lo eth0 loopback interface iface lo inet loopback ethernet iface eth0 inet static address 192 168 0 10 netmask 255 255 255 0 102 6 2 Ambiente di sviluppo la macchina host 6 2 7 La connessione con la macchina target minicom Con la seguente riga di comando viene installato nella macchina host il programma minicom sudo apt get install minicom minicom un terminale per comunicazioni seriali sviluppato per sistemi POSIX grazie al quale sar possibile interagire con la macchina target Per configurare le impostazioni del programma minicom s Dove necessario configurare i parametri della connessione seriale in Serial port setup sulla base delle impostazioni della board riportate nella sezione 5 2
162. me l interfaccia verso il sistema di log e verso il database delle propriet Oltre alla questione prestazionale e di personalizzazione delle funzionali t delle librerie C C ci che ha spinto gli sviluppatori di Android per una re implementazione dalla base stata anche la questione della li cenza di distribuzione dato che le librerie C vengono collegate o linkate staticamente ad ogni applicazione sviluppata per Android componenti sviluppati con licenza proprietaria non potrebbero essere inseriti nel si stema se la licenza delle librerie fosse GPL o GPL derived come nel caso delle uClibc Per questo Bionic Libc rilasciata con licenza BSD la quale permette l inserimento di codice BSD in progetti rilasciati con licenza proprietaria anche closed source purch venga esplicitato il copyright originale Maggiori informazioni nell articolo 35 e nel documento non ufficiale 4 Surface Flinger Server che gestisce la fusione dei differenti layer grafici Surface verso l immagine prodotta a schermo Gli oggetti Surface possono essere di dimensioni variabili e contenere grafica 2D o 3D possono essere creati 21 Android Surface Flinger Figura 2 3 Workflow del server Surface Flinger indirettamente da un applicazione tramite oggetti grafici oppure da un server multimediale In Surface Flinger il rendering pu avvalersi delle librerie OpenGL ES in campo 3D ed accelerazioni hardware se presenti per g
163. mode 100644 target product armadillo500 mk diff git a target board armadillo500 AndroidBoard mk b target board armadillo500 AndroidBoard mk new file mode 100644 index 0000000 3358e6a dev null b target board armadillo500 AndroidBoard mk 0 0 1 6 LOCAL PATH call my dir file TARGET OUT KEYLAYOUT armadillo_keylayout kl ALL PREBUILT file file LOCAL PATH armadillo keylayout kl ACP 168 7 3 Personalizzare il processo di build per la board Armadillo 500 transform prebuilt to target diff git a target board armadillo500 BoardConfig mk b target board armadillo500 BoardConfig mk new file mode 100644 index 0000000 05192ce dev null b target board armadillo500 BoardConfig mk 0 0 1 16 config mk Product specific compile time definitions TARGET BOARD PLATFORM armadillo500 TARGET NO BOOTLOADER true TARGET NO KERNEL true TTARGET NO RADIOIMAGE true HAVE HTC AUDIO DRIVER false BOARD USES GENERIC AUDIO false Use fake camera for now USE CAMERA STUB true TTARGET USERIMAGES USE EXT2 true diff git a target board armadillo500 armadillo keylayout kl b target board armadillo500 armadillo_keylayout kl new file mode 100644 index 0000000 5a3592d dev null b target board armadillo500 armadillo_keylayout kl 0 0 1 2 k
164. ndo emulator system android directory kernel kernel goldfish imag show kernel shell Qemu eseguir la piattaforma indicata kernel e stack Android visualiz zando nella shell le stringhe di debug del kernel e fornendo al termine del caricamento del sistema una interfaccia di comando con i privilegi dell utente root 2 4 Android e il Business Da un rapporto ITU del settembre 2008 48 si apprende come il numero globale delle sottoscrizioni a contratti per dispositivi mobili sia arriva to a superare la cifra delle 4 000 000 000 unit Tomi T Ahonen in un suo post 20 fornisce una descrizione molto interessante della situazione globale a fronte di un numero cosi grande di dispositivi mobili attivi il numero di sottoscrizioni a contratti internet da locazioni fisse dell or dine dei 950 milioni quattro volte di meno mentre gli utenti attivi della rete globale si attestano nell ordine delle 1 300 milioni di unit Il mercato dell internet mobile parrebbe attestarsi ad una base d utenza di 350 milioni di unit ma se si conta la sovrapposizione di utenze una persona che possiede un computer connesso ad internet pu possedere un telefono capace di navigare questo numero pu essere addirittura 36 2 4 Android e il Business maggiore Ahonen stima a fine del 2008 che il numero di utenze mobili attive in internet per accessi browser sia pari a circa 1100 milioni di unit superiore al numero di accessi via P
165. ndroid permette la definizione di prodotti target differenti definendo un prodotto targhet possibile indicare quali moduli Android generare ed installare librerie ed applicazioni personalizzare propriet di sistema ed indicare una lista di file da inserire staticamente nel filesystem generato per tale prodotto 165 Android su piattaforma Freescale i MX31L Prodotti nativi Nella directory build target product sono definiti i prodotti targhet utilizzabili nativamente che sono min dev Prodotto minimale Genera uno stack Android di test di fun zionalit per un dispositivo includendo oltre alle librerie di sistema solamente i moduli strettamente necessari all avvio e navigazione nell ambiente Android generic Genera un prodotto contenente tutti i moduli e applicazioni di uso comune sim e sdk Prodotti generici pensati per supportare l emulatore contenu to nell SDK 7 3 1 Definire un prodotto Un prodotto definito attraverso il suo file nome_prodotto mk nella directory build target product Le variabili importanti che determinano un prodotto sono PRODUCT_NAME PRODUCT_DEVICE PRODUCT_BRAND PRODUCT_MODEL PRODUCT_MANUFACTURER Identificano il prodotto solo le prime tre sono obbligatorie ed in particolare PRODUCT_NAME viene utilizzata per la ricerca degli script specifici di generazione della piattaforma PRODUCT_LOCALES Lista delle stringhe di localizzazione da installare nel dispositivo es it_IT
166. ndroid su piattaforma Freescale i MX31L miIndex 1 miIndex miInfo activate FB ACTIVATE VBL minfo yoffset mIndex mInfo yres 0 if ioctl egl native window t fd FBIOPUT VSCREENINFO amp mInfo 1 LOGE FBIOPUT VSCREENINFO failed return 0 Il metodo utilizzato per comandare il driver video di traslare l immagine visualizzata dalla parte alta alla parte bassa dello schermo virtuale o vi ceversa utilizza l I O control FBIOPUT VSCREENINFO che risulta nell ar chitettura framebuffer Linux non solo in un PAN Traslazione dell area visualizzata ma forza una reinizializzazione delle impostazioni del driver che continuamente libera e rimappa la memoria del framebuffer reini zializzando i canali DMA verso il modulo IPU ed inviando al modulo DAC continui segnali di reset Il risultato un tempo per flip notevole continui flash a schermo e blocco del sistema dopo un certo lasso di tempo Soluzione proposta La soluzione pi semplice ma efficace quella di forzare il fallimento del test di valutazione del driver video sostituendo la riga if info yres virtual lt info yres 2 con if true Il sistema risultante ha una grafica fluida ed utilizzabile ma cos la memo ria allocata ecede nelle dimensioni di un frame video quella effettivamente necessaria Per risparmiare memoria allocata ed operare in modo pi consistente do vrebbe essere sostituito il tipo di I O control di aggiorname
167. ne 2 6 30 del kernel Linux quali ashmem pmem wake_lock gadget driver per adb alarm Network Security Il modulo ashmem stato sviluppato per kernel 2 6 27 e necessita di una piccola modifica per essere applicato nella versione del kernel Linux scelta La funzione mm shmem c int shmem zero setup struct vm area struct vma Differisce nelle due versioni del kernel Linux 2 6 27 e 2 6 30 nella presenza della chiamata al metodo ima shm check file parte dell ar chitettura di sicurezza Integrity Measurement Architecture IMA Perch anche le pagine allocate da ashmem vengano considerate da questa ar chitettura allora la chiamata a ima shm check file stata inserita 161 Android su piattaforma Freescale i MX31L nella nuova funzione introdotta dalla patch punto di collegamento tra il modulo Anonymous SHared MEMory system e Linux shmem mm shmem c void shmem set file struct vm area struct vma struct file xfile In allegato a questo documento sar presente una cartella androidPatches dove all interno il file 0001 Android 2 6 29 partial working merge patch unisce in una unica patch tutte quelle applicate presenti singolarmente nella sottodirectory applicate mentre quelle non applicate risiederanno nella sottodirectory NonApplicate E utile a questo punto segnare il livello raggiunto con un tag git al repository git tag android done Versione del repository alla quale possibile ritornare con il comando
168. ng list per gli utenti utilizzata per discussioni generali linux arm toolchain utilizzata per lo scambio di informazioni riguardo la generazione di una toolchain adatta linux arm kernel mailing list per gli sviluppatori vero centro di aggre gazione della comunit ARM Linux linux arm kernel la mailing list utilizzata per linvio ed il review delle patch Una patch un file testuale standardizzato dove vengono de scritte le modifiche proposte al codice sorgente del progetto generato automaticamente da utility apposite principalmente basate sul programma diff formattato in modo tale da po terne applicare le modifiche ad un repository locale in modo automatico Le patch inviate alla mailing list linux arm kernel devono sottostare ad alcune condizioni fondamentali per poter essere accettate 42 1 Contenuto della patch 8nttp www mutt org http www washington edu pine 0http git scm com http www arm linux org uk mailinglists lists php 74 6 1 Il progetto ARM Linux e Dovrebbe coprire una funzionalit oppure un singolo driver op pure un singolo bug fix modifiche a file di sistema dovrebbero essere isolate in patch separate e Ogni patch presentata se applicata non dovrebbe inreferire nella compilabilit del kernel e Il contenuto della patch deve essere consistente File patch validi possono essere creati con il comando git format patch dalla base directory del kernel tree dopo aver c
169. nglists faq php 44 Russell King Booting arm linux http www arm linux org uk developer booting php 2004 45 Markus Levy Mpf hosts premiere of arm1136 cores combine armv6 simd eight stage pipeline and more Microprocessor Report october 2002 46 Vincent Sanders Booting arm linux http www simtec co uk products SWLINUX files booting_ article html 2004 47 Linus Torvalds lt torvalds transmeta com gt Re Availability of kdb http lwn net 2000 0914 a lt debugger php3 2000 48 International Telecommunication Union Worldwide mobile cellular subscribers to reach 4 billion mark late 2008 http www itu int newsroom press_releases 2008 29 html 198
170. nit vastissima di sviluppa tori con diverse capacit e professionalit regolata in gruppi specializzati nel mantenimento ed evoluzione di ogni aspetto del kernel Sin dalla prima versione pubblicata nel 1991 Linus Torvalds ancora oggi per Linux un leader attivo in modo importante sia per la definizione degli obbiettivi sia nella gestione e sviluppo dei contributi al progetto Il sito internet kernel org la vetrina che presenta il codice ufficiale del kernel Linux detto anche mainline o versione vanilla mantenuto dall in tera comunit Linux Ogni contributo al kernel da parte di un singo lo sviluppatore passata la procedura di review viene inserito in questo repository e diventa parte del kernel ufficiale Linux Il processo di review assicura la qualit del mainline kernel effettuato all interno dei gruppi della comunit specializzati negli aspetti toccati dal contributo ed approvato dai leader degli stessi gruppi persone che hanno guadagnato importanza grazie al proprio operato e che gestiscono attivamente i repository locali per gruppo del kernel Linux evidenzia il pi possibile problemi presenti nel singolo contributo dalle semplici sviste nel Coding Style 10 ad errori nelle funzionalit nella sicurezza e possibili regressioni fino alla discussione di nuove proposte RFC per intervenire in modo pi profondo nelle funzionalit del kernel lhttp www kernel org 71 Linux su piattaforma Freescale i MX
171. no delle directory specifiche dei moduli 7 3 4 Generare il root filesystem definito dal prodotto armadillo500 Con le seguenti verranno generati i file immagine appositi per il prodotto armadillo500 secondo le impostazioni definite nei file specifici cd SPRJROOT android sources export TARGET PRODUCT armadillo500 export TARGET BUILD TYPE debug release make I file immagine risiederanno della directory out TARGET BUILD TYPE debug debug null target product armadillo500 Il file immagine ramdisk img nel formato CPIO compresso mentre system img e userdata img contengono filesystem ext2 Allora possibile creare il root fylesystem Android nella directory rootfsAndroid con cd PRJROOT mkdir rootfsAndroid SYSTEMDIR android sources out debug target product armadillo500 cp SYSTEMDIR ramdisk img rootfsAndroid ramdisk cpio gz cd rootfsAndroid gzip d ramdisk cpio gz cpio i F ramdisk cpio rm ramdisk cpio cd PRJROOT mkdir tmp sudo mount SYSTEMDIR system img tmp t ext2 o loop sudo cp tmp rootfsAndroid system r 171 Android su piattaforma Freescale i MX31L sudo umount SPRJROOT tmp sudo mount SYSTEMDIR userdata img tmp t ext2 o loop sudo cp tmp rootfsAndroid data r sudo umount SPRJROOT tmp La directory SPRJROOT root fsAndroid potr essere impostata come nfs root nei parametri di boot del kernel creato nella sezione
172. nte all interno della pagina con semplici pan e zoom Implementa tecnologie a supporto del Web 2 0 quali CSS Javascript DOM AJAX Viene utilizzato anche dalla Apple nel suo browser Safari e nella piattaforma S60 OpenCORE 9 Sviluppato da PacketVideo questo Media Framework for nisce la capacit di riprodurre e o registrare flussi video da file o stream di rete Sono supportati i pi diffusi codec audio video in clusi quelli sviluppati appositamente per il mondo mobile tra cui 3GPP MPEG 4 AAC MP3 H 263 H 264 e fornisce un interfaccia a plug in per il supporto di quelli mancanti Questo modello di gestione dei codec permette di sviluppare plug in specifici per i singoli dispositivi capaci di supportare le singole ac celerazioni hardware multimediali se disponibili OpenCORE presenta inoltre uno strato Content Policy Manager per gestire i contenuti protetti da copyright necessaria per supportare applicazioni che accedono ai servizi globali di distribuzione multi mediale in rete Dalvik Rappresenta una delle maggiori innovazioni di Android Dalvik una nuova implementazione di Java Virtual Machine ottimizzata per disposi tivi mobili sulla quale si basa tutto l ambiente applicativo Dalvik il punto di collegamento tra la semplicit dello sviluppo di ap plicazioni in linguaggio Java e lo sfruttamento dei modelli di sicurezza e gestione dei processi offerti da Linux con particolare attenzione alle pre stazioni in termini
173. nto del display da FBIOPUT_VSCREENINFO a FBIOPAN DISPLAY Quest ultimo definito esplicitamente per le sole operazioni di traslazione del frame visualizzato nella memoria video virtuale risultando in un operazione pi leggera per il driver Sfortunatamente il tempo per testare questa opzione non stato suf ficiente la semplice sostituzione di I O control non produce l effetto desiderato risultando in un blocco del driver video 174 7 4 Problemi e Soluzioni 7 4 2 Battery Le librerie user space di gestione dell energia dato che non presente una batteria e non possibile quindi acquisirne le informazioni di cari ca reagiscono come se ne esistesse una con un livello di carica troppo basso iniziando la transizione del sistema in modalit Power Save e vi sualizzando a schermo l informativa che indica la necessit di collegare il dispositivo alla rete elettrica In frameworks base services jni com_android_server_BatteryService cpp contenuta l implementazione del servizio BatteryService La patch seguente ne modifica il comportamento affinch nel caso la piattaforma sia stata generata per il prodotto armadillo500 la funzione di aggiornamento dello stato della batteria risponda con livelli di carica normali Listing 7 6 Livelli di carica della batteria ottimali per la piattaforma armadillo500 diff git a services jni com_android_server_BatteryService cpp b services jni com android server Bat
174. o 1 info yres virtual info yres flags amp PAGE FLIP LOGW FBIOPUT VSCREENINFO failed page flipping not supported if info yres virtual info yres 2 info yres virtual info yres flags amp PAGE FLIP LOGW page flipping not supported yres virtual td requested 9td info yres virtual info yres 2 buffer il puntatore alla memoria del framebuffer offscreen l array globale contenente i due puntatori all inizio delle due regioni di double buffering if flags amp PAGE FLIP offscreen 1 uint8 t buffer finfo line length info yres else offscreen 1 uint8 t malloc finfo smem len if offscreen 1 0 munmap buffer finfo smem len return NO MEMORY Il driver video mx3fb alloca una memoria video pari a due frame ed espone uno schermo virtuale doppio in altezza rispetto alla dimensione del singo lo frame Il test effettuato quindi viene passato e la modalit PAGE FLIP viene abilitata I problemi vengono nel momento in cui viene attuata la politica di page flipping Listing 7 5 Page flipping nel file frameworks base libs ui EGLDisplaySurface cpp uint32 t EGLDisplaySurface swapBuffers If we can t do the page flip just copy the back buffer to the front if mFlags amp PAGE FLIP memcpy mFb 0 data mFb 1 data mInfo xres mInfo yres 2 return 0 do the actual flip 173 A
175. occa anche se l istruzione successiva ancora di lettura o scrittura grazie ai due stadi nella Load Store Unit permettendone la conclusione in caso il dato sia presente hit under miss 44 3 3 Il Core ARM1136JF S La struttura permette un massimo di due istruzioni di lettura scrittura in attesa di completamento una terza provocher lo stallo della pipeline Micro TLB La microarchitettura ARM11 implementa il modello di Cache L1 definito nelle specifiche ARMv6 cache indirizzata fisicamente indirizzi di accesso fisici non virtuali con una ricca quantit di attributi tra cui il tag di processo L accesso tramite indirizzamento fisico richiede la presenza nel modulo MMU di una unit Translation Look aside Buffer TLB Questa deve es sere di dimensioni adeguate a quelle della cache costituendo cos un area considerevole on chip da alimentare ad ogni accesso alla memoria veloce Per migliorare l efficienza energetica degli accessi in cache ARM11 esten de questo meccanismo con una Micro TLB unit simile alla prima ma di dimensioni minori contiene le 10 entry ad accesso pi frequente Al lora il modulo MMU per accedere alla cache si servir innanzitutto della Micro TLB e poi se non stata trovata l entry di traduzione da indirizzo virtuale a fisico dell unit TLB principale Bus a 64 bit Per migliorare le performance del sistema mantenendo efficienza ener getica la microarchitettura ARM11 inserisce bus a
176. odi intermedi I PC moderni supportano diversi alberi USB solitamente un albero USB 2 0 alla velocit di 480 Mbit sec ed alcuni alberi USB 1 1 12 Mbit sec ciascuno quest ultimi creati alla connessione di almeno un device USB 1 1 Host Controllers Viene cos chiamata la porzione hardware che imple menta le funzionalit USB Host Sono stati sviluppati tre standard di interfaccia verso Host controllers nell evoluzione di standard USB UHCI e OHCI Universal Host Controller Interface e Open Host Control ler Interface standard sviluppati per USB 1 1 Supportano le due velocit Low Speed 1 5 Mbit sec 192 KByte sec e Full Speed 12 Mbit sec 1 5 MByte sec EHCI Enhanced Host Controller Interface standard sviluppato da Intel per controller USB 2 0 Supporta la velocit di trasferimento High 56 4 14 Secured Digital Host Controller SDHC Speed 480 Mbit sec 60 MByte sec propria dello standard USB 2 0 Controller USB 2 0 che implementano lo standard EHCI raggiungono la retrocompatibilit con i dispositivi USB 1 1 solamente se e Dispongono di almeno un Companion Controller UHCI o OHCI mo duli hardware interni al Controller USB con registri di interfaccia indipendenti dal Controller EHCI che prendono il controllo del bus USB nel caso venga connesso un device USB 1 1 e Viene connesso un Hub USB 2 0 che implementa al suo interno il modulo Transaction translator capace di incapsulare le due moda
177. ompromesso dalle successive attivit del kernel decompressione o inizializzazione del RAM disk solitamente risiede nei primi 16KB della memoria di sistema Esecuzione del kernel Esistono due modalit di esecuzione del kernel Linux la prima normale prevede la copia dell intera immagine in RAM in una posizione appropriata il kernel si riserva di utilizzare i 16 KB inferiori all indirizzo di start che sommati allo spazio per la tagged list colloca solitamente l immagine a 32KB dall inizio della RAM La seconda XIP eXecituin In Place permette a kernel compilati appo sitamente di eseguire direttamente dal dispositivo di memoria di massa dove risiede Ad ogni modo in entrambe le modalit l ambiente di esecuzione deve essere cos configurato Registri della CPU r0 0 x1 7 id di macchina r2 indirizzo fisico in RAM della tagged list solitamente con offset Ox100 rispetto all inizio della RAM Modalit CPU Tutti gli interrupt devono essere disabilitati La CPU deve essere in modalit SVC Supervisor Call Cache MMU Il dispositivo MMU non deve essere attivo La cache istruzioni pu essere attiva La cache dati deve essere disabilitata e vuota Dispositivi Non devono essere attivi trasferimenti DMA da e per dispositivi e Il boot loader infine deve saltare alla prima istruzione dell immagine del kernel inizio dell immagine E il kernel ora ad avere il controllo della CPU Di se
178. one remota Per sincronizzare il repository locale con le ultime modifiche remote suffi ciente eseguire cd SPRJROOT android sources repo sync 7 1 3 Prima build di Android Per verificare la funzionalit del repository creato si pu eseguire una prima build dell intero stack con cd SPRJROOT android sources make 156 7 2 Ottenere un kernel valido Se il processo andr a buon fine verranno prodotti nella directory out target product generic i file immagine ramdisk img Contiene quei file strettamente necessari per partire con il processo di inizializzazione dell ambiente Android Lo scheletro del root filesystem Android Il file binario init di inizializzazione dello stack Gli script che determinano le operazioni eseguite dal processo Init init rce init machineName rc system img Contiene tutti i file binari e di configurazione dello stack Android Dovr essere montato nella directory system userdata img Contiene una versione iniziale della partizione dedicata ai dati utente Dovr essere montato nella directory data La toolchain utilizzata compilata per architettura ARMv5te e risiede nella directory prebuilt linux x86 toolchain arm eabi 4 2 1 bin del repository 7 2 Ottenere un kernel valido La directory kernel delrepository Android contiene il repository git locale del kernel Android Linux derived Le corrispondenti versioni del kernel Linux supportatate sono cd S
179. onfermato le modifiche con il comando git commit e Il codice della patch deve sottostare alle direttive Coding Style 10 del kernel Linux ed essere preservato da possibili variazioni sostituzione del carattere tab wrap automatico delle linee 2 L oggetto della patch deve essere significativo Deve contenere i tag specifici che indicano a quale piattaforma e board ci si sta riferendo per la piattaforma MXC PXA OMAP per la board pcm037 sa1100 Armadillo5xO Deve contenere un indicativo di versione della patch se ripro posta con modifiche Deve descrivere brevemente la modifica apportata 3 Il corpo della mail deve iniziare con una descrizione dettagliata delle modifiche apportate 4 Patch che richiedono una catena di dipendenze devono esplicita mente definirla 5 Deve essere contenuta l indicazione di branch e versione del kernel sulla quale stata basata la patch 6 Deve essere presente la firma dell autore con il tag Signed off by 7 E preferibile che il contenuto della patch sia incollato nel corpo della mail Patch incomplete o formalmente errate non proseguono nel processo di review I membri della comunit ARM Linux sono riuniti in centri di interesse che gravitano attorno alle diverse piattaforme Ogni gruppo gestisce un proprio repository di sviluppo contenente le patch recentemente appro vate per tale piattaforma periodicamente i mantainer della piattaforma provvedono a sincronizza
180. oo1s 9 e versione di compatibilit di ptxdist Terminata la configurazione si procede a dare il via al processo di build ptxdist go Durante l esecuzione stata richiesta l utility fakeroot installabile con sudo apt get install fakeroot Al termine del processo nella cartella S PRJROOT tools OSELAS Toolchain 1 99 3 arm 1136jfs linux gnueabi gcc 4 3 2 glibc 2 8 binutils 2 19 kernel 2 6 27 sanitized bin sono pre senti i file binari della cross toolchain creata 6 2 5 Configurare e compilare il kernel Gli script di configurazione del kernel sono sensibili a determinate varia bili d ambiente impostate nella shell corrente Per configurare un kernel per architettura ARM deve essere impostata nella la variabile d ambiente ARCH arm Allora con 26 PRJROOT deve essere espansa al suo valore 98 6 2 Ambiente di sviluppo la macchina host cd SPRJROOT kernelLinus linux 2 6 ARCH arm make familydefconfig vl nl n ou make menuconfig gt Text Based or make gconfig gt Gtk Based or make xconfig gt Qt Based Potranno essere scelte tutte le caratteristiche volute del kernel sulla ba se del file di configurazione di default specifico per la macchina uti lizzata Nel caso della famiglia di Application Processor i MX il file di configurazione standard make mx3 defconfig Le funzionalit del kernel vengono selezionate attraverso voci di menu a due o tre stati dove il simbolo in
181. orgenti ed extra tool necessari Allora mkdir media dati android e viene inserita la riga seguente all interno di android sh Listing 6 3 android sh La variabile PRJROOT export PRJROOT media dati android Shell di lavoro 90 6 2 Ambiente di sviluppo la macchina host Nel proseguo della trattazione ci si riferir a tale directory con la variabile d ambiente PRJROOT La directory radice del progetto acquisir via via la seguente struttura build tools Conterr tutto ci che necessario a creare la cross toolchain build BSP Conterr tutto ci che necessario a creare un root filesy stem valido kernelLinus Repository locale del mainline kernel kernelMXC Repository locale del branch MXC rootfs Filesystem root per la macchina target tools Conterr la completa toolchain cross platform 6 2 2 Il kernel Git il software di version control distribuito utilizzato per mantenere i repository di sviluppo del kernel La documentazione completa dei comandi git risiede nel sito ufficiale mentre una versione pi snella presentata nel documento 31 Git pu essere installato e configurato con sudo apt get install git core git config global user name Alberto Panizzo git config global user email maramaopercheseimorto gmail com Successivamente si procede alla clonazione del repository del mainline kernel mkdir PRJROOT kernelLinus cd SPRJROOT k
182. ory Map in appendice A static struct resource armadillo5xO nor flash resource flags JORESOURCE MEM start CSO BASE ADDR end CSO BASE ADDR SZ_16M 1 Parametri del driver physmap c I parametri del driver sono definiti dalla struttura physmap_flash_data struct map_info struct physmap_flash_data unsigned int width In Octets void set_vpp struct map info int unsigned int nr parts unsigned int pfow base struct mtd partition parts 135 Linux su piattaforma Freescale i MX31L Dove la struttura mtd_partition definita come Partition definition structure An array of struct partition is passed along with a MID object to add mtd partitions to create them For each partition these fields are available name string that will be used to label the partition s MID device size the partition size if defined as MTDPART SIZ FULL the partition will extend to the end of the master MID device offset absolute starting position within the master MID device if defined as MIDPART OFS APPEND the partition will start where the previous one ended if MTDPART OFS NXIBLK at the next erase block mask flags contains flags that have to be masked removed from the master MID flag set for the corresponding MID partition For example to force a read only partition simply adding MID WRITEABLE to the mask flags w
183. parte dello standard AMBA BSP Board Support Package CCM Clock Control Module CLI Command line interface CSI Camera Sensor Interface DAC Digital to Analog Converter DI Display Interface DMA Direct Memory Access Modalit di accesso alla memoria che permette a periferiche abilitate di accedervi direttamente senza il coinvolgimento attivo della CPU DPLL Digital Phase Locked Loop Dispositivo in grado di sincronizare i fronti di salita o discesa di pi segnali di clock digitali DSP Digital Signal Processor EHCI Enhanced Host Controller Interface Specifiche Intel di Interfaccia per la gestione di controller USB 2 0 EMI External Memory Interface Modulo per la gestione della memoria esterna presente negli Application Processor i MX31 i MX31L EPIT Enhanced Periodic Interrupt Timers EPL Eclipse Public License FIR Fast Infrared Nelle connessioni IrDA 1 1 identifica la velocit di trasferimento 4 Mbit s 190 ELENCO DEGLI ACRONIMI GPIO General Purpose Input Output I pin di un processore impostati in modalit GPIO possono essere utilizzati per acquisirne lo stato alto o basso o definirne lo stesso possono inoltre agire come sorgente di interrupt GPT General Purpose Timer I C Inter Integrated Circuit I Inter IC Sound IC Image Converter IDMAC Image DMA Controller IP Intellectual Property ARM Ltd definisce IP una entita licenziabile Core di elaborazione Standerd per Bus di sistema etc
184. per uno scopo specifico al contrario dei comuni PC progettati per l esecuzione delle pi svariate applicazioni Esistono diversi tipi di sistemi embedded caratterizzati da diversi gradi di specificit delle funzionalit offerte in relazione agli obbiettivi proget tuali di affidabilit e prevedibilit richieste dai sistemi di controllo per macchine industriali ai dispositivi di sicurezza delle automobili ABS EBD etc dai dispositivi per il networking switch access point ai dispositivi mobili di ultima generazione Tutti questi sistemi sono sviluppati con lo scopo di migliorare la quali t della vita da un lato automatizzando in modo intelligente ed affidabi le compiti critici e dall altro fornendo funzionalit sempre pi ricche per l utente Una definizione generale I sistemi embedded sono sistemi di calcolo con una forte in tegrazione tra hardware e software e progettati per garantire ottime prestazioni nello svolgimento di un compito specifico La parola inglese embedded significa incluso e riflette il fatto che questi sistemi sono spesso una parte integrante di un si stema molto pi grande che se incorporato in qualche dispo sitivo viene chiamato anch esso sistema embedded un siste ma embedded pu essere composto da pi sistemi embedded Sistemi Embedded e Mobile Devices interagenti tra loro Particolare attenzione verr posta in questo elaborato ai Dispositivi Mo bili Mobile Devices
185. pli l amp view l amp part 4 Documentazione android open source project http source android com documentation 6 The frame buffer device Nel Kernel root tree 7 8 9 10 Documentation fb framebuffer txt e altri nella cartella Gpio interfaces Nel Kernel root tree Documentation gpio txt Kernel parameters Nel Kernel root tree Documentation kernel parameters txt Linux driver model Nel Kernel root tree Documentation driver model x Linux kernel coding style Nel Kernel root tree Documentation CodingStyle txt 195 BIBLIOGRAFIA 11 Linux kernel development process Nel Kernel root tree Documentation development process 12 The linux usb host side api DocBook nel Kernel root tree 13 Mounting the root filesystem via nfs nfsroot Nel Kernel root tree Documentation filesystems nfsroot txt 14 Platform devices and drivers Nel Kernel root tree Documentation driver model platform txt 15 Usb gadget api for linux DocBook nel Kernel root tree 16 Video android developer http developer android com intl it videos index html 17 Intel strataflash embedded memory p30 family pc28f128p30b85 Datasheet Intel 2006 18 Lan9118 high performance single chip 10 100 non pci ethernet controller Datasheet SMSC 2008 19 Cmos 330 mhz triple 8 bit high speed video dac adv7125 Datasheet Analog Devices 2009 20 Tomi Ahonen Trill
186. porto quindi composto da 107 Linux su piattaforma Freescale i MX31L Un ID di macchina appropriato Atmark ha gi registrato in passato l id ARMADILLO5XO per la board Armadillo 500 ed ha codificato lo stesso valore nel boot loader Hermit At Listing 6 8 Estratto del file arch arm tools mach types machine_is_xxx CONFIG_xxxx MACH TYPE xxx number armadillo5x0 MACH_ARMADTLLO5X0 ARMADILLO5X0 1260 Per questo la piattaforma di supporto qui creata utilizzera lo stesso iden tificatore MACH_TYPE_ARMADILLO5X0 senza la necessit di registrarne uno nuovo I Il sorgente di supporto All interno della directory arch arm mach mx3 deve essere creato il file armadi1105x0 c contenente una implementazio ne di base della struttura dati machine desc Listing 6 9 arch arm mach mx3 armadillo5x0 c armadillo5x0 c Copyright 2009 Alberto Panizzo lt maramaopercheseimorto gmail com gt updates in http alberdroid blogspot com Based on Atmark Techno Inc armadillo 500 BSP 2008 Based on mx3lads c and pcm037 c Great Work This program is free software you can redistribute it and or modify it under the terms of the GNU General Public License as published by the Free Software Foundation either version 2 of the License or at your option any later version include lt linux types h gt include linux init h include lt linux clk h gt include lt mach hardware h gt include
187. postando l impulso di clock nella porzione superiore del periodo imponendo il fron te di salita all istante t5 4 2 Tzsp crx ed il fronte di discesa all istante tpizel 4 HEP CER La patch presentata per non stata accettata dato che inserisce codice specifico per una singola board all interno di un driver generico 134 6 3 Fasi del porting Sono state fatte delle proposte per inserire un nuovo parametro di confi gurazione del driver di modo da esplicitare le posizioni dei fronti di salita e discesa in modo proporzionale alla dimensione del periodo di pixel 6 3 6 Modulo flash NOR In riferimento alla sezione 5 1 1 nel modulo CPU Armadillo 500 presen te una memoria flash di tipo NOR organizzata come in tabella 5 1 Il chip di memoria connesso attraverso un bus dati a 16 bit 17 ed mappato direttamente nello spazio di indirizzi fisici dell Application Processor secondo la tabella Memory Map in appendice A Il driver ge nerico in kernel drivers mtd physmap c fornisce supporto per questa tipologia di mapping delle memorie flash per il quale verr creato un descrittore di dispositivo specifico L interfaccia di comando delle flash Intel implementata nel driver di chip drivers mtd chips cfi cmdset 0001 c Risorse del dispositivo Il driver physmap c richiede la sola risorsa di memoria che indica la posizione della memoria flash nello spazio di indizizzi dell Application Processor In riferimento alla Mem
188. processo di build deve essere inserito nella lista PRODUCT_MAKEFILES contenuta nel file build target product AndroidProducts mk 7 3 2 Impostzioni board specific di generazione dello stack La definizione di prodotto presentata fino ad ora indica al processo di generazione i contenuti e le propriet dello stack Android voluto ma non entrano nel merito tecnico di collegamento verso hardware kernel tipologia di filesystem etc Ad un prodotto target sono associati determinati script di extra configurazione e generazione della piattaforma questi sono definiti nei file BoardConfig mk e AndroidBoard mk contenuti nella directory build target board product_name BoardConfig mk Viene analizzato nella fase di configurazione del pro cesso di build e definisce alcune variabili d ambiente che influiscono nella generazione dei moduli TARGET BOARD PLATFORM Definisce il nome della piattafor ma verr impostata la propriet di sistema ro board platform TARGET BOARD PLATFORM TARGET NO BOOTLOADER Se true non viene generato il bootloader TARGET NO KERNEL Se rue non viene generato il kernel TARGET NO RADIOIMAGE Se true non vengono generate le librerie di gestione delle comunicazioni radio 167 Android su piattaforma Freescale i MX31L HAVE_HTC_AUDIO_DRIVER Se true viene generato lo stub driver An droid in grado di gestire l interfaccia audio attraverso il d
189. pzione visualizzare la lista delle mail ricevute Android al momento del lancio dell applicazione esegue l attivi t marcata come principale e questa a seconda degli input del l utente attiver le attivit successive formando cos l intera inter faccia utente dell applicazione Services Un servizio un contenitore per compiti da eseguire in back ground senza la necessit di una interfaccia utente Viene utilizzato per mantenere in esecuzione determinati compiti come la riprodu zione di un file audio che l utente si aspetterebbe continuassero anche navigando in applicazioni differenti Come ogni componente di una applicazione anche i servizi eseguo no all interno del main thread nel processo assegnato ci impone per compiti di lunga durata di eseguirli in thread separati per non bloccare gli altri componenti dell interfaccia utente I servizi posso no esporre una interfaccia remota definita tramite il linguaggio AIDL per potervi accedere tramite IPC Broadcast receivers Componenti in genere dormienti che ricevono e reagiscono a eventi inviati a tutte le applicazioni Gli eventi posso no essere propri del sistema come low battery cambiamento della time zone oppure generati da altre applicazioni una applicazione che comunica alle altre d aver completato il download di una risorsa e quindi pronta all uso Content Providers Utilizzati per mettere a disposizione un specifico sottoinsieme di dati dell
190. r i primi messaggi di debug antecedenti l ini zializzazione del vero e proprio driver seriale Linux Le stringhe di debug successive verranno scritte nella console di sistema che pu essere diretta sulla stessa porta seriale oppure a video definita dal parametro del kernel console Per una descrizione completa dei parametri possibili si faccia riferimento al documento 8 Riconoscimento della macchina Il boot loader deve riconoscere il tipo di macchina sul quale sta eseguendo e passarne l id associato al kernel E attraverso lid di macchina che il kernel individuera la piattaforma corretta da utilizzare La lista degli id supportati dalla versione locale dei sorgenti presente nel file 1inux arch arm tools mach types mentre in rete presente la versione aggiornata Inizializzazione della kernel tagged list Il boot loader deve creare ed inizializzare la lista dei tag utilizzata per passare i parametri del kernel E una struttura dati standardizzata dove i parametri vengono delimitati da tag di separazione Una lista valida inizia con ATAG_CORE e termi na con ATAG_NONE Una lista minimale per il kernel potrebbe essere la seguente base gt ATAGCORE ATAGMEM indirizzi crescenti ATAGNONI LH 18http www arm linux org uk developer machines 78 6 1 Il progetto ARM Linux La lista deve risiedere in RAM in uno spazio di memoria che non deve essere c
191. rafica 2D Per aumentare la fluidit delle animazioni e limitare possibili errori di rendering in Surface Flinger implementata una sorta di double buffe ring se il driver video supporta uno schermo virtuale di dimensioni dop pie rispetto all immagine visualizzata allora Surface Flinger program mato per scrivere i nuovi frame alternando nelle porzioni dello schermo virtuale non visualizzate Solo al completamento del nuovo frame lo schermo virtuale verr traslato nella corretta posizione eliminando cosi visualizzazioni di frame incompleti Audio Flinger Come Surface Flinger il server Audio Flinger si occupa di multiplexare i differenti canali audio provenienti dai diversi Server Tone Audio Me dia Player Gestisce inoltre il routing del flusso ottenuto su i diversi dispositivi di output Cuffie Altoparlante Bluetooth SQLite WebKit Media Framework Progetti Open source di supporto alle attivit di base inclusi nella piatta forma SQLite Relational Database Management System RDBMS molto leg gero utilizzato per memorizzare ed organizzare gran parte dei dati della piattaforma in un database relazionale Shttp www sqlite org 22 2 2 Architettura WebKit Motore di rendering per pagine web capace di sfruttare ap pieno le dimensione del display di un dispositivo mobile attraverso la visualizzazione full desktop view senza barre degli strumenti e la possibilit di navigare dinamicame
192. rati molto importanti Un processo visibile se e Contiene un attivit visibile in secondo piano nello stato Pau sed e Contiene un servizio collegato ad una attivit visibile 3 Un processo di servizio un processo che contiene almeno un ser vizio attivato con il metodo startService che non ricade nelle 33 Android due gerarchie superiori I servizi stand alone di questo tipo sono considerati importan ti perch possono eseguire attivit importanti ma non vitali per l utente come riprodurre un file musicale 4 Un processo in background un processo che non influenza l in terfaccia utente ne le elaborazioni in corso Navigando nell ambiente Android un buon numero di processi creati possono ricadere in questa categoria questi vengono ordinati in una coda LRU least recently used e terminati a partire dal pi vecchio per essere ricaricati nel caso l utente ne richieda la visualizzazio ne Se le callback delle attivit sono implementate correttamente questo meccanismo avviene in modo trasparente all utente 5 Un processo vuoto un processo che non contiene nessun compo nente attivo Il motivo che spinge a mantenere un processo del genere l effet to cache ottenuto nel caso l utente ri acceda ad una applicazione recentemente chiusa 2 3 Android SDK Il primo Software Development Kit SDK Android stato rilasciato in Agosto 2008 Si tratta di una serie di tool per lo sviluppo e test
193. re Ptxdist Al momento della scrittura di questo documento la versione pi recente la 1 99 18 Per scaricare ed installare ptxdist si procede in questo modo bin android sh mkdir SPRJROOT build tools cd SPRJROOT build tools wget http www pengutronix de software ptxdist download v1 99 ptxdist 1 99 18 tgz wget http www pengutronix de software ptxdist download vl 99 ptxdist 1 99 18 patches tgz tar xf ptxdist 1 99 18 tgz tar xf ptxdist 1 99 18 patches tgz cd ptxdist 1 99 18 configure prefix PRJROOT build tools make Xu ouod uu V unrnnnn nm sudo make install Perch il file binario ptxdist possa essere ricercato dalla shell il file android sh verr modificato in questo modo Listing 6 4 android sh Ptxdist nel percorso di ricerca export PRJROOT media dati android export PATH PATH PRJROOT build tools bin Shell di lavoro Il passo successivo quello di configurare ptxdist ptxdist setup Il menu risultante permette di configurare diversi aspetti del sistema di build Proxies Se la macchina host risiede dietro Proxy di rete definirne le configurazioni 4nttp www pengutronix de software ptxdist download 95 Linux su piattaforma Freescale i MX31L Project Searchpath Directory di ricerca per template di progetti SPRIROOT t 001529 Source Directory Directory dove verranno scaricati tutti i pacchetti sorgente necessari al progetto PRJROOT build too
194. re lo sviluppo con il repository principale ARM Linux detto rmk gestito da Russell King anche questo periodicamente 75 Linux su piattaforma Freescale i MX31L sincronizzato con il repository mainline di Linus con cadenze costanti secondo il processo di sviluppo standard del kernel Il gruppo che mantiene la piattaforma per processori freescale i MX for temente supportato dall azienda Tedesca Pengutronix che ne gestisce essa stessa il repository Git pubblico di sviluppo 4 Per fare in modo che le patch proposte attraverso la mailing list linux arm kernel vengano notate velocemente dai componenti di questo gruppo l oggetto della mail deve contenere uno dei due tag IMX o MXC 6 1 2 Organizzazione del codice di supporto per l architettura ARM Dalla versione 2 6 27 del kernel Linux stato eseguito un riposiziona mento di tutto il codice specifico ARM Ora i sorgenti specifici per questa architettura compresi i file header risiedono interamente nella sottodi rectory arch arm del kernel tree organizzati nella seguente struttura kernel contiene le funzionalit base del kernel specifiche per l archi tettura ARM assieme alle routine di inizializzazione mm contiene il codice di gestione della memoria tlb mmu cache dma lib contiene librerie specifiche e o ottimizzate per l architettura ARM come backtrace memcpy funzioni di i o div etc include contiene i file header per l architettura ARM com
195. risolti giungendo a risultati concreti Nell acquisire il know how necessario per lo svolgimento di questo lavoro di tesi stato notevole lo sforzo di ricerca di documentazione specifica riguardo i singoli progetti open source in special modo Kernel API In determinate porzioni del kernel la documentazione riguar do a particolari meccanismi del kernel o parametri di impo stazioni dei driver sono lasciate alla sola analisi del codice stesso senza che esista documentazione specifica Il modello utilizzato dalla comunit eleva a fonte di docu mentazione la mailing list di sviluppo luogo dove si posso no ricevere risposte a domande precise che alcune volte possono subire difetti rispetto alla realt implementata Android Il progetto Android dispone di una buona documentazione in rete riguardo l ambiente applicativo ma deficita in gran par te della documentazione relativa ad ogni modulo degli strati inferiori dalle librerie ai moduli kernel Come per le kernel API le informazioni vengono scambia te nelle mailing list del progetto dove in questo caso non sempre le risposte sono autorevoli 185 Conclusioni Riguardo ai risultati ottenuti presentati nel capitolo 8 possono essere fatte le seguenti considerazioni Piattaforma di supporto Linux per la board Atmark Armadillo500 Il livello di supporto raggiunto il massimo possibile dato il tempo e la forza lavoro a disposizione Le due lacune importanti supporto a
196. river specifico HTC USE CAMERA STUB Dato che l assenza di un driver stub di gestione del sensore video pregiudica il funzionamento del Media Server se true genera un driver stub dummy che non fa nulla TARGET USERIMAGES USE EXT2 Se true allora i file immagi ne Android utilizzeranno il filesystem ext2 yaffs2 altrimenti AndroidBoard mk Parte integrante della fase esecutiva di build uti lizzato per svolgere dei compiti specifici board related come la generazione della tabella dei caratteri La patch risultante Ecco le modifiche introdotte nell architettura di generazione dello stack Android Listing 7 3 Add Armadillo500 board product definition patch From e66b631aecc95eee3ac815c1dd5d2a79401620b0 Mon Sep 17 00 00 00 2001 From Alberto Panizzo lt maramaopercheseimorto gmail com gt Date Fri 16 Oct 2009 22 03 44 0200 Subject PATCH Add Armadillo500 board product definition target board armadillo500 AndroidBoard mk target board armadillo500 BoardConfig mk target board armadillo500 armadillo_keylayout kl n M0 200 target product AndroidProducts mk target product armadillo500 mk 5 files changed 33 insertions 1 deletions create mode 100644 target board armadillo500 AndroidBoard mk create mode 100644 target board armadillo500 BoardConfig mk create mode 100644 target board armadillo500 armadillo_keylayout kl create
197. rm device h include lt mach hardware h gt include lt asm mach types h oh ok ok oR k ok ok k k k k k k k k 26 98 cx 27 67 include asm mach map h include mach common h gt include mach imx uart h include lt mach iomux mx3 h gt include lt mach board armadillo5x0 h gt include devices h static int armadillo5x0_pins UARTI MX31 PIN CTS1 CTS MX31 PIN RTS1 RTSI MX31 PIN TXD1 TXDIl MX31 PIN RXD1 RXDI UART2 MX31 PIN CTS2 CTS2 MX31 PIN RTS2 RTS2 MX31 PIN TXD2 TXD2 MX31 PIN RXD2 RXD2 t tttt ttt tt t 114 6 3 Fasi del porting UART device data static struct imxuart platform data uart pdata flags IMXUART HAVE RTSCTS t t4 f Perform board specific initializations static void __init armadillo5xO init void mxc_iomux_setup_multiple_pins armadillo5x0_pins ARRAY SIZE armadillo5xO pins armadillo5xO Register UART mxoe register device amp mxoc uart deviceO amp uart pdata mxoe register device amp mxoc uart devicel amp uart_pdata t static void __init armadillo5xO timer init void Abilitare la compilazione del driver seriale imx c con supporto alla console Nel menu di configurazione del kernel devono essere selezionate per la presenza statica le due opzioni Device Drivers Character devices gt Serial drivers gt IMX serial port support e Consol
198. rrupt comportano un aumento diretto delle performance globali Per migliorare la latenza agli interrupt sono state introdotte le seguenti modifiche Nuova modalit Fast Interrupt settando il bit di stato FI nel registro CP15 viene abilitata la modalit Fast Interrupt dove anche le istru zioni di lettura e scrittura multiple atomiche altrimenti possono essere interrotte Gestione Vettoriale degli Interrupt settando il bit VE nel registro CP15 viene abilitato il Controller Vectored Interrupt Controller VIC ester no per una gestione accelerata del processo di risposta all evento Stack indipendenti la nuova organizzazione dei registri permette di mantenere stack indipendenti per le diverse modalit operative eliminando l overhead della gestione software per tali stack 42 3 2 Innovazioni nella microarchitettura ARM11 3 2 Innovazioni nella microarchitettura ARM11 Pipeline a 8 stadi Il processo di elaborazione delle istruzioni suddiviso ora in 8 stadi secondo lo schema in figura 3 1 Decode Dynamic branch StaticBP Register prediction RStack Data cache access ARM11 MICROARCHITECTURE LS add ocr DC2 WB Is Load store pipeline Figura 3 1 Stadi della Pipeline nell architettura ARM11 arte Nel tentativo di ridurre al minimo le inefficienze dovute all inceppamento della pipeline si agito su pi fronti a seconda della causa Interdipendenza tra le istruzioni in esecuzione n
199. rta RS 232 o IrDA ULPI UTMI Low Pin Interface Interfaccia standard per sistemi ad IP USB 2 0 tra link controller USB ed i dispositivi che pilotano effettivamente il bus transceiver che implementano il livello fisico PHY USB Universal Serial Bus Standard di collegamento per device esterni USBH USB Host USBOTG USB On The Go UTMI USB Transceiver Macrocell Interface Standard Intel di interfaccia verso moduli PHY solitamente posti in device link layer e physical layer risiedono nello stesso chip La versione UTMI implementa l add on OTG dello standard USB RAM Random Access Memory VIC Vectored Interrupt Controller VFP Vectorial Floating Point Coprocessore vettoriale per calcoli in virgola mobile Estensione per i processori ARM implementa lo standard IEEE 754 estendendolo con istruzioni che operano in parallelo su piccoli vettori 193 ELENCO DEGLI ACRONIMI 194 Bibliografia 1 2 wire real time clock s 35390a Datasheet Seiko Instruments Inc 2 Android build system Nel repository Android build core build system html 3 Armadillo 500 base board parts datasheet Nel CD allegato alla 4 5 board la cartella document hardware parts Bionic c library overview http android platform googlegroups com attach 0f8eba5ecb95c6 4 OVERVIEW TXT gda XLruRUUAAABIRXOVyyH5sRXFfLYnAq48KOFqr 45JqvtfiaR6gxIj6ksrkgpaf ULSZG2VEZPWeO3flcykW9hbJ1ju6H3kglGuliLHeqhw4ZZRj3RjJ A amp
200. si ad un modulo controller dedicato Per il Controller NAND Flash degli Application Processor del la famiglia i MX stato sviluppato il driver presente nel kernel tree drivers mtd nand mxc nand c modificato di recente per il supporto a chip flash NAND organizzati in pagine da 2 KByte Parametri del driver La struttura che determina i pos sibili parametri del driver mxc_nand definita nel file arch arm plat mxc include mach mxc nand h Listing 6 21 Estratto del file arch arm plat mxc include mach mxc nand h struct mxc nand platform data int width data bus width in bytes int hw ecc O if supress hardware ECC La larghezza del bus dati di connessione e di 8 bit per cui il parame tro width sar impostato a 1 e dato che il Controller NAND Flash del l Application Processor i MX31 contiene il modulo Hardware Error Code Correction 33 cap 20 8 4 anche il parametro hw ecc sar impostato a l Extra configurazione del Controller NAND Flash Il Controller NAND Flash utilizza il bit di stato NFMS presente nel registro MXC_CCM_RCSR per venire a conoscenza della dimensione delle pagine del chip flash collega to 0 512 byte 1 2Kbyte Questo bit dovrebbe essere correttamente inizializzato durante il processo di boot a 1 dal boot loader cosa che non avviene A questo si posto rimedio nella funzione di init della piattaforma arma dillo5x0 utilizzando le funzioni di i o fornite dall interfaccia linux io h
201. si tratta di una categoria dei sistemi embedded che ha visto un notevole sviluppo in questi ultimi anni grazie alla spinta tec nologica portando all aumento delle funzionalit offerte ed alla nascita di prodotti ibridi per una risposta migliore alle esigenze dell utente 1 1 Mobile Devices Vengono classificati Mobile Devices tutti quei dispositivi elet tronici a microprocessore di dimensioni ridotte dotati di una forma di alimentazione integrata che ne permetta il funziona mento slegato dalla rete elettrica Solitamente possiedono uno schermo ed una o pi modalit di input tastiera touch Di questa categoria fanno parte dispositivi di dimensioni diverse sep pur portabili che vanno dai PC Notebook ai telefoni portatili detti hand held In relazione alle dimensioni stanno le funzionalit offerte in misura di pendente dalla tecnologia interna del dispositivo la ricchezza di funzio nalit nel tempo andata aumentando grazie all evoluzione tecnologica nel campo dell elettronica che ha permesso di passare in una decina d an ni per il form factor hand held da prodotti mono funzione telefono fo tocamera gaming console media player a smartphone all in one capaci di soddisfare le esigenze di un utente medio con un unico prodotto L evoluzione dei dispositivi mobili per non ha decretato ingombranti prodotti quali notebook o inutili i dispositivi specifici come le fotocamere digitali stato portato avanti inv
202. ssor i MX31L ben suppor tato dal relativo driver di piattaforma fornendo pieno supporto alle schede di memoria SD MMC Ci che limita le prestazioni di tale dri ver l assenza del supporto al sottosistema SDMA nella piattaforma MXC lacuna discussa in seguito Output Video Buono L Application Processor i MX31L presenta una catena di gestione vi deo molto complessa Il driver utilizzato ne attiva la porzione stret tamente necessaria per una piena funzionalit di video output su display LCD ed ora anche su display analogici tramite video DAC Alcune funzioni esposte dal driver devono essere verificate e corret te mentre il supporto alla catena IPU potrebbe essere maggiormente esteso NAND Flash Ottimo Transfer Rate 6 5 MB s E gestita tramite il relativo driver di piattaforma capace di suppor tarla appieno Real Time Clock Ottimo Grazie al driver di piattaforma di gestione del controller C ed al dri ver standard in kernel per il chip utilizzato il sistema pu usufruire di un Real Time Clock pienamente funzionale Tasti Ottimo Gestiti attraverso il relativo driver standard in kernel sono stati connessi al sottosistema di Input per una piena utilizzabilit nel sistema Controller USB Buono Transfer Rate 5 MB s Grazie alle patch applicate i due controller USB Host sono stati atti vati a piena funzionalit Il processo di standardizzazione di tali pat ch ancora in corso rendendo questo codice passibil
203. strumento di aggregazione preferito dalla comuni t di sviluppatori Linux Ogni gruppo di sviluppo possiede in genere al http www arm linux org uk 5http www linux arm com 8http www imxdev org Un elenco completo di tutte le mailing list relative a progetti inerenti al kernel Linux pu essere reperito al link http vger kernel org vger lists html 73 Linux su piattaforma Freescale i MX31L meno due mailing list una dedicata agli utenti dove possibile discutere solamente di aspetti legati all utilizzo del codice prodotto ed una dedicata agli sviluppatori dev utilizzata in ogni fase di intervento nel codice stesso proposte di modifica review richiesta di spiegazioni specifiche riguardo il codice discussioni in merito a possibili evoluzioni Ci che rende questo strumento particolarmente adatto alla comuni t di sviluppatori lintegrazione creata tra Mail Client molto diffusi come Mutt e Pine ed il software di version management Git capa ce di automatizzare gran parte degli aspetti che riguardano la gestione dell evoluzione di un progetto sviluppato in modo distribuito Importanti sono gli archivi delle suddette mailing list nei quali pos sibile trovare tutte le discussioni gi affrontate nel corso del tempo da considerarsi spesso come una delle poche di documentazione per il progetto Il progetto ARM Linux possiede quattro mailing list delle quali tre sono attive linux arm maili
204. t exit armadillo5xO sdhcl exit oo oko ooo ooo oo ooo d ooo ok ko oko Kk a k k k k k k k Re k k k 109 114 xs 180 188 123 Linux su piattaforma Freescale i MX31L SMSC9118 IRQ pin gpio direction input MXS31 PIN GPIOI 0 Register SDHC mxc_register_device amp mxcsdhc_device0 amp sdhc_pdata static void init armadillo5x0O_timer_init void Utilizzare il driver mxcmmc c Compilato e scaricato nella board Ar madillo 500 il kernel con le modifiche apportate se inserita una scheda di memoria SD card il driver provvedera a creare la struttura di block devices cosi organizzata MMC block devices dev mmcb1k0 SD MMC card 1 dev mmcblk0p1 Partizione 1 nella MMC card 1 dev mmcb1k1 SD MMC card 2 Problemi nella gestione degli eventi di inserzione ed uscita di una scheda SD MMC Nella funzione armadillo5x0_sdhc1_init veiene ini zializzato l interrupt handler necessario a reagire agli eventi di inserzione ed uscita di una scheda SD MMC34 La funzione handler stata scritta per gestire entrambi gli eventi differenziati solamente dallo stato interno del driver che vuole l evento di uscita successivo all evento di inserzione Perch sia consistente questo comportamento la sorgente di interrupt proveniente dal pin MX31 PIN ATA DMACK deve essere impostata per ge nerare interruzioni sia nel fronte di salita che nel fronte di d
205. teryService cpp index 6636a97 174144e 100644 a services jni com android server BatteryService cpp b services jni com android server BatteryService cpp 173 6 173 18 static void setIntField JNIEnv env jobject obj const char path jfieldID fie static void android server BatteryService update JNIEnv env jobject obj if TARGET PLATFORM armadillo500 env gt SetBooleanField obj gFieldIds mAcOnline true env gt SetBooleanField obj gFieldIds mUsbOnline false env gt SetBooleanField obj gFieldIds mBatteryPresent true env gt SetIntField obj gFieldIds mBatteryLevel 4300000 env gt SetIntField obj gFieldIds mBatteryVoltage 4300000 env gt SetIntField obj gFieldIds mBatteryTemperature 30 env gt SetIntField obj gFieldIds mBatteryStatus gConstants statusNotCharging env gt SetIntField obj gFieldIds mBatteryHealth gConstants healthGood env gt SetObjectField obj gFieldIds mBatteryTechnology env gt NewStringUTF Li ion else setBooleanField env obj AC ONLINE PATH gFieldIds mAcOnline setBooleanField env obj USB ONLINE PATH gFieldIds mUsbOnline setBooleanField env obj BATTERY PRESENT PATH gFieldIds mBatteryPresent 192 6 204 7 static void android server BatteryService update JNIEnv env jobject obj if readFromFile BATTERY TECHNOLOGY PATH buf SIZE gt 0 175 Android su piattaform
206. ti nel bus vengono salvati per la conversione Impostazioni temporali La figura 6 1 schematizza l andamento tem porale dei segnali di sincronizzazione che regolano la trasmissione da ti nello standard VGA Comprenderne il significato necessario per poi configurare correttamente i parametri del driver video Lo standard VGA utilizza i due segnali VSYNC e HSYNC per sincronizzare i circuiti di visualizzazione interni allo schermo con i dati presenti nel canale lo standard VGA nasce a supporto dei vecchi schermi analogici CRT dove il disegno del frame a schermo avviene sequenzialmente per punti di ogni riga pixel per poi ricominciare all inizio della riga succes siva retrace orizzontale ed al termine del frame ricominciare all inizio di quello successivo retrace verticale Le operazioni di retrace richiedono un tempo non nullo al quale corrisponde la durata degli impulsi dei due segnali HSYNC ths e VSYNC t s che espresse in pixel determinano l Area di sincronismo in figura 6 1 Oltre ai tempi di sincronizzazione negli schermi CRT l Area di disegno pi grande dell Area visualizzata effettivamente Questo per due motivi uno elettrico di inseguimento del segnale analogico dei dati i circuiti interni che traducolo il segnale analogico in colore a schermo necessitano di un determinato tempo per colmare la differenza tra lo stato del ultimo pixel di riga ed il primo della successiva ed uno logico che determina il posizion
207. tion di sviluppo alla prima porta seriale della board ed utilizzare un software adatto come minicom Le impostazioni della connessione seriale sono le seguenti Parametro Impostazione Velocit di trasferimento 115 200 bps Lunghezza dei dati 8bit Bit di stop lbit Parit No Controllo di flusso hardware No 5 2 2 Contatti di configurazione Detti anche JANPAPIN sono una serie di Jumper posizionati sotto il mo dulo del processore JP1 JP7 I primi 6 Jumper sono utilizzati come input nel processo di boot JP1 indica al boot loader Hermit AT se presentare il menu di configura zione JP1 Modalit Open Dopo l accensione il kernel viene eseguito automaticamente Short Dopo l accensione viene presentato il prompt dei comandi Hermit attraverso la connessione seriale Nel caso il boot loader sia stato compromesso la configurazione seguente 67 Atmark Armadillo 500 dei jumper JP3 JP6 permette di abilitare la modalit UART boot del core ARM1136JF S JP3 JP4 JP5 JP6 Mode Open Open Open Open Boot normale Short Short Open Short UART boot 5 2 3 Comandi fondamentali Cortocircuitando il Jumper JP1 durante il processo di boot il boot loader Hermit AT presenta attraverso la porta seriale l interfaccia di controllo Hermit Qui di seguito i comandi fondamentali della CLI Hermit AT tftpdl Indica a
208. tized ptxconfig arm hardfloat arm iwmmx linux gnueabigcc 4 1 2glibc 2 5binutils 2 17kernel 2 6 18 ptxconfig PRJROOT deve essere espansa al suo valore 96 6 2 Ambiente di sviluppo la macchina host arm iwmmx linux gnueabigcc 4 3 2glibc 2 8binutils 2 18kernel 2 6 27 sanitized ptxconfig arm oabi arm v4 arm v4 325 arm v5 linux gnueabigcc 4 1 2glibc 2 5binutils 2 17kernel oy 68 18 ptxconfig linux gnueabigcc 4 3 2glibc 2 8binutils 2 18kernel ey c 27 sanitized ptxconfig te linux gnueabigcc 4 1 2glibc 2 5binutils 2 17kernel 2 6 18 ptxconfig arm v5te linux gnueabigcc 4 3 2glibc 2 8binutils 2 18kernel 2 6 27 sanitized ptxconfig arm v5tevfp linux gnueabigcc 4 3 2glibc 2 8binutils 2 18kernel 2 6 27 sanitized ptxconfig arm xscale linux gnueabigcc 4 1 2glibc 2 5binutils 2 17kernel 2 6 18 ptxconfig arm xscale linux gnueabigcc 4 2 3glibc 2 8binutils 2 18kernel 2 6 27 sanitized ptxcon fig avr i586 unknown linux gnugcc 4 1 2glibc 2 5binutils 2 17kernel 2 6 18 ptxconfig i586 unknown linux gnugcc 4 3 2glibc 2 8binutils 2 18kernel 2 6 27 sanitized ptxconfig i686 unknown linux gnugcc 4 1 2glibc 2 5binutils 2 17kernel 2 6 18 ptxconfig 1686 unknown linux gnugcc 4 3 2glibc 2 8binutils 2 18kernel 2 6 27 sanitized ptxconfig java mingw mipsel softfloat linux gnugcc 4 2 3glibc 2 8binut
209. to Stop ped allo stato Running void onResume Dopo la visualizzazione a schermo dell attivit pre cede l inizio dell interazione con l utente Delimita assieme ad onPause la porzione attiva del ciclo di vita dell attivit void onPause Precede la perdita del controllo dello schermo nel caso un altra attivit lo richieda Dato che questo l unico metodo di cui vi la certezza dell ese cuzione prima che il componente diventi vulnerabile al meccani smo di recupero della memoria allora qui che una attivit ha il dovere di completare le transazioni sui dati persistenti control lati Ci non riguarda lo stato dellinterfaccia grafica posizione attuale all interno della lista valori degli input specifici dell istan za attuale considerato volatile tra due esecuzioni differenti del l applicazione salvato tramite oggetti Bundle nel metodo opzionale onSaveInstanceState void onStop Chiamato durante il processo di distruzione dell attivi t dopo che questa non pi visibile Ha il compito di rilasciare le risorse volatili acquisite in onStart non necessarie negli istanti in cui l attivit non visualizzata void onDestroy Metodo che termina il processo normale di distru zione di una attivit 30 2 2 Architettura Ha il compito di rilasciare le risorse create in onCreate compreso terminare i thread accessori ancora in esecuzione onSaveInstanceState e onRestoreInstanceState Meto
210. to in modalit Host dei controller USB della famiglia di Application Processor i MX consiste in e Ampliamento dell interfaccia Linux OTG include linux usb otg h per definire le operazioni fondamentali di un modulo transceiver e Supporto a transceiver OTG controllati tramite interfaccia ULPI con un driver apposito inserito nella directory drivers usb otg e Supporto alle operazioni fondamentali delle porte ULPI con codice di piattaforma inserito in arch arm plat mxc Sviluppo del codice specifico di gestione dei Controller USB per il driver ehci hcd e Inizializzazione e registrazione dei driver nel codice di supporto della board presentata per la board lilly1131 La serie di patch pi aggiornata stata presentata nelle mailing list linux arm kernel e linux usb con il titolo Patches for Freescale MXC SoCs and direct ULPI communication v3 Applicata ed adattata al repository locale del kernel portando il codice di inizializzazione nel file armadillo5x0 c con le adeguate modifiche possibile abilitare i due controller USBOTG e USBH2 in modalit Host con piene funzionalit Modifiche al codice di supporto Di seguito sono riportate le modifiche al file armadillo5x0 c Listing 6 27 armadillo5x0 O8ToI2C patch diff git a arch arm mach mx3 Kconfig b arch arm mach mx3 Kconfig index 851f245 8cf0e9c 100644 a arch arm mach mx3 Kconfig b arch arm mach mx3 Kconfig 89 6 89 7 config M
211. to rete dei client permessi deve essere compatibile con le impostazioni della sotto rete di connessione tra macchina host e board L home path qui definito dovr essere riportato nei parametri del kernel nel momento in cui si vorr eseguire il boot via rete 6 2 8 Scaricare il kernel nella board Armadillo 500 Nel paragrafo 6 2 7 stato installato nella macchina host il server tftp necessario per scaricare file nella memoria flash del modulo CPU della board considerata ed alla fine del paragrafo 6 2 5 si mostrato come compilare un nuovo kernel Ora verranno descritti i passi per scaricare il nuovo kernel compilato nella regione di boot della board Nella shell di compilazione del kernel successivamente l esecuzione di make cp arch arm boot zImage tftp linux bin gz Collegata la board alla macchina host attraverso il cavo seriale e tramite la rete ethernet in una nuova shell minicom hermit tftpdl 192 168 0 10 192 168 0 2 kernel linux bin gz Con 192 168 0 10 indirizzo ip assegnato alla board e 192 168 0 2 in dirizzo ip dell interfaccia di rete della workstation A termine del trasferimento la riga seguente dar il comando di pro cedere nella sequenza di boot della board con i parametri del kernel precedentemente definiti 105 Linux su piattaforma Freescale i MX31L hermit gt boot 6 3 Fasi del porting Qui di seguito verranno presentate tutte le fasi che hanno portato alla definizione del co
212. tore generico di architet tura ARMv5 personalizzabile in molti aspetti Eseguendo da una shell emulator help Android Emulator usage emulator options gemu args options system dir read system image from lt dir gt datadir dir write user data into dir kernel file use specific emulated kernel ramdisk file ramdisk image default lt system gt ramdisk img image file System image default lt system gt system img initdata file initial data image default system gt userdata img data file data image default lt datadir gt userdata qemu img sdcard file SD card image default lt system gt sdcard img wipe data reset the use data image copy it from initdata show kernel display kernel messages shell enable root shell on current terminal 35 Android nojni disable JNI checks in the Dalvik runtime logcat tags enable logcat output with given tags dns server servers use this DNS server s in the emulated system cpu delay lt cpudelay gt throttle CPU emulation no boot anim disable animation for faster boot no window disable graphical window display version display emulator version number report console socket report console port to remote Socket E possibile verificare quali sono le opzioni che permettono di personaliz zare le versioni del kernel e dello stack Android eseguiti In particolare con il coma
213. tringhe di debug dei servizi nella shell chiamante nfs server Nelle operazioni successive di test e debug sar utile installare un server nfs nella macchina host per poter utilizzare come root filesystem della macchina target una directory remota sudo apt get install nfs kernel server Installer oltre ai binari il proprio script di inizializzazione in etc init d per l avvio automatico durante il boot della macchina host Il server configurato attraverso il file etc exports dove ogni riga nella forma homepath hostnamel options hostname2 options home path il percorso assoluto della cartella che un client remoto pu montare hostnameN un nome di host valido al quale concesso l accesso Questo pu essere espresso anche come singolo ip o indirizzo di sotto rete 104 6 2 Ambiente di sviluppo la macchina host options le opzioni di mount utilizzate per vincolare l accesso ro rw disabilitare la cache in scrittura sync modificare la traduzione ui d gid no_root_squash etc per una lista completa delle opzioni si rimanda alla pagina man di exports Opzioni corrette per un root filesystem sono rw no all squash no_root_squash Allora per rendere disponibile la cartella PRUROOT rootfs dovr er rere scritta la riga SPRJROOT rootfs 192 168 0 1 255 255 255 0 rw noallsquash norootsquash Con PRJROOT Espansa al path reale media dati android L indirizzo della sot
214. umero ad es 3 verranno create le patch solamente delle ultime 3 commit Tutti i comandi qui presentati hanno una pagina di descrizione appro fondita in man accessibile con man git nome comando 6 2 4 Cross Platform Toolchain Una Toolchain catena di attrezzi quell insieme di programmi neces sari a creare i file eseguibili di un software Normalmente sono inclusi un linker assembler archiver compiler librerie e file header per il dato linguaggio di programmazione Una Cross Platform Toolchain detta anche cross toolchain una tool chain creata per essere utilizzata nell architettura host e per produrre file binari eseguibili nell architettura target In questo modo possibi le sviluppare software eseguibile nell architettura target sfruttando un ambiente di lavoro pi performante costituito nella macchina host Dagli archivi della mailing list arm linux toolchain si apprende l esistenza del progetto open source OSELAS Toolchain 3 che fornisce un metodo di build integrato per una cross toolchain adatta all architettura target considerata 23http www pengutronix de oselas toolchain 94 6 2 Ambiente di sviluppo la macchina host Questo progetto si avvale del sistema di build open source Ptxdist grazie al quale oltre ad una cross toolchain valida possibile compilare un im magine del kernel personalizzata ed un root filesystem valido per creare una piattaforma target completa Installare e configura
215. uni a tutte le piattaforme nwfpe e vfp contengono implementazioni software e hardware delle li brerie di calcolo in virgola mobile common contiene alcuni sorgenti di supporto tra cui routine di con trollo per VIC implementazione del sistema clockdev e supporti a piattaforme hardware comuni ptat xx directory contenenti sorgenti e file header di supporto per fa miglie di System on Chip mxc omap orion pxa 12Sj consiglia la lettura della documentazione in tree del kernel a questo proposito 11 Phttp www pengutronix de Branch mxc master in git git pengutronix de git imx linux 2 6 git 76 6 1 Il progetto ARM Linux mach xx directory contenenti il codice specifico a supporto delle singole board raggruppate per specifici System on Chip boot directory che conterr il file immagine del kernel compilato tools contiene script per generare file come mach types h oprofile contiene librerie utili per il profiling low level del sistema configs contiene i file di configurazione predefiniti per ogni board arm based Una piattaforma di supporto per una determinata board ARM based composta dal codice contenuto nella directory p1at ArmCpuFamily con ArmCpuFamily famiglia del processore utilizzato nella board e dai sor genti specifici contenuti in mach CpuType con CpuType tipologia di pro cessore utilizzata 6 1 3 Fasi di boot di Linux su architettura ARM Dai compiti del Bootloader all es
216. upport uu o Ri Rue AU MR Oe De 106 6 3 2 Console attraverso la porta seriale 112 6 3 3 Rete Ethernet vi eee Boa a Ae ROW Ru fg 115 6 93 1 SDHC MMC gcd e SUR RU RUE a De RE e uo 120 6 3 5 Output Video 22 2 125 6 3 6 Modulo flash NOR LL 135 6 3 7 Modulo flash NAND LL 138 6 3 8 GPIO Keyboard uy noe qo Io roe ole od 141 6 3 9 RIC auod uev ear wes qo or Vr ae Ae ask a 143 6 3 10USB 4 se Cale Red E Re Re ie node de sak 146 7 Android su piattaforma Freescale i MX31L 155 7 1 Il codice sorgente di Android 0 155 Talal T staldreT6BO a E ASI ALA NI eei 155 7 1 2 Download deisorgenti 4 ii 22229 9 s 156 7 1 3 Prima build di Android 156 7 2 Ottenere un kernelvalido ls 157 7 2 1 Le patch Android oc e E x4 ES 158 7 2 2 Avanzare la piattaforma i MX 162 7 2 3 Configurare il kernel Android ottenuto 164 7 3 Personalizzare il processo di build per la board Armadillo 500165 7 3 1 Definire un prodotto 166 7 3 2 Impostzioni board specific di generazione dello stack 167 7 3 3 Modificatori di prodotto 170 7 3 4 Generare il root filesystem definito dal prodotto ar macdalloD00 en antra YR dg uU Uere ara 171 7 4 Problemi e Soluzioni 4 uuo Xs Reo KU RR 172 TL I BISIDeDHHeRES veu 4 990 pH IHR qois 172 viii INDICE 142 baleno talea a ilaele 175 7 4 3 Mouse USB come sistema di tracking
217. upt normali o veloci con priorit e permette una gestione accelerata in reazione ad interrupt normali contiene un array di 64x30 word chiamato Vector Table nel qua le possibile definire per ogni sorgente di interrupt abilitata l indirizzo della routine di gestione In caso di interrupt l AVIC segnaler l evento al core e trasmetter sul bus il relativo indirizzo della routine di gestione Altre funzionalit importanti e Ogni sorgente pu essere impostata come sorgente interrupt nor male o veloce Possiede un registro apposito per indicare eventuali interrupt in attesa Benchmark computazionale che contiene sole operazioni su interi 30 49 L Application Processor Freescale i MX31L e Ogni sorgente di interrupt pu essere abilitata o disabilitata indi pendentemente Utile per la gestione annidata degli interrupt e Fornisce un meccanismo per schedulare un interrupt via software 4 4 Interfaccia verso la memoria esterna L interfaccia External Memory Interface EMI in grado data l eleva ta adattabilit di collegare una grande variet di device di memoria il bus dati pu lavorare a 16 o 32 bit possibile abilitare la funzio nalit di Address Interleaving per indirizzi di grandi dimensioni sono presenti quattro porte di input con Arbitration implementa un meccani smo di gestione di Bus Master alternativi utile ad esempio se presente un chip grafico collegato al bus di sistema oltre
218. vengo no scritte direttamente nella porta seriale se correttamente configura ta dal boot loader Questo possibile attraverso la procedura assembly printascii arch arm kernel debug s ed alle procedure di debug low level abilitate nella configurazione dal parametro CONFIG_DEBUG_LL Dal messaggio done booting the kernel per ogni messaggio di log segue la strada della console attraverso la funzione printk anche se una console vera e propria viene caricata molto pi tardi nel proces So di boot oscurando cosi i messaggi di debug di questa fase nel caso avvenisse una condizione di blocco del kernel La soluzione proposta da Russell King 43 inserire una chiamata alla procedura printascii all interno della funzione printk che stampi lo stesso messaggio che printk sta salvando in memoria direttamente nella porta seriale rendendo cosi possibile la lettura del reale flusso di log Una patch che inserisce questa modifica la seguente Listing 6 1 Patch ARM Make low level printk work From 0c61b75f9dala0889959a0f9bd0b8b63f936ddf3 Mon Sep 17 00 00 00 2001 From Tony Lindgren lt tony atomide com gt Date Mon 9 May 2005 14 10 26 0700 Subject PATCH ARM Make low level printk work Makes low level printk work Signed off by Tony Lindgren lt tony atomide com gt kernel printk c 8 1 files changed 8 insertions O deletions diff git a kernel printk c b kernel printk c index e3602d0
219. verso git il repository del kernel Android tiene traccia dell avanzamento di versione del kernel mainline Ci comporta che se alcune commit eseguite nel branch An droid sottoposte a review vengono accettate ed applicate anche nella versione mainline del kernel fino alla versione indicata allora le relative patch non dovrebbero far parte del set prodotto dal comando Nel caso del branch Android del kernel Linux per motivi non compresi non vera questa propriet Quindi dalla serie di patch prodotta do vranno essere individuate ed eliminate le patch gi presenti nel kernel 2 3092 3 Us Applicare le patch Android al kernel 2 6 30 Recuperate le patch Android ottenute come sopra con cd SPRJROOT cp android sources kernel androidPatches kernelAndroidArmadillo500 linux 2 6 r cd kernelAndroidArmadillo500 linux 2 6 Si procede nella sequenza di applicazione Individuare le patch gi applicate Innanzitutto dall insieme di pat ch prodotte devono essere eliminate quelle gi presenti nel kernel Linux 2 6 30 A questo proposito pu venire in aiuto un semplice script Listing 7 1 testPatches sh bin bash 159 Android su piattaforma Freescale i MX31L Utilizzo testPatches sh patchDir pruneDir Deve essere eseguito dalla root directory di un repository git h sopprime l informazione nomeFile _all inizio della riga risultato grep h Subject 1 patch gt 1 subjects txt
220. w char desc int type input event type EV KEY default EV SW int wakeup configure the button as a wake up source int debounce interval debounce ticks interval in msecs struct gpio_keys_platform_data struct gpio keys button buttons int nbuttons 141 Linux su piattaforma Freescale i MX31L unsigned int rep 1 enable input subsystem auto repeat La struttura gpio keys platform data contiene un array di nbuttons descrittori gpio keys button contenenti a loro volta la definizione com pleta per ogni tasto che si vuole configurare La configurazione scelta collega i due tasti on board agli eventi EV KEY KEY ENTER e KEY BACK utili in seguito per la configurazione del sistema di input Android tutti e due di tipo wakeup La pressione di uno di questi tasti in modalit Power Save risveglia il sistema Modifiche al codice di supporto Di seguito sono riportate le modifiche al file armadillo5x0 c Listing 6 24 armadillo5bxO 07ToGPIOKRey patch oe ale k ale ale ck ok ck ck ok ce o k k k 24 29 sus 24 31 include linux irq h include lt linux mtd physmap h gt include linux io h include lt linux input h gt include linux gpio keys h include lt mach hardware h gt include lt asm mach types h gt ok ok ok k k ok k k OK k k k k k k 90 95 ssa 92 128 IOMUX MODE MX31 PIN LCS1 IOMUX CONFIG GPIO
221. y OOM killer di Linux che agisce terminando innanzitutto i processi pi avidi di risorse il nuovo modulo Android permette algoritmi personalizzati per gestire la mancan Za di memoria attraverso interventi al valore oom adj per ogni processo a seconda dell importanza attuale all interno dell ambiente d esecuzione Ashmem Anonymous SHared MEMory system Ashmem definisce un interfac cia attraverso la quale regioni di memoria possono essere condivise tra processi attraverso un nome Utilizzata per ottimizzare il consumo di memoria grazie a pool di risorse comuni icone a differenza del meccanismo di condivisione della me moria shmem di Linux permette al kernel di liberare la regione condivisa se questa non e correntemente in uso anche se permangono referenze va lide alla stessa regione shmem libera il blocco condiviso solo se sono stati liberati da tutti gli handle a tale regione Un processo che tenta di accedere a memoria condivisa liberata dal ker nel ricever un errore e se necessario dovr ri allocare il blocco e ricari carne i dati Power Management La gestione dell energia cruciale in un dispositivo mobile Android in serisce un layer software al di sopra del componente Power Management di Linux per aumentarne l aggressivit vengono definiti quattro stati di carico possibili nel sistema Stato Descrizione Full power CPU e LCD attivi LCD Off solo la CPU attiva attiva Energy save CPU e
222. zato in pagine da 2KByte connesso al modulo NAND controller dell Application Processor i MX31L 22 foglio 2 5 1 7 Real Time Clock RTC L orologio di sistema mantenuto da un circuito on board basato sul chip Seiko Instruments S 35390A collegato all AP tramite bus I C ed ali mentato da una batteria di backup per mantenerne la funzionalit anche dopo la disconnessione dell alimentazione 22 foglio 6 5 1 8 Tasti e LED Sono presenti due tasti low active di input e 4 led di output connessi tutti a pin GPIO 22 foglio 6 5 1 9 USB Sono presenti due connettori USB di tipo Host connessi attraverso due differenti moduli transceiver NXP ISP 1504 ai controller USBOTG e USBH2 dell Application Processor 22 foglio 4 5 1 10 Audio Sono presenti i connettori Headphone Out e Mic In per l I O Audio con nessi alla porta audio in modalit S attraverso il modulo codec della Texas Instruments TLV320AIC23 con amplificatore interno 22 foglio 8 66 5 2 Il boot loader 5 2 Ilboot loader Hermit At Versione di U Boot personalizzata da Atmark il boot loader utilizzato nelle board Atmark che risiede all inizio della memoria NOR flash del modulo CPU Capace di eseguire le inizializzazioni necessarie della board armadillo 500 compatibile con le specifiche di boot del sistema operativo Linux 5 2 1 Canale di comunicazione e controllo Per interagire nella sequenza di boot necessario collegare la worksta
Download Pdf Manuals
Related Search
Related Contents
GroupWise 7 WebAccess Client User Guide MULTIPURPOSE LATHE WITH MILLING MACHINE AT125 MINI Manuel d`utilisation PROGRAMMATEUR ELECTRONIQUE AQUACUBIC POUR Copyright © All rights reserved.
Failed to retrieve file