Fragmentos STM32L0 con cadena de herramientas GCC ARM

Actualmente trato de usar la serie de microcontroladores STM32L0. Descubrí que ST también ofrece una colección de programas C de bajo nivel llamada STM32SnippetsL0 , en paralelo con su compleja API HAL basada en STM32CubeMX. Desafortunadamente, no puedo usar los códigos bajo GNU/Linux porque solo admite cadenas de herramientas EWARM y MDK-ARM. ¿Hay alguna posibilidad de ejecutar este código con la cadena de herramientas GCC ARM Embedded ?

suena como una pregunta de stackoverflow. ¿Por qué no puedes usar ewarm? ¿Qué bibliotecas no funcionan? se puede enlazar en las otras bibliotecas? ewarm también es una cadena de herramientas del compilador gnu, ¿sí? por lo que debería poder vincularlos.
Gracias por tus consejos @dwelch. AFAIK EWARM se basa en el compilador C de IAR Systems. Se ejecuta solo en Windows y quiero encontrar una solución basada en GNU/Linux.
ahh, lo siento, estaba pensando en un compilador diferente, un compilador cruzado basado en gnu para Windows, no importa... es posible que aún pueda vincular, y/o si tienen el código fuente de la biblioteca, puede volver a compilar. No puedo imaginar que st entregue el paquete de soporte de placa/chip sin fuentes en algún lugar y/o sin un conjunto de bibliotecas basadas en gnu. Si no ofrecen eso, entonces no me molestaría y buscaría otra solución.

Respuestas (1)

Después de un largo experimento, puedo decir que es posible compilar STM32Snippets con la cadena de herramientas GCC ARM Embedded. Los Snippets contienen los archivos necesarios excepto el archivo del enlazador. Usé un archivo de enlace copiado de STM32CubeMX (plantilla SW4STM32), pero creo que también se pueden usar otras secuencias de comandos.

Es necesario copiar dos archivos de la carpeta de plantillas Snippets (Drivers/CMSIS/Device/ST/STM32L0xx/Source/Templates). El primero es system_stm32l0xx.c y el segundo el archivo de ensamblaje de inicio adecuado de la subcarpeta gcc. (Sí, parece que es compatible parcialmente con gcc). Usé startup_stm32l053xx.s porque uso la placa Nucleo. Si los fragmentos descargados se extraen a los fragmentos de la carpeta y arm-none-eabi-gcc está en su ruta, puede usar el siguiente código:

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

Finalmente se produce bin para subir a Núcleo.

arm-none-eabi-objcopy -O binary main.elf main.bin