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?
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 buenas páginas 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-de-stm32f4-arm-development-toolchain/ y http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/
Sin embargo, encontré el último enlace 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á indicadores de compilación diferentes, y la secuencia de comandos del enlazador será ligeramente diferente para cada uno (aunque en realidad solo debido a los cambios en los tamaños 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 propio STM32, por lo que una vez que haya instalado 'stlink' para que pueda actualizar a la placa, puede simplemente descargar una imagen de ese sitio, activarla y luego conectarse con una aplicación de terminal y empezar a programar.
Si le gustan más los editores de texto y los Makefiles en lugar de usar una GUI, podría hacer lo siguiente:
Lleve su proyecto a la junta. Cualquiera de los usos
Codifique en un editor de texto y utilice herramientas de línea de comandos. Este tutorial proporcionará muchos consejos.
Disfrutar
Eclipse , GCC y OpenOCD es una cadena de herramientas. Lo recomienda 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 si necesita ayuda para compilar 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 parte 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 asombrado de poder simplemente recorrer el código de un solo paso o explorar la memoria del dispositivo en lugar de insertar declaraciones de depuración en mi código o adivinar qué está pasando 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 tableros de descubrimiento. Siguiendo las instrucciones e instalando los complementos de Eclipse recomendados, pude usar mi STM32VLDISCOVERY en Ubuntu.
Como se recomienda, he combinado la plantilla de eclipse con la biblioteca de plantillas libstm32pp C++ del mismo autor para el hardware STM32. libstm32pp proporciona un reemplazo sorprendentemente completo para CMSIS y los controladores STM32, a 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()
casi todo compilado en línea debido a las plantillas de C++. La configuración es muy agradable.
Tal vez sería útil para alguien: mi artículo breve (sobre ruso) y 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 con la placa de descubrimiento STM32F0 en Linux o cualquier otro sistema operativo:
https://github.com/dobromyslov/stm32f0-chibios-plantilla
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.
Uso vim y arm-none-eabi-gcc junto con todas las herramientas habituales de desarrollo de Linux. Linux es, en mi opinión, un entorno de desarrollo superior para el trabajo integrado con diferencia. Para la depuración, uso stlink y arm-none-eabi-gdb.
Considere la plataforma . Si se siente cómodo con la línea de comandos, encontrará que platformio facilita considerablemente el proceso de desarrollo. pio init
se puede utilizar 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.
tom rert
clabacchio
Richard Cámaras
Richard Cámaras