Wie verwende ich eine Linker-Datei mit Keil uVision5 ARM?

Ich versuche, einem Tutorial zu folgen, das einen benutzerdefinierten Bootloader auf einem STM32F072 (ARM M0 Core) implementiert, der eine Neuzuordnung von Speicherbereichen beim Kompilieren sowohl für die „Bootload“-Anwendung als auch für die „Hauptanwendung“ erfordert, die dann in den Abschnitt danach programmiert wird der 'Bootload'-Bereich in FLASH.

Das Tutorial enthält eine bootload.ld-Datei, die dies bereits für mich erledigt, aber ich kann Keil nicht anweisen, diese bootload.ld-Datei beim Verknüpfen zu verwenden.

Ich kann nur eine "Scatter-Datei" hochladen, aber das scheint nach einigem Lesen in den Keil-Foren nicht dasselbe zu sein.

Wie kann ich dieses Linker-Skript importieren bzw. was muss ich tun?

Dies sind die einzigen Optionen unter Linker:Keil uVision5 Linker-Optionen

"Scatter-Datei" ist das Linker-Skriptformat für die armcc- Toolchain. Es unterscheidet sich von GNU ld . Sie müssen also abhängig von Ihrer Toolchain die richtige Datei verwenden.

Antworten (2)

Im Dialogfeld "Optionen für Ziel" auf der Registerkarte "Linker" bestimmt die Option "Speicherlayout aus Dialogfeld "Ziel" verwenden", ob Ihre benutzerdefinierte Scatter-Datei verwendet wird. Wenn Use Memory Layout from Target Dialog aktiviert ist, verwendet der Linker Informationen aus den Speicheroptionen, die auf der Registerkarte Target ausgewählt wurden. (Die Toolchain verwendet die Einstellungen der Registerkarte „Target“, um automatisch eine Scatter-Datei zu generieren, die dem Linker zugeführt wird.) Sie müssen „Use Memory Layout from Target Dialog“ deaktivieren, um eine benutzerdefinierte Scatter-Datei zu verwenden, die auf der Registerkarte „Linker“ angegeben ist.

Ich glaube, Scatter-Dateien haben normalerweise die Erweiterung .sct. Wurde Ihre bootload.ld für die Keil-Toolchain oder eine andere geschrieben? Wenn es für eine andere Toolchain geschrieben wurde, funktioniert es wahrscheinlich nicht mit der Keil-Toolchain, es sei denn, Sie schreiben es neu, um die richtige Keil-Scatter-Dateisyntax zu verwenden.

Ein Beispiel für eine Scatter-Datei finden Sie in der .sct-Datei, die automatisch von der Toolchain generiert wurde, als Sie mit aktivierter Option „Speicherlayout aus Zieldialog verwenden“ erstellten. Und natürlich die Anleitung lesen .

Vielen Dank, das Linker-Skript wurde für Eclipse geschrieben. Ich habe es nicht vollständig herausgefunden, aber das hat sehr geholfen: navyuginfo.com/custom-bootloader-for-stm32f072rb

Deaktivieren Sie das 'Speicherlayout aus dem Zieldialog verwenden' und wählen Sie die entsprechende Scatter-Datei aus oder bearbeiten Sie sie. Ich bin mir nicht sicher, wie unterschiedlich sich der Linker von arm gcc vom Linker von armcc unterscheidet. Aber die Scatter-Datei wird verwendet, um verschiedene Abschnitte im Speicher zu generieren, und es ist auch ziemlich einfach. Sie können den Anweisungen von View > Books > (unabhängig vom vorhandenen Linker-Dokument) folgen.