Flash nrf52840 con OpenOCD y Black magic probe

iddar

Iddar Olivares

Posted on July 15, 2020

Flash nrf52840 con OpenOCD y Black magic probe

Hace unos días recibí una gran sorpresa por correo, la nueva placa de Electronic Cats que están por lanzar en un par de semanas, la Bast BLE la cual incluye con un chip nrf52840 de Nordic el cual es una verdadera bestia.

El nrf52840 esta basado en un ARM Cortex-M4 con FPU corre a un máximo de 64MHz, cuanta con un Radio de 2.4Ghz compatible con Bluetooth 5 y una larga muy larga lista de características te recomiendo darte una vuelta por el sitio oficial.

La placa que me enviaron aun esta en proceso de desarrollo por lo que es necesario actualizar y probar nuevas versiones del firmware.

Material

Wiring

Dependiendo de tu debbuger el pinout puede cambiar en mi caso usare el Black magic basado en ST de mi post pasado y la Bast Ble de la cual encontaras los pines SWD debajo de placa.

Bast Ble de Electronic cats

Bast Ble       Black magic
GND             GND
SWDIO           PB14
SWCLK           PA5
POWER           3.3V
Enter fullscreen mode Exit fullscreen mode

Flash

Una vez que tenemos conectado todo podemos ir a la accion para esto es importante tener instalado y en PATH el toolchain de ARM en especial arm-none-eabi-gdb.

Identifica el puerto de tu debugger en mi caso ttyACM0.

$ arm-none-eabi-gdb
# Con esto entramos a la consola para debug
GNU gdb (GNU Arm Embedded Toolchain)
For help, type "help".
(gdb)
(gdb) target extended-remote /dev/ttyACM0
(gdb) monitor swdp_scan
> Target voltage: 2.9V
> Available Targets:
> No. Att Driver
>   1      Nordic nRF52 M4
>   2      Nordic nRF52 Access Port 
# ctrl + d para salir
Enter fullscreen mode Exit fullscreen mode

Con esto verificamos que estemos conectados correctamente, explico un poco los comando de arriba

  • target extended-remote /my-current-port: con este commando nos conectamos al servidor para debug.
  • monitor swdp_scan: Con este listamos los dispositivos conectados por SWD, en este caso vemos el nRF52

Si todo va bien podemos conectarnos al dispositivo con el siguiente comando

# donde '1' corresponde al primer dispositivo de la lista
(gdb) attach 1
Enter fullscreen mode Exit fullscreen mode

Podemos encontrar la ultima versión del firmwarwe para Bast Ble en el repositorio oficial de Electronic Cats, descarga el archivo HEX en tu directorio de trabajo.

wget https://raw.githubusercontent.com/ElectronicCats/ArduinoCore-nRF528x-mbedos/bast_ble/bootloaders/bastble/bast_ble_bootloader-0.3.2.hex
Enter fullscreen mode Exit fullscreen mode

grabar el nuevo firmware usaremos la siguiente secuencia de comandos, ejecutando arm-none-eabi-gdb desde tu directorio de trabajo.

(gdb) target extended-remote /dev/debug-port
(gdb) monitor swdp_scan
(gdb) attach 1
(gdb) load bast_ble_bootloader-0.3.2.hex
(gdb) compare-sections
(gdb) mon hard_srst
(gdb) detach
(gdb) kill
Enter fullscreen mode Exit fullscreen mode

Listo si todo salio bien solo resta desconectar el cableado y conectar tu Bast Ble por su puerto USB, al arrancar veras que se monta un dispositivo de almacenamiento y se lista un nuevo puerto serial, esto nos indica que todo salio bien ahora.

Ahora puedes usar adafruit-nrfutil o configurar tu arduino IDE siguiendo los pasos mostrados en la documentación de Electronic Cats

NOTA: Para programar tu Bast Ble debes presionar dos veces reset para entrar al modo boot.

Disclaimer: Todas los pruebas mostradas en este articulo fueron realizadas sobre la distribución Ubuntu (GNU/Linux).

💖 💪 🙅 🚩
iddar
Iddar Olivares

Posted on July 15, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related