¿Cómo me desarrollo para el descubrimiento de STM32 en Linux? [cerrado]

22

Tengo un tablero de descubrimiento STM32 y me gustaría poder programarlo en Linux.

¿Cuál es la forma más fácil de hacer esto?

    
pregunta Gordon Williams

8 respuestas

11

Una forma fácil de programar y depurar la placa de descubrimiento STM32 (o cualquier STM32 que use un programador ST-Link) es usar el proyecto 'stlink' enlace (sin embargo, OpenOCD también parece popular)

Las placas ST Nucleo también aparecen como un dispositivo flash USB, por lo que ni siquiera necesita stlink , simplemente copie el archivo en ellas.

Hay algunas buenas páginas sobre cómo desarrollar el descubrimiento de STM32 en Linux, como enlace y enlace y enlace

Sin embargo, encontré el último enlace el más útil. Muestra cómo construir los proyectos STM32 de ST como están: el único cambio es agregar su Makefile, que parece una solución perfecta.

En las 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. Todos los STM32F0..4 necesitarán diferentes indicadores de compilador, y la secuencia de comandos del vinculador será ligeramente diferente para cada uno (aunque solo en realidad debido a los tamaños cambiados de RAM y Flash).

Editar: si quieres comenzar realmente rápido también puedes consultar enlace . Es un intérprete de JavaScript que se ejecuta en el STM32, así que una vez que haya instalado 'stlink' para que pueda acceder a la placa, puede descargar una imagen de ese sitio, conectarla con una aplicación de terminal y empezar a programar

    
respondido por el Gordon Williams
6

Si está más interesado en los editores de texto y Makefiles en lugar de utilizar una GUI, podría hacerlo:

  • Instale una cadena de herramientas que proporcione arm-none-eabi-gcc. En Archlinux, necesitarías community / arm-none-eabi-binutils, arm-none-eabi-gcc y arm-none-eabi-newlib (y arm-none-eabi-gdb si quieres depurar) todo de la comunidad repo, o enlace (que se puede encontrar en Archlinux 'AUR como gcc-arm-none-eabi-bin).
  • Decida, si y qué biblioteca desea usar para acceder al hardware. Desde lo alto de mi cabeza, hay tres opciones comunes:
    1. Ninguno. Escribes todo desde cero. No recomendable para principiantes.
    2. STM32Cube : una biblioteca C lib proporcionada por el propio ST.
    3. Libopencm3 : una biblioteca de código abierto que admite bastantes núcleos de cortezax de diferentes proveedores.
    4. STM32PLUS : A lib C ++. Sin embargo, no puedo decir mucho más al respecto porque no lo he probado.
  • Crea o copia tu primer proyecto.
    1. Sin una biblioteca, escriba su propio makefile, secuencia de comandos de vinculador, código de inicio y ejecute un makefile simple. Buena suerte;)
    2. Con STM32Cube: descargue e instale STM32CubeMX . Una vez descomprimido, el archivo * .exe es en realidad solo un archivo java y puede ejecutarlo usando "java -jar filename.exe". La instalación necesita sudo. Cuando haya terminado, cree un proyecto y genere el código para "Truestudio". Eso debería darle un punto de partida con un script de vinculador, un código de inicio, alguna función principal trivial (y un makefile si recuerdo bien). En realidad, incluso si no usa la biblioteca STM32Cube, el STM32CubeMX es ideal para calcular los valores del árbol del reloj y validar si puede configurar el chip de la forma que piensa.
    3. Con libopencm3: obtenga los ejemplos de libopencm3 , encuentre un ejemplo que coincida con su tablero y utilícelo como punto de partida. Los ejemplos deben estar listos para ejecutarse. Sólo escribe "hacer". Luego use ese ejemplo como punto de partida para su propio desarrollo.
    4. Con STM32Plus: No lo sé. Lo siento.
  • Lleva tu proyecto al tablero. Cualquiera de los dos

    1. El cargador de arranque en serie: stm32flash funciona muy bien.
    2. El puerto de depuración: puede usar openocd para hablar con el adaptador de depuración que se proporciona en la pizarra. Openocd es genial, pero la documentación no siempre es la mejor. En caso de duda, únete al canal openocd irc. La gente allí es realmente agradable.
  • Codifique en un editor de texto y use las herramientas de línea de comandos. Este tutorial proporcionará muchos consejos.

Disfruta

    
respondido por el mox
5

Eclipse , GCC , y OpenOCD es una cadena de herramientas. Es recomendado por EMCU-IT y hay información adicional en este caso, por ejemplo. .stf12.org / developers / ODeV.html "> here . Esas páginas también recomiendan utilizar un RTOS como FreeRTOS.org , pero eso depende de usted.

Y para obtener ayuda para compilar los ejemplos STM32 en Linux vaya aquí . Ese enlace apunta a un makefile 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 menores de código, pero la mayoría del proyecto debería funcionar con

make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-
    
respondido por el embedded.kyle
1

He tenido éxito con enlace (consulte también las publicaciones de blogs vinculadas). Estoy convencido de que puedo simplemente realizar un solo paso a través del código o explorar la memoria del dispositivo en lugar de insertar sentencias de depuración en mi código o adivinar qué ocurre dentro del chip.

El proyecto bareCortexM es una plantilla de Eclipse para desarrollar con la serie Cortex M, especialmente STM32, en C ++ sin sistema operativo. Está configurado para usar openocd, gcc y tiene scripts para flashear y depurar en varios destinos, incluidos algunos de los tableros de descubrimiento. Siguiendo las instrucciones e instalando los complementos de Eclipse recomendados, pude usar mi STM32VLDISCOVERY en Ubuntu.

Según lo recomendado, he combinado 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 controladores STM32 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() , todo compilado en línea debido a las plantillas C ++. La configuración es muy buena.

    
respondido por el joeforker
0

Tal vez sería útil para alguien: mi artículo breve (en 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.

    
respondido por el Eddy_Em
0

Aquí hay un proyecto de plantilla pequeño pero innovador para el inicio rápido utilizando la placa de descubrimiento STM32F0 en Linux o cualquier otro sistema operativo:

enlace

Tenga en cuenta que el proyecto utiliza ChibiOS, un sistema operativo gratuito y de código abierto en tiempo real, por lo que no es exactamente una implementación desde cero.

    
respondido por el Viacheslav Dobromyslov
0

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 de lejos. Para la depuración utilizo stlink y arm-none-eabi-gdb.

    
respondido por el Martin
0

Considere platformio . Si se siente cómodo con la línea de comandos, encontrará que platformio facilita considerablemente el proceso de desarrollo. pio init puede usarse 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.

    
respondido por el dat

Lea otras preguntas en las etiquetas