Unterschied zwischen HEX- und BIN-Dateien in Mikrocontrollern
Globaler Lieferant elektronischer Komponenten AMPHEO PTY LTD: Umfangreiches Inventar für One-Stop-Shopping. Einfache Anfragen, schnelle, individuelle Lösungen und Angebote.
In der Mikrocontroller-Entwicklung sind HEX- (Intel HEX) und BIN- (Binärdateien) zwei gängige Formate zum Speichern und Übertragen von Firmware. Hier eine Übersicht über ihre Unterschiede, Verwendungszwecke und wann man welches Format einsetzt:
1. Binärdatei (BIN)
-
Format: Rohe Binärdaten (0en und 1en), die den maschinenlesbaren Code repräsentieren, der in den Flash-Speicher des Mikrocontrollers geschrieben wird.
-
Inhalt:
-
Reiner ausführbarer Code + Daten (keine zusätzlichen Metadaten).
-
Adressen werden durch die Dateiposition impliziert (z. B. das erste Byte wird an der Basisadresse geladen).
-
-
Vorteile:
-
Kleinere Dateigröße (kein Overhead).
-
Direkt in Flash-Speicher schreibbar (z. B. über STM32-Bootloader).
-
-
Nachteile:
-
Keine Adressinformationen enthalten (müssen separat beim Flashen angegeben werden).
-
Keine Prüfsummen oder Fehlererkennung.
-
-
Typische Anwendungsfälle:
-
Flashen mit Tools wie
stm32flash
,OpenOCD
oder USB-DFU. -
OTA-Updates (Over-the-Air), wo Bandbreite entscheidend ist.
-
2. Intel HEX-Datei (HEX)
-
Format: ASCII-Textdatei mit Adressen, Daten und Prüfsummen in einem standardisierten Format.
-
Inhalt:
-
Jede Zeile enthält:
-
Startcode (
:
). -
Byteanzahl, Adresse, Datensatztyp (Daten, End-of-File usw.).
-
Nutzdaten + Prüfsumme.
-
-
Unterstützt nicht zusammenhängende Speicherbereiche (Lücken werden explizit behandelt).
-
-
Vorteile:
-
Enthält Adressinformationen.
-
Integrierte Fehlererkennung (Prüfsummen).
-
Menschenlesbar (kann mit einem Texteditor betrachtet werden).
-
-
Nachteile:
-
Größere Dateien (durch ASCII-Kodierung und Metadaten).
-
Muss vor dem Flashen geparst werden.
-
-
Typische Anwendungsfälle:
-
Debugging (einfacher zu analysieren).
-
Flashen über IDEs (Keil, IAR, STM32CubeProgrammer).
-
EEPROM-Programmierung (wenn Adressen wichtig sind).
-
Wichtige Unterschiede
Merkmal | BIN-Datei | HEX-Datei |
---|---|---|
Format | Rohe Binärdaten | ASCII-Text |
Adressinformation | Nicht enthalten (implizit) | Explizit enthalten |
Größe | Kompakt (kein Overhead) | Größer (durch Metadaten) |
Prüfsummen | Nein | Ja |
Menschenlesbar | Nein | Ja |
Flashen | Benötigt Basisadresse | Selbstbeschreibend |
Wann verwendet man was?
-
BIN verwenden:
-
Beim Flashen über Bootloader (z. B. STM32 UART/USB-DFU).
-
Für OTA-Updates (minimiert Übertragungsgröße).
-
Wenn die Zieladresse bekannt und fest ist.
-
-
HEX verwenden:
-
Beim Debuggen oder Analysieren von Firmware.
-
Beim Flashen über IDEs (z. B. STM32CubeIDE erzeugt standardmäßig HEX).
-
Für EEPROM oder nicht zusammenhängende Speicherbereiche.
-
Konvertierung zwischen HEX und BIN
-
HEX zu BIN:
Tools wieobjcopy
(GNU Arm Embedded Toolchain) verwenden:arm-none-eabi-objcopy -I ihex -O binary firmware.hex firmware.bin
-
BIN zu HEX:
Basisadresse angeben (z. B.0x08000000
für STM32-Flash):arm-none-eabi-objcopy -I binary -O ihex --adjust-vma 0x08000000 firmware.bin firmware.hex
Beispiel für eine HEX-Datei
:1000000048000020A1010008AD010008B1010008C4 :10001000B5010008B9010008000000000000000020 :0400200000000000B8 :00000001FF
-
:10
= 16 Datenbytes. -
0000
= Adressoffset. -
00
= Datensatztyp (Daten). -
C4
= Prüfsumme.
STM32-spezifische Hinweise
-
STM32CubeIDE: Erzeugt standardmäßig sowohl
.hex
als auch.bin
(konfigurierbar in den Projekteinstellungen). -
Flashtools:
-
ST-Link Utility: Unterstützt HEX und BIN.
-
STM32CubeProgrammer: Bevorzugt HEX, akzeptiert aber BIN (benötigt Adressangabe).
-
Zusammenfassung
-
BIN: Einfacher, kleiner, aber ohne Metadaten. Ideal für Produktionsflashing.
-
HEX: Selbstbeschreibend, sicherer für Debugging. Wird in der Entwicklung verwendet.
Wähle das Format basierend auf deiner Toolchain und den Anforderungen!
Verwandte Artikel
- ·Wie erstelle ich eine PCB für STM32?
- ·Wie man eine STM32 CNC 4-Achsen macht?
- ·UART-Serielle Kommunikationsexperiment basierend auf Raspberry Pi 4B und STM32
- ·Wie wählt man den Takt für den STM32 aus?
- ·Welches ist besser für Anfänger: ESP32 oder STM32? Ein Roboter-Beispiel
- ·Anwendung eingebetteter Elektronik im Bereich der Unterhaltungselektronik
- ·Anwendung von Embedded Systems in Industrierobotern
- ·Anwendung von eingebetteten Systemen in der Luft- und Raumfahrt sowie im Verteidigungsbereich
- ·Die Anwendung von Embedded Systems im medizinischen Bereich