Android Porting on a Mobile Device git commit --author “Michael Trimarchi <[email protected]>” www.penguin-software.com Simboli Parte abbordabile Parte che presenta alcune difficoltà Parte estremamente difficile www.penguin-software.com Che cos'è Android? E' uno stack completo per mobile devices ● Sistema operativo ● Stack applicativo ● Un tool completo per sviluppo applicativo www.penguin-software.com Perchè Android (1)? Grande comunità di sviluppatori ● Codice opensource ● Bassi tempi di sviluppo e di mantenimento ● Framework integrato kernel/libraries/userspace ● Sviluppo semplice di applicazioni e servizi ● www.penguin-software.com Perchè Android (2)? ● ● ● Personalizzazione del prodotto Bassi investimenti Utilizzo del Market per dowload applicazioni – – ● ● Google market (richiede un accordo con google) Altri market Reingegnerizzazione veloce di un vecchio prodotto Nasce per il mercato consumer mobile ma può essere utilizzato in ambiti industriali www.penguin-software.com Strumenti di sviluppo (1) Kernel e bootloader ● Git – ● Version Control System Editor di testo – – – Vi Vi … emacs www.penguin-software.com Strumenti di sviluppo (2) Android Middleware ● ● Repo Git – ● Editor di testo – – ● ● Version Control System Vi … emacs Gdbserver e gdb Dalvik debug monitor www.penguin-software.com Strumenti di sviluppo (3) Android Application level ● ● ● Eclipse Android eclipse plugin Android emulator www.penguin-software.com Ho il device. Quanto costa (diamo una idea)? ● Prima prototipazione (2 mesi uomo) – ● Chiusura delle funzionalità base (2/3 mesi uomo) – ● Servizi di base dell'interfaccia Android Wifi, GSM sensori Chiusura progetto – Test estensivo del prodotto e risoluzione di problematiche non rilevate nella fase di sviluppo software www.penguin-software.com Ho il device. Come si parte (1)? ● ● ● ● Schematici del dispositivo Datasheets dei componenti BSP dal produttore del micro del vostro device (riferimento nella fase di porting) Flashing tool – ● ● serve qualcosa per caricare il software sul device Riferimento al team di progettazione hardware Connettore Jtag e porta seriale (console su jtag e/o su seriale) – Inizialmente l'output del device viene inviato su seriale o su porta Jtag www.penguin-software.com Come fare il Porting (1)? Lo stack www.penguin-software.com Come fare il Porting (2)? ● Porting del Kernel di Linux ● Supporto del middleware di Android ● Test delle applicazioni base e limatura delle performance del sistema www.penguin-software.com Kernel Porting (1) ● Avviare il kernel di linux (bootloader) – – – ● U-boot Redboot Qi Primo supporto dei device driver – – – – – – Console Voltage regulator Video Keyboard Touchscreen Power Gauge (battery) www.penguin-software.com Kernel Porting (2) ● Problematiche di suspend e resume ● Usb gadget (android console e usb storage) ● Wifi & GSM (call and data) ● Camera support ● Sensors support www.penguin-software.com Il primo avvio (bootloader shell) www.penguin-software.com Il primo avvio (kernel boot) www.penguin-software.com Middleware porting ● Creazione dei moduli di interazione con i driver linux – – – – – ● ● Modulo sensori Radio Interface Layer (Voce e dati) Modulo Audio Modulo di accelerazione per le operazioni 2D ... Integrazione delle librerie di accelerazione grafica del produttore (opengl-es library) Integrazione della parte encoding/decoding video in Opencore www.penguin-software.com Booting Android minimale ● ● ● ● Display Keyboard Touchscreen ...fake battery support www.penguin-software.com Problematiche di Porting (1) ● Tempi – ● Problemi hardware – – – ● I tempi sono solitamente stretti ed è necessario sempre avere un'alta qualità del software prodotto Tempi lunghi per la verifica di una periferica dovuto ad un problema di progettazione hardware Ricerca di una soluzione software … fix del PCB e nuovo test sul prototipo Errata sul alcuni componenti – Implementazione dei workaround suggeriti dal produttore www.penguin-software.com Problematiche di Porting (2) ● Bug fix nel kernel di linux – – ● ● Periferiche del micro non completamente testate Mancanza di qualche feature Implementazione di algoritimi per sopperire a mancanze hardware Bug fix del middleware android www.penguin-software.com Fase di studio (esempio reale) ● Documento di stima ● Individuazione delle risorse e degli skills ● Stesura del gantt di ogni attività e milestone ● Stima del costo del progetto www.penguin-software.com Documento di stima ● Project AIM – ● Project Needs – ● contiene esattamente i requisiti funzionali del prodotto individua cosa è necessario per completare il progetto Milestones – suddivide il progetto in fasi www.penguin-software.com Risorse & Skills (porting lowlevel) ● ● Un team di sviluppatori del kernel (2 o 3) Skills – – – – – Conoscenza dell'architettura di riferimento Subsytem PM di linux Block subsystem SPI, I2C, input subsytem skills Graphics subsytem www.penguin-software.com Vediamo un gantt www.penguin-software.com Dal gantt al costo di produzione ● Il gantt fornisce informazione sui tempi ● Dà l'allocazione delle risorse ● Costo delle attività ● Criticità delle attivitità ● Il rough cost può essere calcolato dal costo orario applicato alle attività www.penguin-software.com Domande www.penguin-software.com Contact info http://www.penguin-software.com/ mailto: [email protected] www.penguin-software.com