Perché convertire HEX in ELF?
Alcune toolchain e debugger embedded accettano solo input ELF, non HEX grezzi. Racchiudere un .hex in .elf ti permette di caricare il firmware in GDB o utility di flashing che richiedono il formato ELF, anche senza una tabella dei simboli. L'ELF completo di simboli e info di debug è prodotto dal compilatore; la conversione da HEX produce solo un guscio spogliato.
Come convertire HEX in ELF
avr-objcopy OPEN-SOURCE
Esegui avr-objcopy -I ihex -O elf32-avr firmware.hex firmware.elf; sostituisci elf32-avr con il target corretto (es. elf32-littlearm per ARM Cortex-M). avr-objcopy viene fornito con avr-gcc ed è incluso nell'IDE di Arduino.
arm-none-eabi-objcopy OPEN-SOURCE
Per i target ARM Cortex-M, esegui arm-none-eabi-objcopy -I ihex -O elf32-littlearm firmware.hex firmware.elf dalla GNU Arm Embedded Toolchain.
Informazioni su questi formati
Un file .hex è un file Intel HEX: firmware compilato per un microcontrollore come un chip Arduino, AVR o PIC, memorizzato come record di testo semplice. Non si esegue su un PC - viene…
Apri dettagli .HEX →Un file ELF è il formato eseguibile binario utilizzato da Linux, Android, i sistemi BSD e la maggior parte dei sistemi Unix-like - l'equivalente degli EXE di Windows. Su Linux si esegue…
Apri dettagli .ELF →Qualità e a cosa prestare attenzione
- L'ELF in uscita contiene solo byte grezzi ai loro indirizzi di destinazione; i nomi delle sezioni saranno generici (es.
.sec1) invece dei nomi originali.text,.data,.bssassegnati dal compilatore. - Se hai compilato tu stesso il firmware, la directory di build probabilmente contiene già un
.elfinsieme al.hex- controlla lì prima di convertire. - Il flag di architettura
-O elf32-avrdeve corrispondere alla CPU effettiva; l'uso di un flag errato produce un ELF che i debugger o i programmatori rifiuteranno.
Domande frequenti
Posso recuperare i nomi delle funzioni e i simboli di debug da un file HEX?
Dove si trova avr-objcopy sul mio computer?
hardware/tools/avr/bin/; usa arm-none-eabi-objcopy per i target ARM.