Approved Reseller
Approved Reseller
Si alguna vez te ha pasado que tu código no funciona correctamente seguro has ideado alguna forma de colocar indicadores para ver cómo se comporta realmente tu programa. A esto se le llama comúnmente debuggear. Sin embargo, existen herramientas con hardware que te harán la vida más sencilla, o simplemente complementar la forma en que haces pruebas en tu código. En esta entrada queremos desarrollar un poco más estas técnicas y mostrarte cómo puedes hacerlo con una Raspberry Pi Pico
En los inicios de la programación y la computación, el proceso de detectar los fallos en un código era una tarea compleja y tomaba un tiempo resolverla. El término “bug” surge de los primeros fallos en las computadoras, debido a la presencia de insectos en las tarjetas electrónicas. Así, se denomina debuggear o depurar un código al proceso de encontrar fallos en la escritura o en la ejecución de un código.
Un debugger es una herramienta que nos permite analizar la ejecución de un código cuando lo estamos trabajando en una tarjeta de desarrollo. Esta es una de las herramientas más importantes al desarrollar firmware para sistemas embebidos, ya que permite ejecutar de forma pausada nuestro código y observar como se comporta la memoria del programa.
La mayoria de los IDEs avanzados tienen modalidades y herramientas en software para llevar a cabo esta tarea. Tomando como ejemplo a Visual Studio Code, se tiene el modo de Debug o depuración para probar un código. También existen los denominados breakpoints que son puntos en donde le indicamos al compilador en donde detenerse para que analicemos los registros y datos que se mueven en la tarjeta.
Cuando creamos un código para una tarjeta de desarrollo, las sentencias que usamos para programar no son exactamente las que transferimos a nuestro microcontrolador para ser programadas. El IDE usa un compilador que traduce el lenguaje que usamos para programar, por ejemplo C++, y lo convierte en instrucciones que pueda entender el micro, en este caso ensamblador.
A medida que los dispositivos se volvieron más complejos aumentó la dificultad para leer las señales internas de los microcontroladores. En consecuencia se tuvo que estandarizar las señales de prueba y se creó el Joint Tag Action Group (JTAG). Esto permitió establecer estándares de que permitieran detectar errrores con unos cuantos pines. No todos los microcontroladores implementar JTAG; por ejemplo el ATMEGA328p del arduino no lo tiene, pero la Raspberry Pi Pico y el ESP32 sí.
La Raspberry Pi Pico tiene pines dedicados para mandar información serial con el que podremos saber un poco más acerca del contenido de la memoria. Para habilitarlo se requiere cargar un firmware especial llamado picoprobe, con el que podremos cargar otros programas a una Pico externa. Puedes encontrar un tutorial detallado en esta página de Digi-Key, con la que podrás configurar Visual Studio Code con todas los archivos necesarios.
Desde Raspberry Pi Os y una Raspberry Pi también se puede configurar un entorno de programación con el que será más simple echar a andar nuestra herramienta de depuración. Podemos seguir esta guía para configurar el entorno de programación y las librerías faltantes.
Conclusiones:
Hemos revisado cómo se implementan algunas herramientas para encontrar errores en el funcionamiento de nuestro programa. La Raspberry Pi Pico es sólo una de varias que podemos encontrar en el mercado. Lo destacable de usarla es que es una opción poderosa y bastante económica. Te recomendamos que revises las guías para cargar el picoprobe en tu tarjeta y puedas añadir una herramienta de desarrollo de software a tu caja.
Referencias:
Debugging embedded software with Raspberry Pi Pico
Raspberry Pi Pico and RP2040 – C/C++ Part 2: Debugging with VS Code