Posiblemente hay muchas formas de programar la pizarra, usando diferentes herramientas. Uno de ellos, que parece bastante fácil, es utilizar el ST-Link V2 (google) y OpenOCD.
-
Deje ambos puentes de arranque en "0". Conecte los pines SWDIO, SWCLK, GND a los pines apropiados del ST Link. Aplique energía a la placa prestando atención a si es 5V o 3.3V. El ST-Link convenientemente tiene una salida de 3.3V que se puede usar. Dado que la placa recibe 5 V del conector USB, no conecte otras clavijas de alimentación al mismo tiempo con el puerto USB. Puede ser útil tener un cable con 4 terminales en el lado de ST-Link y dividir 3 + 1 terminales en el lado de la placa. La placa debe encender un LED y puede comenzar a parpadear con el otro, si está programado.
-
Tener OpenOCD instalado, las versiones más recientes pueden tener menos errores (por ejemplo, al menos 0.9.xo mejor 0.10.x). Las versiones anteriores, como las que se incluyen en las distribuciones de Linux, pueden tener problemas con, por ejemplo, restablece la configuración y requiere que juegues con los archivos de configuración.
-
[opcional] Si ejecuta Linux y no se siente cómodo con ejecutar OpenOCD como root, cree un archivo en /etc/udev/rules.d
con el siguiente contenido:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="0664", GROUP="stlink"
Esto permitirá a los miembros del grupo stlink
acceder al dispositivo ST-Link. Crea este grupo y súmate a él. Puedes usar cualquier grupo que sea conveniente.
-
Suponiendo que un host Linux y la instalación de OpenOCD predeterminada para todo el sistema, compruebe si la conectividad es correcta, la MCU está activa y OpenOCD puede hablar con él:
openocd -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg
Dependiendo de la versión de OpenOCD, lo siguiente también puede funcionar:
openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg
Si las cosas están bien, OpenOCD imprimirá cierta información sobre la MCU (voltaje, número de puntos de interrupción de HW, etc.) y seguirá funcionando.
-
Es posible ejecutar OpenOCD como demonio y usar telnet para usarlo, pero creo que es más conveniente iniciarlo cada vez. Suponiendo que tiene un binario compilado correctamente, digamos, blinky.bin
, puede programarlo en la MCU con el siguiente script:
OPENOCD="openocd -f interface/stlink-v2.cfg -f target/stm32f1x_stlink.cfg"
$OPENOCD -c "init" -c "reset halt" -c "stm32f1x mass_erase 0" -c "flash write_bank 0 blinky.bin 0" -c "reset run" -c "shutdown"
Tenga en cuenta que hay un nombre de archivo dentro de este script que deberá ajustar. Probablemente sea una buena idea comenzar con algo realmente simple.
Lo anterior asume principalmente Linux como host, pero los pasos deberían ser conceptualmente similares en Windows, después de instalar los controladores y realizar ajustes en la forma en que se instalan las cosas, como las rutas, etc.