circuitpython/ports/nrf/boards/feather52840
2018-02-13 11:50:29 +01:00
..
bootloader add 52840 serial bootloader 2018-02-13 13:32:47 +07:00
bluefruit_nrf52840_s140_6.0.0.ld Updated FATFS to 256KB 2018-02-13 11:50:29 +01:00
board.c add feather52840 board 2018-02-13 12:26:34 +07:00
mpconfigboard_s140.mk Updated board detection macro 2018-02-13 08:52:17 +01:00
mpconfigboard.h Update mpconfigboard.h 2018-02-13 08:42:44 +01:00
mpconfigboard.mk Update to S140 2018-02-13 08:44:35 +01:00
nrf52_hal_conf.h add feather52840 board 2018-02-13 12:26:34 +07:00
pins.c add feather52840 board 2018-02-13 12:26:34 +07:00
pins.csv add feather52840 board 2018-02-13 12:26:34 +07:00
pins.h add feather52840 board 2018-02-13 12:26:34 +07:00
README.md Added notes on flashing bootloader 2018-02-13 11:26:10 +01:00

Setup

Installing CircuitPython submodules

Before you can build, you will need to run the following commands once, which will install the submodules that are part of the CircuitPython ecosystem, and build the mpy-cross tool:

$ cd circuitpython
$ git submodule update --init
$ make -C mpy-cross

You then need to download the SD and Nordic SDK files via:

This script relies on wget, which must be available from the command line.

$ cd ports/nrf
$ ./drivers/bluetooth/download_ble_stack.sh

Installing the Serial Bootloader

The Adafruit nRF52840 Feather uses a serial bootloader that allows you to update the core CircuitPython firmware and internal file system contents using only a serial connection.

On empty devices, the serial bootloader will need to be flashed once using a HW debugger such as a Segger J-Link before the serial updater (nrfutil) can be used.

Install nrfjprog

Before you can install the bootloader, 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 links:

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/

You can test this by running the following command:

$ nrfjprog --version
nrfjprog version: 9.7.2
JLinkARM.dll version: 6.20f

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.

Once nrfjprog is installed and available in PATH you can flash your board with the serial bootloader via the following command:

make SD=s140 BOARD=feather52840 boot-flash

This should give you the following (or very similar) output, and you will see a DFU blinky pattern on one of the board LEDs:

$ make SD=s140 BOARD=feather52840 boot-flash
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
nrfjprog --program boards/feather52840/bootloader/feather52840_bootloader_6.0.0_s140_single.hex -f nrf52 --chiperase --reset
Parsing hex file.
Erasing user available code and UICR flash areas.
Applying system reset.
Checking that the area to write is not protected.
Programing device.
Applying system reset.
Run.

From this point onward, you can now use a simple serial port for firmware updates.

Building and Flashing CircuitPython

With the serial bootloader present on your board, you can build and flash a CircuitPython binary via the following command:

make SD=s140 SERIAL=/dev/ttyACM0 BOARD=feather52840 dfu-gen dfu-flash