Unless you purchased an nRF52840 board from Adafruit, you probably don't have the right bootloader installed. If you have a PCA10056 (Nordic nRF52840 DevKit) it comes blank, for example
However, with a JLink its super easy to install the bootloader. On the PCA10056 the JLink is even built in!
Disable Mass Storage on PCA10056 J-Link
The J-Link firmware on the PCA10056 implement USB Mass Storage, but this causes a known conflict with reliable USB CDC serial port communication. In order to use the serial bootloader, you must disable MSD support on the Segger J-Link!
To disable mass storage support, run the J-Link commander, JLink
or JLinkExe
(or equivalent) command
and send MSDDisable
. (You can re-enable MSD support via MSDEnable
):
$ JLinkExe SEGGER J-Link Commander V6.20f (Compiled Oct 13 2017 17:20:01) DLL version V6.20f, compiled Oct 13 2017 17:19:52 Connecting to J-Link via USB...O.K. Firmware: J-Link OB-SAM3U128-V2-NordicSemi compiled Jul 24 2017 17:30:12 Hardware version: V1.00 S/N: 683947110 VTref = 3.300V Type "connect" to establish a target connection, '?' for help J-Link>MSDDisable Probe configured successfully. J-Link>exit
Then unplug-replug the dev board. The JLINK disk drive will no longer appear. If you ever want, you can re-enable it later.
Before:
After:
Install nrfjprog
You will almost certainly need to run nordic's nrfjprog
tool to burn bootloaders or code
You will first need to install the nrfjprog
tool from Nordic Semiconductors for your operating system. The binary files can be downloaded via the following page: https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF5-Command-Line-Tools
You will then need to add the nrfjprog
folder to your system PATH
variable so that it is available from the command line. The exact process for this is OS specific, but on a POSIX type system like OS X or Linux, you can temporarily add the location to your PATH
environment variables as follows:
$ export PATH=$PATH:YOURPATHHERE/nRF5x-Command-Line-Tools_9_7_2_OSX/nrfjprog/
But it really depends on your shell and OS. Basically just make sure you can run nrfjprog
on the command line. You can test this by running the following command:
$ nrfjprog --version nrfjprog version: 9.7.2 JLinkARM.dll version: 6.20f
You may have slightly different version numbers above
git clone nRF52840 Bootloader
git clone https://github.com/adafruit/Adafruit_nRF52_Bootloader
into a handy directory, then open up a terminal in that location and run
git submodule update --init --recursive
Flash the Bootloader with nrfjprog
This operation only needs to be done once, and only on boards that don't already have the serial bootloader installed.
nrfjprog
is nordic's helper program that will talk to JLink devices - the DK has a JLink built into it. You could also use these commands with a everyday JLink and a custom board with SWD port
Erase chip
Once nrfjprog
is installed and available in PATH
you can test nrfjprog and also erase your chip with:
nrfjprog -f nrf52 --eraseall
If you get an error that there is no debugger connected to the PC, check you're plugged into the right port, and have JLink software/drivers installed
You can then burn the version you see with a line that matches the subdirectory (e.g. pca10056 or feather_nrf52840_express) and then the version number:
make BOARD=pca10056 clean make BOARD=pca10056 sd make BOARD=pca10056 flash
Test!
Plug a USB cable into the nRF52 USB microUSB port (not the JLink port) and you should see a new disk drive appear:
It contains a INFO_UF2.txt for reading the details of the bootloader.
If you can't flash directly from the 'make' command, you can create a bootloader hex file with the 'genhex' flag.
make BOARD=pca10056 genhex
Then you can directly burn the hex file with:
nrfjprog -f nrf52 --program pca10056_bootloader.hex
Page last edited March 08, 2024
Text editor powered by tinymce.