PlatformIO-Firmware mit Build-Offset in Firmware ohne Offset konvertieren

English Deutsch

Einige Firmwares werden mit einem Build-Offset gebaut, um Flash-Speicher (wie 32k - 0x8000) für einen Bootloader zu reservieren, der vor der Firmware gestartet wird. Einer der Nachteile der Verwendung einer solchen Firmware ist, dass sie immer von einem kompatiblen Bootloader abhängt (Kompatibilität wird hauptsächlich dadurch definiert, wie viel Flash für den Bootloader reserviert wird).

Wenn Sie eine Firmware in eine “normale” Nicht-Bootloader-Firmware konvertieren möchten, müssen Sie Folgendes tun:

Suchen Sie nach dem MEMORY-Abschnitt wie diesem:

linker_memory_section.ld
MEMORY
{
FLASH (rx)      : ORIGIN = 0x8008000, LENGTH = 512K
RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 128K
}

Wie Sie in

linker_flash_origin.txt
FLASH (rx) : ORIGIN = 0x8008000, LENGTH = 512K

sehen, befindet sich der Flash für dieses STM32 (Beispiel) nicht an der Flash-Adresse 0x8000000 des MCU, sondern an 0x8008000 - im Grunde wird dem Linker mitgeteilt, die 0x8000 (32k) zu überspringen, die der Bootloader belegt (sonst würde er den Bootloader überschreiben).

Ändern Sie dies in die Flash-Adresse Ihres MCU. Für ARMs wie das STM32 ist dies typischerweise 0x8000000.

Kompilieren Sie nun neu und Ihre Firmware sollte ohne den Bootloader funktionieren.


Check out similar posts by category: Embedded, PlatformIO, STM32