Derzeit versuche ich, die Mikrocontroller-Serie STM32L0 zu verwenden. Ich habe festgestellt, dass ST auch eine Low-Level-C-Programmsammlung namens STM32SnippetsL0 anbietet , parallel zu ihrer komplexen STM32CubeMX-basierten HAL-API. Leider kann ich die Codes nicht unter GNU/Linux verwenden, da es nur EWARM- und MDK-ARM-Toolchains unterstützt. Gibt es Möglichkeiten, diesen Code mit der GCC ARM Embedded Toolchain auszuführen ?
Nach langem Experimentieren kann ich sagen, dass es möglich ist, die STM32Snippets mit der GCC ARM Embedded Toolchain zu kompilieren. Die Snippets enthalten selbst die notwendigen Dateien außer der Linker-Datei. Ich habe eine Linker-Datei verwendet, die von STM32CubeMX (SW4STM32-Vorlage) kopiert wurde, aber ich denke, dass andere Skripte auch verwendbar sind.
Es ist notwendig, zwei Dateien aus dem Snippets-Vorlagenordner (Drivers/CMSIS/Device/ST/STM32L0xx/Source/Templates) zu kopieren. Die erste ist system_stm32l0xx.c und die zweite die entsprechende Startup-Assembly-Datei aus dem gcc-Unterordner. (Ja, es scheint gcc teilweise zu unterstützen.) Ich habe startup_stm32l053xx.s verwendet, weil ich das Nucleo-Board verwende. Wenn die heruntergeladenen Snippets in den Ordner snippets extrahiert wurden und sich arm-none-eabi-gcc in Ihrem Pfad befindet, können Sie den folgenden Code verwenden:
arm-none-eabi-gcc -DSTM32L053xx -Wall -g -mthumb -mcpu=cortex-m0plus -march=armv6-m -mlittle-endian -Isnippets/Drivers/CMSIS/Include -Isnippets/Drivers/CMSIS/Device/ST/STM32L0xx/Include -Wl,--gc-sections,-Map=main.map -Tstm32l053xx.ld -L. system_stm32l0xx.c startup_stm32l053xx.s main.c -o main.elf
Schließlich wird bin zum Hochladen auf Nucleo erstellt.
arm-none-eabi-objcopy -O binary main.elf main.bin
Oldtimer
Kaliczp
Oldtimer