Table of Contents
BBC micro:bit v1.5
BBC development board containing a NRF51822-QFAA ARM Cortex-M0 processor with 256KB flash and 16KB RAM.
The MCU on this device is now obsolete and so are the `bare metal' development tools.
The most modern platform may be Arduino 1.8.19 which may give an insight as to how to create a modernised SDK.
nRF51 SDK
The nRF51 device and its SDK are now obsolete so hardly viable to develop an application with.
Arduino
Arduino IDE 1.8.19 supports nRF5 micro-controllers and could be a useful tool to develop applications on the micro:bit and it appears to work.
Zadig is required to provide LIBUSB to the IDE. When using J-Link, this is found as “BULK interface (Interface 2)”.
When trying to flash the Softdevice there will be an error about fetching the zip file. To remedy this place the hex file in the Arduino AppData folder.
AppData/Local/Arduino15/packages/sandeepmistry/hardware/nRF5/0.8.0/cores/nRF5/SDK/components/softdevice/s130/hex/s130_nrf51_2.0.1_softdevice.hex
The Softdevice hex file is located in the SDK.
J-Link
SEGGER J-Link on board is available for all flavours of the micro:bit to enable a professional debug interface.
Hold down reset and plug board into PC.
Drag J-Link for BBC micro:bit version 1 to MAINTENANCE directory.
Power cycle board and J-Link will become available.
$ /mnt/c/Program\ Files/SEGGER/JLink/JLink.exe SEGGER J-Link Commander V7.98c (Compiled Aug 7 2024 15:41:14) DLL version V7.98c, compiled Aug 7 2024 15:40:25 Connecting to J-Link via USB...O.K. Firmware: J-Link OB-BBC-microbit compiled Nov 16 2022 11:02:58 Hardware version: V1.00 J-Link uptime (since boot): 0d 00h 00m 00s S/N: 786600064 VTref=3.300V Type "connect" to establish a target connection, '?' for help J-Link>connect Please specify device / core. <Default>: NRF51822_XXAA Type '?' for selection dialog Device>NRF51822_XXAA Please specify target interface: J) JTAG (Default) S) SWD T) cJTAG TIF>s Specify target interface speed [kHz]. <Default>: 4000 kHz Speed> Device "NRF51822_XXAA" selected. Connecting to target via SWD InitTarget() start InitTarget() end - Took 12us Found SW-DP with ID 0x0BB11477 DPIDR: 0x0BB11477 CoreSight SoC-400 or earlier Scanning AP map to find all available APs AP[1]: Stopped AP scan as end of AP map has been reached AP[0]: AHB-AP (IDR: 0x04770021) Iterating through AP map to find AHB-AP to use AP[0]: Core found AP[0]: AHB-AP ROM base: 0xF0000000 CPUID register: 0x410CC200. Implementer code: 0x41 (ARM) Found Cortex-M0 r0p0, Little endian. FPUnit: 4 code (BP) slots and 0 literal slots CoreSight components: ROMTbl[0] @ F0000000 [0][0]: E00FF000 CID B105100D PID 000BB471 ROM Table ROMTbl[1] @ E00FF000 [1][0]: E000E000 CID B105E00D PID 000BB008 SCS [1][1]: E0001000 CID B105E00D PID 000BB00A DWT [1][2]: E0002000 CID B105E00D PID 000BB00B FPB [0][1]: F0002000 CID B105900D PID 000BB9A3 ??? SetupTarget() start SetupTarget() end - Took 746us Memory zones: Zone: "Default" Description: Default access mode Cortex-M0 identified. J-Link>