stm32 programando stm32 o beaglebone

1

Me gustaría programar stm32f4 o posiblemente otros desde el tablero beaglebone (negro).

¿Es posible cargar firmware a través de serie (uart) o de alguna manera al stm32? ¿Es posible usar dos stm32, uno para desarrollo otro para cargar nuevo firmware?

    
pregunta user505160

2 respuestas

3

El ST-Link es básicamente un STM32F103 que se conectará a la PC por un lado y al MCU que se está desarrollando en el otro lado y le descargará un nuevo código.

No he visto un firmware o código fuente disponible para construir tu propio ST-Link, así que supongo que todavía está cerrado. Pero considerando que una placa Nucleo contiene un ST-Link y cuesta solo 10 dólares, tal vez no valga la pena construir uno por su cuenta. Hay algunos intentos de obtener un controlador de Linux para un <-href="https://github.com/texane/stlink"> ST-Link aquí .

El gestor de arranque interno en el STM32F4 es bastante flexible y permite el uso de diferentes interfaces. Hay especificaciones para cada uno de los protocolos disponibles:

Hay diferentes maneras para entrar en el gestor de arranque, dependiendo del chip que uses y otros límites.

Una de las maneras más fáciles de llegar es tirando del pin BOOT0 hacia arriba y reiniciando el dispositivo. Luego se inicia en el gestor de arranque y los protocolos mencionados anteriormente están disponibles.

Para Windows hay una GUI y una herramienta de línea de comando disponibles bajo el nombre STSW-MCU005 demostrador del cargador Flash . Esa cosa viene con el código fuente, así que probablemente puedas portarlo a Linux y ejecutarlo en tu beaglebone. De esa manera, sería posible omitir la comprensión completa de todos los detalles del protocolo (aunque eso nunca duele).

El protocolo JTAG (hasta donde yo sé) no está disponible libremente, por lo que la implementación de su propio intermitente JTAG requerirá que obtenga una copia del IEEE 1149.1 y continúe desde allí. Otra opción es obtener una copia de la arquitectura de la interfaz de depuración ARM Especificación (disponible de forma gratuita al registrarse en ARM). No lo he examinado en detalle, pero parece describir las capacidades de depuración de los núcleos ARM con gran detalle. Así que ese podría ser un mejor punto de partida que el estándar IEEE.

No sé si ST tiene algunas extensiones en el protocolo JTAG / SWD, algunos proveedores hacen esto.

Dicho esto, tu mejor apuesta es probablemente el gestor de arranque interno si deseas obtener resultados más rápido. Siempre y cuando no programes tu controlador de manera tal que ya no sea accesible.

    
respondido por el Arsenal
1

Vale la pena agregar que todos los STM32F0 / 1/2/3/4/7 han incorporado en los cargadores de arranque USART.

Muchos de esos chips tienen la capacidad de cargarse sobre otras interfaces que no sean el USART, sin embargo, el cargador de arranque USART incorporado es común a todos ellos.

ST Micro proporciona un programa para usar esto, pero es solo para Windows. Sin embargo, hay un programa Open Source Python (stm32loader.py) que se ejecuta en la mayoría de las plataformas, que cargará un binario en serie a un STM32. Al parecer, el original tenía un error, sin embargo, Pete Harrison de micromouseonline ha corregido corregido .

AFAICT el BeagleBone Black tiene aproximadamente 5 UARTS, por ejemplo Adafruit tiene una biblioteca de python para usarla.

Por lo tanto, puede establecer una conexión de comunicación entre un BeagleBone (negro) (BBB) y casi cualquier STM32F sobre el USART, y cargar archivos de programa binarios desde el BBB a casi cualquier STM32 utilizando el programa Python de código abierto 'stm32loader.py' .

También hay instrucciones sobre el uso de ese programa, que he usado con éxito con un cable FTDI USB a serie, en LeafLabs "Intermitente nuevo gestor de arranque ". Por lo tanto, también es posible usar ese programa 'stm32loader.py' con un cable USB a UART, con el BeagleBone (negro) como host USB.

Fue relativamente sencillo encontrar información mediante una búsqueda en Internet una vez que la información de micromouseonline , LeafLabs o Adafruit .

Podrías ir por la ruta SWD / JTAG. Por ejemplo, la sonda Black Magic es un dispositivo USB, que no necesita ningún controlador instalado en el host. Implementa directamente los protocolos de GDB, y admite la carga y la depuración completa de gdb de STM32F. Es de código abierto y se ejecuta en un STM32F103. Entonces, en teoría, podrías hacer uno de estos tú mismo.

LeafLabs lanzó un gestor de arranque STM32F103 de código abierto, que permitió al STM32 emular un dispositivo USB DFU (es decir, se parecía al dispositivo de carga de programas binarios de un teléfono móvil). También hubo algunos esfuerzos, informados en Leaflabs Forum en este hilo y otros donde los usuarios han utilizado con éxito el cargador de arranque USB incorporado en el STM32F4, pero no puedo recordar suficientes detalles.

El original LeafLabs STM32F103, el cargador de arranque USB DFU ha sido llevado más lejos por la gente en stm32duino.com , sin embargo, todavía no estoy lo suficientemente familiar como para saber que soporta STM32F4.

    
respondido por el gbulmer

Lea otras preguntas en las etiquetas