Tengo una placa de descubrimiento STM32 y me gustaría poder programarla en Linux.
¿Cuál es la forma más fácil de hacer esto?
Tengo una placa de descubrimiento STM32 y me gustaría poder programarla en Linux.
¿Cuál es la forma más fácil de hacer esto?
Respuestas:
Una manera fácil de programar y depurar la placa STM32 Discovery (o cualquier STM32 que use un programador ST-Link) es usar el proyecto 'stlink' https://github.com/texane/stlink (sin embargo, OpenOCD también parece popular)
Las placas ST Nucleo también aparecen como un dispositivo flash USB, por lo que ni siquiera es necesario stlink
, simplemente copie el archivo en ellas.
Hay algunas páginas buenas sobre cómo desarrollar para el descubrimiento de STM32 en Linux, como http://gpio.kaltpost.de/?page_id=131 y http://torrentula.to.funpic.de/2012/03/22/ configuración-the-stm32f4-arm-development-toolchain / y http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/
Sin embargo, el último enlace me pareció el más útil. Muestra cómo construir los proyectos STM32 de ST tal como están: el único cambio es agregar su Makefile, que parece una solución perfecta.
En versiones recientes de Ubuntu, hay un paquete que puede instalar que contiene un compilador ARM:
sudo apt-get install gcc-arm-none-eabi
Tenga en cuenta que los procesadores son todos un poco diferentes. STM32F0..4 necesitará diferentes indicadores de compilación, y la secuencia de comandos del enlazador será ligeramente diferente para cada uno (aunque en realidad solo debido a los cambios en el tamaño de RAM y Flash).
Editar: si desea comenzar realmente rápido , también puede consultar http://www.espruino.com . Es un intérprete de JavaScript que se ejecuta en el STM32, por lo que una vez que haya instalado 'stlink' para poder flashear en la placa, simplemente puede descargar una imagen de ese sitio, encenderla y luego conectarse con una aplicación de terminal y comenzar a programar.
Si le gustan más los editores de texto y los Makefiles en lugar de usar una GUI, puede hacer lo siguiente:
Lleve su proyecto a la pizarra. Cualquiera de uso
Codifique en un editor de texto y use herramientas de línea de comandos. Este tutorial proporcionará muchos consejos.
Disfrutar
Eclipse , GCC y OpenOCD es una cadena de herramientas. Es recomendado por EMCU-IT y hay información adicional aquí . Esas páginas también recomiendan usar un RTOS como FreeRTOS.org , pero eso depende de usted.
Y para obtener ayuda con la compilación de los ejemplos de STM32 en Linux, vaya aquí . Ese enlace apunta a un archivo MAKE para los ejemplos que se pueden invocar con
git clone git://github.com/snowcap-electronics/stm32-examples.git
cd stm32-examples
wget http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32_f105-07_f2xx_usb-host-device_lib.zip
unzip stm32_f105-07_f2xx_usb-host-device_lib.zip
También se documentan un par de correcciones de código menores, pero la mayoría del proyecto debería funcionar con
make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-
He tenido éxito con https://github.com/JorgeAparicio/bareCortexM (ver también las publicaciones de blog vinculadas). Estoy convencido de que puedo simplemente pasar un paso por el código o explorar la memoria del dispositivo en lugar de insertar declaraciones de depuración en mi código o adivinar lo que está sucediendo dentro del chip.
El proyecto bareCortexM es una plantilla de Eclipse para desarrollar con la serie Cortex M, especialmente STM32, en C ++ sin un sistema operativo. Está configurado para usar openocd, gcc y tiene scripts para flashear y depurar en varios objetivos, incluidos algunos de los paneles de descubrimiento. Siguiendo las instrucciones e instalando los complementos Eclipse recomendados, pude usar mi STM32VLDISCOVERY en Ubuntu.
Según lo recomendado, combiné la plantilla de eclipse con la biblioteca de plantillas C ++ libstm32pp del mismo autor para el hardware STM32. libstm32pp proporciona un reemplazo sorprendentemente completo para CMSIS y los conductores STM32 menudo criticados con un modelo de programación que le permite decir cosas como PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)
y PINB::setLow()
, o PINB::setHigh()
todos en línea sobre todo compilado debido a las plantillas de C ++. La configuración es muy agradable.
Tal vez sería útil para alguien: mi breve artículo (en ruso) y un proyecto simple . Todo en Linux y sin cosas innecesarias como eclipse.
Las bibliotecas se tomaron del sitio web de ST, makefile, de uno de los muchos ejemplos de GPL en internet.
Aquí hay un proyecto de plantilla pequeño pero innovador para el inicio rápido usando la placa de descubrimiento STM32F0 bajo Linux o cualquier otro sistema operativo:
https://github.com/dobromyslov/stm32f0-chibios-template
Tenga en cuenta que el proyecto utiliza ChibiOS, un sistema operativo en tiempo real gratuito y de código abierto, por lo que no es exactamente una implementación básica desde cero.
Considere plataforma . Si se siente cómodo con la línea de comandos, encontrará que la plataforma facilita considerablemente el proceso de desarrollo. pio init
se puede usar para configurar un proyecto. pio run
aprovecha la cadena de herramientas para compilar. pio run --target upload
envía el código al dispositivo. Platformio se encarga de descargar los componentes de la cadena de herramientas, las bibliotecas, etc., según sea necesario.