matite e gomma

Logo di Conformità WCAG-1 di Livello Tripla A, W3C-WAI Web Content Accessibility Guidelines 1.0

Validazione XHTML 1.0 Validazione CSS 3
Logo del Dipartimento di Matematica e Informatica, Insegnamento di Sistemi dedicati, link al Forum

Strumenti di analisi di programmi ed esempi del loro uso

Esercitazione 08 di Sistemi dedicati

Docente: Giuseppe Scollo

Università di Catania
Dipartimento di Matematica e Informatica
Corso di Laurea Magistrale in Informatica, AA 2017-18

Indice

  1. Strumenti di analisi di programmi ed esempi del loro uso
  2. argomenti dell'esercitazione
  3. cross-compilatori e binutils GNU
  4. esempio per emulatore ARM VisUAL (1)
  5. esempio per emulatore ARM VisUAL (2)
  6. esecuzione con debugger per processore ARM Cortex-A9
  7. esecuzione con debugger per processore Nios II
  8. analisi di basso livello di eseguibili ARM
  9. analisi di basso livello di eseguibili Nios II
  10. esperienza di laboratorio
  11. riferimenti

argomenti dell'esercitazione

in questa esercitazione si trattano:

cross-compilatori e binutils GNU

lo sviluppo di programmi per sistemi dedicati è spesso condotto in macchine basate su un processore diverso dal target, cioè quello designato per la loro esecuzione

i cross-compilatori e i programmi di utilità qui considerati sono software libero GNU, che tipicamente hanno i nomi <target>–gcc per il compilatore, dove <target> indica l'architettura target, e <target>–<util> per l'utilità <util>, quale per esempio

esempio per emulatore ARM VisUAL (1)

un primo esempio mostra l'uso dell'emulatore ARM VisUAL v. 1.27 per la simulazione dell'esecuzione di un programma per il calcolo del GCD con l'algoritmo di Euclide (Listing 7.11 in Schaumont, con main modificato per il diverso sistema di simulazione)

in questo esempio si genera il programma assembly dal sorgente C mediante il cross-compilatore arm-linux-gcc, per ISA ARMv4, realizzata nel processore StrongARM

tuttavia, il sorgente assembly così prodotto non soddisfa le restrizioni imposte dall'emulatore, e.g contiene direttive di assemblatore e altri dettagli sintattici non accettati da VisUAL

l'archivio arm_visual_examples.tgz, reperibile nella cartella crosstools dell'area dedicata di laboratorio, fornisce i sorgenti C e gli script richiesti per la cross-compilazione e l'emulazione VisUAL dell'esempio GCD e di un secondo esempio, illustrato dalla prossima figura, che presenta una realizzazione software del calcolo del delay Collatz, simile in funzionalità alle realizzazioni hardware considerate nelle precedenti esperienze di laboratorio

esempio per emulatore ARM VisUAL (2)

un'istantanea dell'emulazione VisUAL del programma assembly ARM delay_collatz.s

un'istantanea dell'emulazione VisUAL del programma assembly ARM delay_collatz.s

esecuzione con debugger per processore ARM Cortex-A9

la figura mostra un'istantanea dell'esecuzione del programma delay_collatz.c sul processore ARM della DE1-SoC

cross-compilazione, caricamento ed esecuzione hanno luogo mediante il programma altera-monitor-program, sotto controllo del suo debugger GNU GDB

istantanea di esecuzione di programma ARM controllata dal debugger del Monitor Program

istantanea di esecuzione di programma ARM controllata dal debugger GDB del Monitor Program

esecuzione con debugger per processore Nios II

lo stesso sorgente C dell'esempio precedente può essere cross-compilato ed eseguito da softcore Nios II sulla FPGA nel sistema DE1-SoC

istantanea di esecuzione di programma Nios II controllata dal debugger GDB del Monitor Program

istantanea di esecuzione di programma Nios II controllata dal debugger GDB del Monitor Program

analisi di basso livello di eseguibili ARM

l'esecuzione dell'esempio delay_collatz sul processore ARM con il monitor program genera nella cartella del progetto due file interessanti per l'analisi di basso livello:

per condurre ulteriori analisi di basso livello è utile sapere dove sono collocati i programmi di utilità associati al cross-compilatore gcc utilizzato dal monitor program

N.B. in verità, il monitor program usa versioni specializzate di alcuni di questi strumenti, che hanno un'altra collocazione; tuttavia per l'uso generale, indipendente dall'esecuzione nel contesto del monitor program, è da utilizzare la collezione di strumenti indicata sopra

analisi di basso livello di eseguibili Nios II

l'elaborazione dei sorgenti C con il monitor program per l'esecuzione sul processore Nios II genera l'eseguibile .elf nella cartella del progetto, ma non il suo disassembly

ecco un semplice esempio di uso dell'utilità size: confronto della dimensione degli eseguibili generati dai tre cross-compilatori qui considerati, per entrambi i sorgenti C proposti e con le stesse opzioni di compilazione: in particolare, livello di ottimizzazione O2

la tabella che segue presenta il risultato di questo esercizio

C source cross-compiler text data bss total
gcd arm-linux 820 260 4 1084
  arm-altera-eabi 492 16 28 536
  nios2-elf 1056 1068 0 2124
delay_collatz arm-linux 864 260 4 1128
  arm-altera-eabi 628 16 28 672
  nios2-elf 1196 1068 0 2264

esperienza di laboratorio

riprodurre l'esecuzione degli esempi forniti per questa esercitazione, esaminare i file prodotti dalla loro esecuzione, individuare aspetti poco noti dei loro contenuti, reperire in rete informazioni su di essi e produrre della documentazione esplicativa in forma di lista di domande e risposte

ecco tre esempi di domanda e risposta, uno per ciascuno dei tre tipi descritti sopra:

riferimenti

letture raccomandate:

materiali per consultazione:

materiali utili per l'esperienza di laboratorio proposta: