Hvorfor konvertere HEX til ELF?
Noen innebygde verktøykjeder og feilsøkere godtar kun ELF-input, ikke rå HEX. Ved å pakke en .hex inn i .elf kan du laste fastvare inn i GDB eller flash-verktøy som krever ELF-format, selv uten en symboltabell. Den komplette ELF-filen med symboler og feilsøkingsinfo produseres av kompilatoren; konvertering fra HEX gir bare et ribbet skall.
Hvordan konvertere HEX til ELF
avr-objcopy OPEN-SOURCE
Kjør avr-objcopy -I ihex -O elf32-avr firmware.hex firmware.elf; erstatt elf32-avr med riktig mål (f.eks. elf32-littlearm for ARM Cortex-M). avr-objcopy følger med avr-gcc og er inkludert i Arduino IDE.
arm-none-eabi-objcopy OPEN-SOURCE
For ARM Cortex-M-mål, kjør arm-none-eabi-objcopy -I ihex -O elf32-littlearm firmware.hex firmware.elf fra GNU Arm Embedded Toolchain.
Om disse formatene
En .hex-fil er en Intel HEX-fil: kompilert fastvare (firmware) for en mikrokontroller som en Arduino, AVR eller PIC-brikke, lagret som ren tekst. Du kjører den ikke på en PC - du «flasher»…
Åpne .HEX-detaljer →En ELF-fil er det binære kjørbare formatet som brukes av Linux, Android, BSD-systemer og de fleste Unix-lignende systemer - tilsvarende Windows EXE. På Linux kjører du den direkte; en…
Åpne .ELF-detaljer →Kvalitet og hva du bør passe på
- Utdata-ELF-filen inneholder kun rå bytes på deres måladresser; seksjonsnavn vil være generiske (f.eks.
.sec1) i stedet for de opprinnelige navnene.text,.data,.bsstildelt av kompilatoren. - Hvis du kompilerte fastvaren selv, inneholder byggmappen sannsynligvis allerede en
.elfved siden av.hex- sjekk der før du konverterer. - Arkitekturflagget
-O elf32-avrmå samsvare med den faktiske CPU-en; bruk av feil flagg produserer en ELF som feilsøkere eller flash-verktøy vil avvise.
Ofte stilte spørsmål
Kan jeg gjenopprette funksjonsnavn og feilsøkingssymboler fra en HEX-fil?
Hvor finner jeg avr-objcopy på maskinen min?
hardware/tools/avr/bin/; bruk arm-none-eabi-objcopy for ARM-mål.