arm llvm clang cortex-m3 stm32

arm - cómo usar llvm+clang para compilar para stm32



cortex-m3 (2)

Creé un marco de firmware, PolyMCU https://github.com/labapart/polymcu , que se basa en CMake que admite GCC y LLVM. Debido a que se basa en CMake, puede construir su firmware en Linux / Windows / MacOS. También usa Newlib - ¡parece que todos tus requisitos están ahí!

También escribí un blog donde comparé el tamaño de construcción de GCC y LLVM en ARM Cortex-M: http://labapart.com/blogs/3-the-importance-of-the-toolchain-version-in-embedded-space Resultados interesantes El código generado por Clang no es mucho más grande que GCC en Cortex-M ...

¿Alguien tiene información sobre cómo construir una cadena de herramientas llvm + clang usando binutils y newlib y cómo usarla?

  • host: Linux, AMD64
  • objetivo: cortex-m3, stm32
  • c-lib: newlib
  • ensamblador: gnu como

Desafortunadamente, en este momento el Clang no admite configuraciones flexibles de compilación cruzada. Por lo tanto, lo más probable es que necesite invocar las herramientas necesarias con todos los argumentos necesarios.

Comience con la creación de llvm + clang usando --target = thumbv7-eabi configure argumento (tenga en cuenta que necesitará esto para hacer uso de llvm + clang a partir de ayer). Es posible que desee especificar --enable-targets = arm también. Esto le indicará a Clang que genere código para el pulgar por defecto. Después de esto, puedes invocar clang -mcpu = cortex-m3 para generar el código para ti.

Deberá proporcionar todas las rutas de inclusión / biblioteca necesarias por manos a través de -I / -L, etc.

Si está satisfecho con algunos trucos de C ++, puede escribir la "Información de host" necesaria, por lo que invocará las herramientas adecuadas y proporcionará las rutas correctas de forma automática.