Los sistemas de compilación de los microcontroladores

Publicado por Oravatec en

Los fabricantes de los microcontroladores suelen ofrecer herramientas para generar proyectos, códigos de ejemplo, etc. Son muy útiles para comenzar nuevos proyectos sin perder tiempo. Sin embargo, desconocer la estructura del proyecto o el sistema de compilación que usas es una mala idea a largo plazo.

STM32 Cube IDE es el entorno de desarrollo de ST para la familia STM32. Su sistema de compilación se basa makefiles generados en base a la configuración en su herramienta.

El sistema de compilación de los fabricantes

Los fabricantes de microcontroladores ofrecen frecuentemente como parte de su software un IDE con el que poder programar y debuggar. Hay ejemplos como los de ST, el de NXP, Microchip, TI, etc.

Estos IDEs integran un sistema de compilación (suele ser basado en make, usando Eclipse CDT) que liberan al usuario de estos temas. Es práctico cuando estamos ante un proyecto pequeño o de una persona.

En proyectos más complejos, en el que participan más personas o si necesitamos integración continua, necesitas conocer el sistema de compilación.

Ventajas de conocer el sistema de compilación del microcontrolador

  • Una actualización del software del fabricante no hará que tu proyecto deje de compilar ni modificará los binarios de tu proyecto.
  • Podrás replicar de inequívocamente el entorno de desarrollo en distintas máquinas. Incorporar nuevos miembros al proyecto será sencillo.
  • Podrás compilar mediante línea de comandos, lo que te permitirá automatizar el proceso y hacer CI/CD.
  • Incorporarás actualizaciones de los drivers del fabricante cuando tú consideres oportuno, no cuando la herramienta se actualice.

Cómo montar un sistema de compilación para un microcontrolador

  • Compila un proyecto de ejemplo o uno que ya tengas con el IDE.
  • Analiza los ficheros de compilación: makefiles, paths, includes, código generado, variables de entorno, drivers…
  • Localiza la toolchain que utiliza y descárgala.
  • Replica el sistema de compilación con tu herramienta favorita (CMake, Scons, waf, o cualquier otro). También podrías usar el que genera el IDE y mantenerlo aunque es preferible utilizar algún sistema moderno.

Usar Docker para generar un entorno de compilación replicable

Una vez localizas la toolchain, conoces las dependencias y tienes un sistema de compilación funcionando, puedes generar una imagen de Docker para poder replicar el entorno de manera determinista. Si no conoces Docker, hay cientos de tutoriales y videos en internet.

Con esta imagen podremos replicar el entorno de compilación bajo demanda para nuestro proyecto, lanzar los tests unitarios y compilar el binario para nuestro target en cualquier máquina.

Conclusiones

Es importante entender y controlar el sistema de compilación de tu proyecto si quieres realizar integración contínua o escalarlo. Creando una imagen de Docker que contenga la toolchain puedes compilar el proyecto en cualquier máquina sin preocuparnos de las dependencias y obtendrás siempre el mismo resultado. Con esta imagen podrás automatizar la compilación cuando haya nuevos commits o pull requests y lanzar los tests unitarios de manera automática.


Consulta cómo implementar un caso práctico en el artículo Integración continua con STM32.


¡No te pierdas nada!


Desarrollo de productos electrónicos | Diseño electrónico | Software embebido y firmware | Fabricación electrónica e industrialización de productos