Nivel: Básico
¿Qué tengo que saber para este post?
—————————————
En mi afán de solucionarle la vida a mis estudiantes, y que no necesiten un programador para arrancar con la Blue Pill, me puse en búsqueda de un bootloader que funcionara fácil o naturalmente en PlatformIO al hacer un clic. Obviamente, también debería funcionar con libOpenCM3 que es la herramienta de desarrollo con la que pienso encarar mi curso. Como era natural, probé primero con el STM32duino, pero no me convencía por diversos motivos, y además no podía compatibilizarlo con libOpenCM3 por lo cual terminó de ser descartado.
Por eso decidí utilizar el dapboot, un proyecto al que le mandé una estrella en github hace meses, pero nunca había probado (¿para qué? si tengo un stlink). Y después de muchas horas de buscar, leer y probar, encontré la manera de que todo funcione armoniosamente.
Antes de arrancar hay que tener un método probado y funcionando de grabado para la BluePill, puede ser utilizando un stlink, un USB/TTL Serie o (nunca lo probé, pero calculo que debería funcionar) un Arduino que nos haga de USB/TTL Serie. Para poder grabar el firmware del dapboot. Este bello proyecto tiene los binarios ya compilados en la parte de release de github listos para descargar y quemar. Tiene 2 variantes:
Obviamente, opté por el highboot-v1.11-bluepill-128.bin
(en mi caso es de 128k), porque dudo que mis estudiantes lleguen a ocupar los 64k o 128k con las cosas que les voy a pedir programar y me pareció más práctico. Entonces usé el st-flash
por linea de comandos para grabar el firmware conectando el stlink:
st-flash write highboot-v1.11-bluepill-128.bin 0x08000000
Si no tenés este programa instalado y estás en una distro de Linux derivada de Debian (Ubuntu, Mint etc.), se puede instalar por medio de apt:
sudo apt install stlink-tools stlink-gui
Como observarán existe una interfaz gráfica, que pueden utilizar también para grabar.
Si necesitan grabarlo por puerto serie, porque no tienen el stlink, pero sí un USB/TTL Serie o Arduino, van a necesitar el stm32flash
que también se instala a través de apt.
Si usan windows voy a suponer que saben utilizar los softwares del fabricante para grabar el micro.
Podemos verificar que todo va bien si movemos el BOOT1
y conectando la BluePill al USB y hacemos un lsusb
deberíamos ver lo siguiente:
El siguiente paso es empezar un proyecto en PlatformIO con libOpenCM3 como ya venimos trabajando los que siguen mi blog o canal de YT. Y en el platformio.ini
debemos agregar las dos siguientes variables:
upload_protocol = dfu
upload_command = $PROJECT_PACKAGES_DIR/tool-dfuutil/bin/dfu-util -D $SOURCE
Con esto PlatformIO bajará dfu-util
que es la herramienta que necesitamos y luego está el comando que se ejecutará al clickear upload con lo que hay que grabarle (el firmware.bin
que se genera al compilar).
Ahora lo único que hace falta es mover el jumper BOOT1
de la BluePill y apretar el reset
, esto hace que se active el modo dfu. Ponemos el BOOT1
de nuevo en su posición original para que después de grabarlo no vuelva a entrar en modo dfu. Resta simplemente darle al UPLOAD en PlatformIO para que se grabe y empiece a ejecutar nuestro programa. Es normal que haya un error en la terminal al final de la programación ya que no es un dispositivo reconocido por dfu-util
, pero no es para preocuparse.
Cada vez que queramos actualizar nuestro programa debemos hacer la secuencia de mover el BOOT1
y resetear. Otra opción es escribir en los dos primeros registros del BackUp «BOOT» en ASCII para activar el bootloader por software. Lo bueno es que una vez grabado el USB queda disponible para que lo utilicemos en nuestra aplicación, a diferencia del de Arduino que nos deja un CDC Serie.
Otra gran ventaja es que en windows no se necesita driver, lo cual me preocupaba porque sé que la mayoría (o todos) mis estudiantes son victimas usuarios de ese Sistema Operativo y quería estar seguro de que sea algo fácil de utilizar.
En definitiva estoy muy conforme con que se pueda grabar el STM32 por USB de una manera que me parece tan práctica, y que mis estudiantes que no tengan la facilidad económica puedan prescindir del stlink. Sé que tienen costos muy bajos, pero a veces eso implica menos dinero para comida o viáticos en la vida de mis estudiantes.
¡Hasta la próxima!
Nivel: Básico ¿Qué tengo que saber para este post? Diseño básico de páginas con HTML…
Nivel: Avanzado. La modificación de fuentes ATX para su utilización en laboratorio o comunicaciones es…
El pasado 23 de abril se celebró la 18° edición del FLISoL en la que…
Circuito del regulador, con los elementos de simulación. Típicamente, las motocicletas de baja cilindrada utilizan…
¿Qué puedo decir? Siempre quise tener un analizador lógico, había visto estos pequeños y baratos…
Nivel: Intermedio ¿Qué tengo que saber para este post? Entender el uso de un ADC.Programación…
Esta web usa cookies.
Ver comentarios
Piola.. Gracias por compartir..
¡Gracias por dejar un mensaje! Es alentador y dan ganas de seguir compartiendo :)
Hola, te agradezco mucho esto..