1 universita degli studi di milano bicocca facolta di scienze matematiche, fisiche e naturali corso...
TRANSCRIPT
11
UNIVERSITA’ DEGLI STUDI DI MILANO BICOCCAFACOLTA’ 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
Il Software nei sistemi embeddedIl Software nei sistemi embedded Testing nei sistemi embeddedTesting nei sistemi embedded Automazione del TestingAutomazione del Testing Il Progetto CartesioIl Progetto Cartesio Contributo della TesiContributo della Tesi Attività di testingAttività di testing ConclusioniConclusioni
IndiceIndice
Incidenza percentuale dei sistemi embedded nel costo finale dei prodotti (1)
(1) Brandolese, C. and Fornaciari, W., Sistemi Embedded - sviluppo hardware e software per sistemi dedicati, 2007, Mondadori
Fatturato del software embedded per categoria(1)
(AAGR - Average Annual Growth Rate)
Mercato globale dei sistemi embedded in miliardi di dollari (1)
Utilizzo recente dei sistemi operativi per sistemi embedded (1)
TESTING
EM
BEDD
EDAU
TOM
AZION
EAM
BIENTE
SPERIMEN
TALEATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
Il SW nei Sistemi EmbeddedIl SW nei Sistemi Embedded
Fasi Tipologie di Testing Software Processore Sistema Ambiente
Simulazione
One way Simulato - - -
Feedback Simulato - - -
Rapid prototyping Sperimentale Sperimentale Sperimentale Reale
Prototipazione
Test unità/integrazione sw (1)
Sperimentale/reale (host) Host Simulato Simulato
Test unità/integrazione sw (2) Reale (finale) Emulatore Simulato Simulato
Test unità/integrazione hw - Reale (finale) Reale (finale) Reale (finale)
Test integrazione hw/sw Reale(finale) Reale (finale) Sperimentale Simulato
Test di sistema Reale(finale) Reale (finale) Prototipo SimulatoTest 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)
Testing nei Sistemi EmbeddedTesting nei Sistemi Embedded
TESTING
EM
BEDD
EDAU
TOM
AZION
EAM
BIENTE
SPERIMEN
TALEATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
Cross-compilazione
Ambiente Host
Ambiente di sviluppo
Host-testing
Ambiente Target
Ambiente di esecuzione
Target-testing
Verifica delle Verifica delle caratteristiche non caratteristiche non funzionali del SWfunzionali del SW
Verifica delle Verifica delle caratteristiche non caratteristiche non funzionali del SWfunzionali del SW
Test integrazione hw/swTest integrazione hw/sw Test di sistemaTest di sistema
Test integrazione hw/swTest integrazione hw/sw Test di sistemaTest di sistema
Gli ambienti di TestingGli ambienti di Testing
Approccio simulativo Approccio simulativo tramite emulazione tramite emulazione
di piattaformadi piattaforma
Approccio simulativo Approccio simulativo tramite emulazione tramite emulazione
di piattaformadi piattaforma
TESTING
EM
BEDD
EDAU
TOM
AZION
EAM
BIENTE
SPERIMEN
TALEATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
Importanza:Importanza: migliora efficacia ed efficienza del migliora efficacia ed efficienza del testingtesting
Problema:Problema: Soluzioni ad-hoc (application-specific)Soluzioni ad-hoc (application-specific)
Metodologie interne aziendaliMetodologie interne aziendali Letteratura scarsa e approcci poco concretiLetteratura scarsa e approcci poco concreti
Soluzione proposta: Soluzione proposta: personalizzazione di strumenti off-the-shelf per personalizzazione di strumenti off-the-shelf per
adattarli all’architettura specifica in modo garantire adattarli all’architettura specifica in modo garantire il corretto funzionamento dello strumento di il corretto funzionamento dello strumento di automazioneautomazione
Automazione del testingAutomazione del testing
TESTING
EM
BEDD
EDAU
TOM
AZION
EAM
BIENTE
SPERIMEN
TALEATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
PND CustomerUSBUSB
SDCARDSDCARD
NANDNAND
CLCDTOUCHPANEL
CLCDTOUCHPANEL
KEYBOARDKEYBOARD
POWERMANAGEMENT
POWERMANAGEMENT
AUDIOAUDIOGPSGPS
GPIOGPIO
ETHERNETETHERNET
SERIAL PORT
SERIAL PORT
GraphicGraphic
Il Progetto CartesioIl Progetto Cartesio
BSP linux CartesioBSP linux Cartesio
Sviluppo e testing sw in STM
• GUI e applicazioni proprietarie
• BSP customizzato
• GUI e applicazioni proprietarie
• BSP customizzato
Board STBoard ST
PROCESSO TESTING •Test object: device
driver• manual and automatic
test suite• Test funzionali e
strutturali• Test report: excel
Sviluppo BSP LINUX CARTESIO
FirmwareBootloader
Kernel + (BSP) device driver
Command line interface
TESTING
EM
BEDD
EDAU
TOM
AZION
EAM
BIENTE
SPERIMEN
TALEATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
Analisi fattibilità e costi della soluzione adottata:Analisi fattibilità e costi della soluzione adottata: Valutazione caratteristiche non funzionali del sw Valutazione caratteristiche non funzionali del sw
nell’ambiente target attraverso 4 attivita’ di testing nell’ambiente target attraverso 4 attivita’ di testing rilevanti nel processo di testing del BSP Linux Cartesiorilevanti nel processo di testing del BSP Linux Cartesio
Attività di Testing Classe problemi analizzati
Requisiti di Qualità
prestazioni codice infase di boot
punti critici del softwarecon maggiore tempo di esecuzione
nella fase di bootprestazioni
uso e gestione dellamemoria
memory leak prestazioni,affidabilità
prestazioni di I/O sudispositivi di mass
storage
scarsa efficienza delle operazionidi I/O (lettura, scrittura) prestazioni
test di copertura problemi nell’efficacia dei test
funzionali e strutturali dell’ambiente sperimentale
copertura
Contributo della TesiContributo della Tesi
TESTING
EM
BEDD
EDAU
TOM
AZION
EAM
BIENTE
SPERIMEN
TALEATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
Obiettivi e Scelta Strumento:Obiettivi e Scelta Strumento: Profiling: strategia per valutare le prestazioni del codiceProfiling: strategia per valutare le prestazioni del codice Function Tracing - tecnica di profiling per valutazione di:Function Tracing - tecnica di profiling per valutazione di:
Prestazioni funzioni kernel eseguite al bootPrestazioni funzioni kernel eseguite al boot Funzioni dei device driverFunzioni dei device driver
Analisi e scelta strumento di automazione Bootchart Ftrace
Ftrace: framework del kernel LinuxFtrace: framework del kernel Linux Function Graph Tracer:Function Graph Tracer:
Misura il tempo di esecuzione delle funzioni (durata delle funzioni)Misura il tempo di esecuzione delle funzioni (durata delle funzioni) Costruisce il grafo delle chiamateCostruisce il grafo delle chiamate Debug filesystem per esportare i risultati nello user-spaceDebug filesystem per esportare i risultati nello user-space
Valutazione delle Prestazioni del Valutazione delle Prestazioni del Codice nella Fase di Boot (1)Codice nella Fase di Boot (1)TESTIN
G
EMBED
DED
AUTO
MAZIO
NE
AMBIEN
TE SPERIM
ENTALE
ATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
Personalizzazione di Function Graph Tracer Personalizzazione di Function Graph Tracer per l’applicazione su architettura ARMper l’applicazione su architettura ARM
GCC
KERNEL
Function{ probe
}
Mcount
arch/arm/kernel/entry-common.S
Function Graph Tracer
__gnu_mcount_mc
compila
invoca
invoca
Valutazione delle Prestazioni del Valutazione delle Prestazioni del Codice nella Fase di Boot (2)Codice nella Fase di Boot (2)TESTIN
G
EMBED
DED
AUTO
MAZIO
NE
AMBIEN
TE SPERIM
ENTALE
ATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
ProblemaProblema: valori : valori durata non durata non accuratiaccurati
SoluzioneSoluzione: utilizzo : utilizzo di un timer ad alta di un timer ad alta risoluzionerisoluzione
API Sched-clock()
Modifica driver del timer: arch/arm/mach-cartesio/time.c Modifica driver del timer: arch/arm/mach-cartesio/time.c
Struttura di StatoStruct clock_sourceClock_source_read()
LR/HR Hardware clock chips
Device driver timer
LR/HR Timer Framework
APIdefinisce
implementa
invoca
HardwareHR timer clock chip
Function Duration Tracer
chiama astrae
Sottosistema time-management kernel
Valutazione delle Prestazioni del Valutazione delle Prestazioni del Codice nella Fase di Boot (3)Codice nella Fase di Boot (3)TESTIN
G
EMBED
DED
AUTO
MAZIO
NE
AMBIEN
TE SPERIM
ENTALE
ATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
Valutazione delle Prestazioni del Codice nella Valutazione delle Prestazioni del Codice nella Fase di Boot (4)Fase di Boot (4)
Risultati SperimentaliRisultati Sperimentali
Ambiente Target Ambiete Host
Function Graph Tracer
Star
tup
sist
ema
Kernel-space
Debug file system
User-space
Risultati
Strumento Post-AnalisiFDD
MMC
Risultati
0.18sec
0.05sec
0.04sec
0.02sec
0.02sec
(Valori temporali in microsecondi)
TESTING
EM
BEDD
EDAU
TOM
AZION
EAM
BIENTE
SPERIMEN
TALEATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
Memory leakage: Memory leakage: consumo di memoria Zona di memoria non più necessaria, non deallocata Errore di programmazioneErrore di programmazione
Rilevanza nei sistemi embeddedRilevanza nei sistemi embedded Impatto negativo prestazioni e affidabilità sistemaImpatto negativo prestazioni e affidabilità sistema
Scelto e personalizzato Scelto e personalizzato kmemleakkmemleak Memory leak nei device driverMemory leak nei device driver
cartesio_sga_probe
cartesio_sga_init
Fase Fase inizializzazione inizializzazione driverdriver Funzione initFunzione init Funzione exitFunzione exit
Rilevazione di Memory LeakRilevazione di Memory Leak
TESTING
EM
BEDD
EDAU
TOM
AZION
EAM
BIENTE
SPERIMEN
TALEATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
50.207 KB/s (media)
9.204 KB/s (media)
57.642 KB/s (media)
1018 KB/s (media)
Obiettivi:Obiettivi: Valutare le Valutare le
prestazioniprestazioni OttimizzazioneOttimizzazione
Strumenti base Strumenti base time cp source desttime cp source dest
LimiteLimite: scarsa : scarsa efficacia per processi efficacia per processi di ottimizzazionedi ottimizzazione
Strumenti Strumenti complessicomplessi per per correlare le correlare le prestazioni ad altri prestazioni ad altri parametri: cpu cache, parametri: cpu cache, buffer cache, ecc.buffer cache, ecc.
IOzoneIOzone
Valutazione delle Prestazioni di Valutazione delle Prestazioni di I/O su Dispositivi di Mass StorageI/O su Dispositivi di Mass Storage
Device driver MMC su release BSP 2.3 e 2.4Device driver MMC su release BSP 2.3 e 2.4
TESTING
EM
BEDD
EDAU
TOM
AZION
EAM
BIENTE
SPERIMEN
TALEATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
Problema: Problema: Approcci ad-hocApprocci ad-hoc
Soluzione:Soluzione: Personalizzazione di strumenti generaliPersonalizzazione di strumenti generali
Risultati:Risultati: Approccio ad-hoc superatoApproccio ad-hoc superato Personalizzazione, può influenzare la raccolta e Personalizzazione, può influenzare la raccolta e
l'analisi dei risultati per valutare la qualitàl'analisi dei risultati per valutare la qualità Migliorato il processo di testing STMMigliorato il processo di testing STM
aree di qualità non esplorate aree di qualità non esplorate strumenti di automazionestrumenti di automazione
ConclusioniConclusioni
TESTING
EM
BEDD
EDAU
TOM
AZION
EAM
BIENTE
SPERIMEN
TALEATTIVITA’ TESTIN
GCO
NCLU
SION
I
SW
SISTEMI
EMBED
DED
CON
TRIBUT
O TESI
Criteri Scelta Strumenti di Criteri Scelta Strumenti di AutomazioneAutomazione
1.1. Instrumentazione (implicita o esplicita), Instrumentazione (implicita o esplicita), 2.2. Licenza degli strumentiLicenza degli strumenti3.3. Linguaggio di programmazione con il quale è Linguaggio di programmazione con il quale è
scritto il sw da testarescritto il sw da testare4.4. Sistema operativoSistema operativo5.5. Architettura hw utilizzata Architettura hw utilizzata 6.6. Ambito di utilizzo e integrazione (strumenti user-Ambito di utilizzo e integrazione (strumenti user-
space e kernel-space)space e kernel-space)7.7. Interfaccia e reporting (GUI/command-line)Interfaccia e reporting (GUI/command-line)
Rilevazione di Memory Leak (1)Rilevazione di Memory Leak (1)Scelta dello StrumentoScelta dello Strumento
Non necessaria la Non necessaria la personalizzazione personalizzazione per l’architettura per l’architettura ARMARM
Facilmente Facilmente integrabile nel integrabile nel kernelkernel
Rilevazione di Memory Leak (2)Rilevazione di Memory Leak (2)nei device drivernei device driver
Fasi di un device driver:Fasi di un device driver: EsecuzioneEsecuzione InizializzazioneInizializzazione
Fase InizializzazioneFase Inizializzazione Fase platform-dependet Fase platform-dependet
del processo di boot del del processo di boot del kernelkernel Registrazione dei Registrazione dei
devicedevice Registrazione dei Registrazione dei
driverdriver Associazione tra Associazione tra
device e driverdevice e driver
Associazione tra device e driver
Rilevazione di Memory Leak (3)Rilevazione di Memory Leak (3)Risultati SperimentaliRisultati Sperimentali
Errore programmazioneErrore programmazione: mancanza dell’istruzione di deallocazione della : mancanza dell’istruzione di deallocazione della struttura di statostruttura di stato
Funzione probe e funzione removeFunzione probe e funzione remove
FUNZIONE PROBE
struct cartesio_sga *sgasga=kzalloc(struct cartesio_sga)
FUNZIONE PROBE
struct cartesio_sga *sgasga=kzalloc(struct cartesio_sga)
FUNZIONE REMOVE
kfree (sga)
FUNZIONE REMOVE
kfree (sga)
MEMORIAMEMORIA
struttura di statostruttura di stato
sgasgastruttura di statostruttura di stato
struttura di statostruttura di stato
struttura di statostruttura di stato
Rilevazione dell'errore con kmemleak
Problema con i driver caricati come modulo
cartesio_sga_probe
cartesio_sga_init
Rilevazione di Memory Leak (4)Rilevazione di Memory Leak (4)Risultati SperimentaliRisultati Sperimentali
Errore programmazioneErrore programmazione: mancanza salvataggio dell’handle della struttura : mancanza salvataggio dell’handle della struttura di stato allocatadi stato allocata
Funzione probeFunzione probeFUNZIONE PROBE
struct cartesio_sga *sgasga=kzalloc(struct cartesio_sga)
amba_set_drvdata(dev,sga)
FUNZIONE PROBE
struct cartesio_sga *sgasga=kzalloc(struct cartesio_sga)
amba_set_drvdata(dev,sga)
MEMORIAMEMORIA
struttura di statostruttura di stato
sgasga
Struct device
Struct device_private *p
Struct device
Struct device_private *p
Rilevazione dell'errore con kmemleak
cartesio_sga_probe
cartesio_sga_init
Valutazione delle Prestazioni di I/O su Valutazione delle Prestazioni di I/O su Dispositivi a BlocchiDispositivi a Blocchi
Scelta dello Strumento e PersonalizzazioneScelta dello Strumento e Personalizzazione Scelta dello strumento di automazione:Scelta dello strumento di automazione:
Bonnie e Bonnie++: valutazione di prestazioni su hard disk (tempi di seek)Bonnie e Bonnie++: valutazione di prestazioni su hard disk (tempi di seek) Tiobench: stress test multi-threadTiobench: stress test multi-thread IozoneIozone: verificare le prestazioni con l’influenza della gerarchia di memorie. Più : verificare le prestazioni con l’influenza della gerarchia di memorie. Più
completocompleto diverse operazioni: read, write dimensioni di file differenti (da 64KB a 512MB) trasferiti con record di diverse
dimensioni (da 4K a 16MB)
Ambiente TargetAmbiente Target Ambiete HostAmbiete Host
IOzoneIOzone
Risultati compatibili excel
Risultati compatibili excel
User-space
ExcelExcelMMC
Risultati
PersonalizzazionePersonalizzazioneCC= ccC89= c89GCC= gccCCS= /usr/ccs/bin/ccNACC= /opt/ansic/bin/cc
CC= ccC89= c89GCC= gccCCS= /usr/ccs/bin/ccNACC= /opt/ansic/bin/cc
CC= arm-stm-linux-gnueabi-gccC89= c89GCC= gccCCS= /usr/ccs/bin/ccNACC= /opt/ansic/bin/cc
CC= arm-stm-linux-gnueabi-gccC89= c89GCC= gccCCS= /usr/ccs/bin/ccNACC= /opt/ansic/bin/cc