DMI – Corso di laurea magistrale in Informatica
Copyleft
2018 Giuseppe Scollo
in questa esercitazione si trattano:
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
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
un'istantanea dell'emulazione VisUAL del programma assembly ARM delay_collatz.s
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 GDB del Monitor Program
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
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
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 |
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:
letture raccomandate:
materiali per consultazione:
materiali utili per l'esperienza di laboratorio proposta: