UNIVERSITA’ DEGLI STUDI DI MILANO BICOCCA FACOLTA’ DI SCIENZE MATEMATICHE, FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Automazione di Test di Sistemi Embedded Relatore: Prof. Mauro PEZZE’ Correlatori: Lorena SIMONI Giuseppe GORGOGLIONE Relazione della prova finale di: Carmine Carella Matricola: 055465 Anno Accademico 2009/2010 1 Indice Il Software nei sistemi embedded Testing nei sistemi embedded Automazione del Testing Il Progetto Cartesio Contributo della Tesi Attività di testing Conclusioni SW SISTEMI EMBEDDED TESTING EMBEDDED Il SW nei Sistemi Embedded Incidenza percentuale dei sistemi embedded nel costo finale dei prodotti (1) AUTOMAZIONE AMBIENTE SPERIMENTALE Mercato globale dei sistemi embedded in miliardi di dollari (1) CONTRIBUTO TESI ATTIVITA’ TESTING CONCLUSIONI Fatturato del software embedded per categoria(1) Utilizzo recente dei sistemi operativi per sistemi embedded (1) (AAGR - Average Annual Growth Rate) (1) Brandolese, C. and Fornaciari, W., Sistemi Embedded - sviluppo hardware e software per sistemi dedicati, 2007, Mondadori SW SISTEMI EMBEDDED TESTING EMBEDDED Testing nei Sistemi Embedded AUTOMAZIONE Tipologie di Testing Software Processore Sistema Ambiente One way Simulato - - - Feedback Simulato - - - Rapid prototyping Sperimentale Sperimentale Sperimentale Reale Host Simulato Simulato Reale (finale) Emulatore Simulato Simulato - Reale (finale) Reale (finale) Reale (finale) Reale(finale) Reale (finale) Sperimentale Simulato Reale(finale) Reale (finale) Prototipo Simulato Test ambientale Reale(finale) Reale (finale) Prototipo maturo Simulato Pre-produzione Test di sistema Reale(finale) Reale (finale) Reale Reale Post-produzione Test mantenimento Reale(finale) Reale (finale) Reale (finale) Reale (finale) Fasi Simulazione AMBIENTE SPERIMENTALE Test unità/integrazione Sperimentale/reale sw (1) (host) Test unità/integrazione sw (2) CONTRIBUTO TESI Prototipazione Test unità/integrazione hw ATTIVITA’ TESTING Test integrazione hw/sw Test di sistema CONCLUSIONI SW SISTEMI EMBEDDED TESTING EMBEDDED Gli ambienti di Testing AUTOMAZIONE Ambiente Target Ambiente Host Ambiente di sviluppo AMBIENTE SPERIMENTALE Host-testing CONTRIBUTO TESI ATTIVITA’ TESTING Approccio simulativo tramite emulazione di piattaforma Crosscompilazione Ambiente di esecuzione Target-testing Test integrazione hw/sw Test di sistema CONCLUSIONI Verifica delle caratteristiche non funzionali del SW SW SISTEMI EMBEDDED TESTING EMBEDDED Automazione del testing Importanza: migliora efficacia ed efficienza del AUTOMAZIONE testing Problema: AMBIENTE SPERIMENTALE Soluzioni ad-hoc (application-specific) Metodologie interne aziendali CONTRIBUTO TESI Letteratura scarsa e approcci poco concreti Soluzione proposta: ATTIVITA’ TESTING personalizzazione di strumenti CONCLUSIONI off-the-shelf per adattarli all’architettura specifica in modo garantire il corretto funzionamento dello strumento di automazione SW SISTEMI EMBEDDED TESTING EMBEDDED Il Progetto Cartesio Board ST AUTOMAZIONE SERIAL PORT GPIO CLCD USB SDCARD TOUCHPANEL GPS AUDIO KEYBOARD NAND AMBIENTE SPERIMENTALE Graphic PND Customer POWER MANAGEMENT ETHERNET • GUI e applicazioni proprietarie • BSP customizzato BSP linux Cartesio CONTRIBUTO TESI Sviluppo e testing sw in STM Sviluppo BSP LINUX CARTESIO ATTIVITA’ TESTING Command line interface Kernel + (BSP) device driver CONCLUSIONI Bootloader Firmware PROCESSO TESTING • Test object: device driver • manual and automatic test suite • Test funzionali e strutturali • Test report: excel SW SISTEMI EMBEDDED TESTING EMBEDDED Contributo della Tesi Analisi fattibilità e costi della soluzione adottata: AUTOMAZIONE Valutazione caratteristiche non funzionali del sw nell’ambiente target attraverso 4 attivita’ di testing rilevanti nel processo di testing del BSP Linux Cartesio AMBIENTE SPERIMENTALE CONTRIBUTO TESI ATTIVITA’ TESTING CONCLUSIONI Attività di Testing Classe problemi analizzati Requisiti di Qualità prestazioni codice in fase di boot punti critici del software con maggiore tempo di esecuzione nella fase di boot prestazioni uso e gestione della memoria memory leak prestazioni, affidabilità prestazioni di I/O su dispositivi di mass storage scarsa efficienza delle operazioni di I/O (lettura, scrittura) prestazioni test di copertura problemi nell’efficacia dei test funzionali e strutturali dell’ambiente sperimentale copertura SW SISTEMI EMBEDDED TESTING EMBEDDED Valutazione delle Prestazioni del Codice nella Fase di Boot (1) AUTOMAZIONE Obiettivi e Scelta Strumento: Profiling: strategia per valutare le prestazioni del codice Function Tracing - tecnica di profiling per valutazione di: AMBIENTE SPERIMENTALE Analisi e scelta strumento di automazione CONTRIBUTO TESI Prestazioni funzioni kernel eseguite al boot Funzioni dei device driver Bootchart Ftrace Ftrace: framework del kernel Linux ATTIVITA’ TESTING Function Graph Tracer: CONCLUSIONI Misura il tempo di esecuzione delle funzioni (durata delle funzioni) Costruisce il grafo delle chiamate Debug filesystem per esportare i risultati nello user-space SW SISTEMI EMBEDDED TESTING EMBEDDED Valutazione delle Prestazioni del Codice nella Fase di Boot (2) AUTOMAZIONE Personalizzazione di Function Graph Tracer per l’applicazione su architettura ARM AMBIENTE SPERIMENTALE KERNEL CONTRIBUTO TESI Function{ probe } invoca Mcount __gnu_mcount_mc arch/arm/kernel/entrycommon.S invoca ATTIVITA’ TESTING compila CONCLUSIONI GCC Function Graph Tracer SW SISTEMI EMBEDDED TESTING EMBEDDED Valutazione delle Prestazioni del Codice nella Fase di Boot (3) AUTOMAZIONE AMBIENTE SPERIMENTALE Problema: valori durata non accurati Soluzione: utilizzo di un timer ad alta risoluzione CONTRIBUTO TESI Sottosistema time-management kernel Modifica driver del timer: arch/arm/mach-cartesio/time.c LR/HR Timer Framework definisce ATTIVITA’ TESTING API implementa Device driver timer CONCLUSIONI LR/HR Hardware clock chips API Sched-clock() chiama Function Duration Tracer invoca Struttura di Stato Struct clock_source Clock_source_read() astrae Hardware HR timer clock chip SW SISTEMI EMBEDDED TESTING EMBEDDED Valutazione delle Prestazioni del Codice nella Fase di Boot (4) Risultati Sperimentali AMBIENTE SPERIMENTALE Startup sistema AUTOMAZIONE Ambiente Target User-space Debug file system Risultati Kernel-space (Valori temporali in microsecondi) CONTRIBUTO TESI 0.18sec 0.05sec ATTIVITA’ TESTING 0.04sec CONCLUSIONI 0.02sec 0.02sec Function Graph Tracer Ambiete Host Risultati MMC Strumento Post-Analisi FDD SW SISTEMI EMBEDDED TESTING EMBEDDED Rilevazione di Memory Leak AUTOMAZIONE AMBIENTE SPERIMENTALE Memory leakage: consumo di memoria Zona di memoria non più necessaria, non deallocata Errore di programmazione Rilevanza nei sistemi embedded Impatto negativo prestazioni e affidabilità sistema Scelto e personalizzato kmemleak Memory leak nei device driver CONTRIBUTO TESI ATTIVITA’ TESTING cartesio_sga_probe Fase inizializzazione driver CONCLUSIONI cartesio_sga_init Funzione init Funzione exit SW SISTEMI EMBEDDED TESTING EMBEDDED Valutazione delle Prestazioni di I/O su Dispositivi di Mass Storage Device driver MMC su release BSP 2.3 e 2.4 AUTOMAZIONE Obiettivi: AMBIENTE SPERIMENTALE Valutare le prestazioni Ottimizzazione Strumenti base CONTRIBUTO TESI time cp source dest Limite: scarsa efficacia per processi di ottimizzazione 1018 KB/s (media) 57.642 KB/s (media) Strumenti complessi per ATTIVITA’ TESTING correlare le prestazioni ad altri parametri: cpu cache, buffer cache, ecc. CONCLUSIONI 50.207 KB/s (media) IOzone 9.204 KB/s (media) SW SISTEMI EMBEDDED TESTING EMBEDDED Conclusioni AUTOMAZIONE AMBIENTE SPERIMENTALE CONTRIBUTO TESI ATTIVITA’ TESTING CONCLUSIONI Problema: Approcci ad-hoc Soluzione: Personalizzazione di strumenti generali Risultati: Approccio ad-hoc superato Personalizzazione, può influenzare la raccolta e l'analisi dei risultati per valutare la qualità Migliorato il processo di testing STM aree di qualità non esplorate strumenti di automazione Criteri Scelta Strumenti di Automazione 1. 2. 3. 4. 5. 6. 7. Instrumentazione (implicita o esplicita), Licenza degli strumenti Linguaggio di programmazione con il quale è scritto il sw da testare Sistema operativo Architettura hw utilizzata Ambito di utilizzo e integrazione (strumenti user-space e kernel-space) Interfaccia e reporting (GUI/command-line) Rilevazione di Memory Leak (1) Scelta dello Strumento Non necessaria la personalizzazione per l’architettura ARM Facilmente integrabile nel kernel Rilevazione di Memory Leak (2) nei device driver Fasi di un device driver: Esecuzione Inizializzazione Fase Inizializzazione Fase platform-dependet del processo di boot del kernel Registrazione dei device Registrazione dei driver Associazione tra device e driver Associazione tra device e driver Rilevazione di Memory Leak (3) Risultati Sperimentali Errore programmazione: mancanza dell’istruzione di deallocazione della struttura di stato Funzione probe e funzione remove FUNZIONE PROBE FUNZIONE REMOVE MEMORIA struct cartesio_sga *sga sga=kzalloc(struct cartesio_sga) kfree (sga) struttura di stato struttura di stato sga struttura di stato Rilevazione dell'errore con kmemleak struttura di stato cartesio_sga_probe cartesio_sga_init Problema con i driver caricati come modulo Rilevazione di Memory Leak (4) Risultati Sperimentali Errore programmazione: mancanza salvataggio dell’handle della struttura di stato allocata MEMORIA Funzione probe FUNZIONE PROBE struttura di stato struct cartesio_sga *sga sga=kzalloc(struct cartesio_sga) amba_set_drvdata(dev,sga) sga Struct device Struct device_private *p cartesio_sga_probe cartesio_sga_init Rilevazione dell'errore con kmemleak Valutazione delle Prestazioni di I/O su Dispositivi a Blocchi Scelta dello Strumento e Personalizzazione Scelta dello strumento di automazione: Bonnie e Bonnie++: valutazione di prestazioni su hard disk (tempi di seek) Tiobench: stress test multi-thread Iozone: verificare le prestazioni con l’influenza della gerarchia di memorie. Più completo diverse operazioni: read, write dimensioni di file differenti (da 64KB a 512MB) trasferiti con record di diverse dimensioni (da 4K a 16MB) Ambiente Target Risultati compatibili excel Risultati MMC User-space IOzone Personalizzazione CC= cc C89= c89 GCC= gcc CCS= /usr/ccs/bin/cc NACC= /opt/ansic/bin/cc CC= arm-stm-linux-gnueabi-gcc C89= c89 GCC= gcc CCS= /usr/ccs/bin/cc NACC= /opt/ansic/bin/cc Ambiete Host Excel