Die Speicherung von CRC in eine AXF/ELF-Datei

Derzeit arbeite ich auf ein C-Programm in der LPCXpresso (eclipse-basiert) tool-Kette auf Windows 7, eine Entwicklungsumgebung mit gcc-targeting die einem NXP Cortex M3 Mikroprozessor. Es bietet eine einfache Möglichkeit, compile-link-Programm, das der Mikroprozessor über JTAG. Das Ergebnis eines build ist eine AXF Datei (ELF-format) geladen wird, durch die eine debug-Konfiguration.

Dem geladenen Programm befindet sich im Flash-Speicher von 0x00000 bis 0x3FFFB. Ich möchte einen 4-byte-CRC-32 bei 0x3FFFC zur Validierung des Programms beim start-up. Ich fügte hinzu, ein weiterer Abschnitt, und verwenden Sie die gcc __attribute__ Richtlinie für den Zugang zu diesem Speicher.

uint32_t crc32_build __attribute__ ((section(".text_MFlashCRC")));

Zu berechnen und zu speichern, die einen CRC-32 Wert, mein plan war zu verwenden SRecord mit dem folgenden post-build-Schritte:

arm-none-eabi-size "${BuildArtifactFileName}"
arm-none-eabi-objcopy -O binary "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin"
checksum -p ${TargetChip} -d "${BuildArtifactFileBaseName}.bin"
../util/srec_cat "${BuildArtifactFileBaseName}.bin" -binary -crop 0 0x3FFFC -fill 0xFF 0x00000 0x3FFFC -crc32-b-e 0x3FFFC -o "${BuildArtifactFileBaseName}.crc.bin" -binary
echo ""
echo "CRC32:"
../util/srec_cat "${BuildArtifactFileBaseName}.crc.bin" -binary -crop 0x3FFFC 0x40000 -o - -hex-dump

Dieser erzeugt eine Binärdatei mit einer Prüfsumme (notwendig für den bootloader) und berechnet dann die CRC über die verwendete Flash-Speicher, zum speichern des CRC-Wert an 0x3FFFC.

Aber ich glaube nicht, ich kann laden Sie die Binärdatei mit dem debugger. Es ist ein built-in-Programmierung utility mit LPCXpresso können, laden Sie die geänderte binäre Datei, aber das lässt mich nicht Debuggen. Ich glaube, ich kann dann versuchen, starten Sie eine debug-Sitzung mit dem original AXF-Datei mittels "attach-only" - Modus, allerdings wird dies umständlich.

Habe ich in der Lage zu verwenden readelf, um zu untersuchen crc32_build variable in der AXF-Datei. Gibt es eine Möglichkeit zum Bearbeiten der variable in der AXF-Datei? Ist es ein Industrie-standard-Ansatz zum einfügen eines CRC als post-build-Schritt?

InformationsquelleAutor superlou | 2014-06-10
Schreibe einen Kommentar