Flash nrf52840 con OpenOCD y Black magic probe
Iddar Olivares
Posted on July 15, 2020
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
- nrf52840 dev board (yo usare la Bast Ble)
- Black magic probe (ver mi post anterior)
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 Black magic
GND GND
SWDIO PB14
SWCLK PA5
POWER 3.3V
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
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 elnRF52
Si todo va bien podemos conectarnos al dispositivo con el siguiente comando
# donde '1' corresponde al primer dispositivo de la lista
(gdb) attach 1
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
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
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).
Posted on July 15, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.