|
|
|
|
@@ -41,7 +41,7 @@ This is a port of MicroPython to the Nordic Semiconductor nRF series of chips.
|
|
|
|
|
* [PCA10056](http://www.nordicsemi.com/eng/Products/nRF52840-Preview-DK)
|
|
|
|
|
* [PCA10059](https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52840-Dongle)
|
|
|
|
|
* [Particle Xenon](https://docs.particle.io/xenon/)
|
|
|
|
|
* [nRF52840 MDK USB Dongle](boards/nrf52840-mdk-usb-dongle/README.md)
|
|
|
|
|
* [nRF52840 MDK USB Dongle](boards/NRF52840_MDK_USB_DONGLE/README.md)
|
|
|
|
|
* nRF9160
|
|
|
|
|
* [PCA10090](https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF9160-DK)
|
|
|
|
|
* [Actinius Icarus](https://www.actinius.com/icarus)
|
|
|
|
|
@@ -63,8 +63,8 @@ By default, the PCA10040 (nrf52832) is used as compile target. To build and flas
|
|
|
|
|
Alternatively the target board could be defined:
|
|
|
|
|
|
|
|
|
|
make submodules
|
|
|
|
|
make BOARD=pca10040
|
|
|
|
|
make BOARD=pca10040 deploy
|
|
|
|
|
make BOARD=PCA10040
|
|
|
|
|
make BOARD=PCA10040 deploy
|
|
|
|
|
|
|
|
|
|
## Compile without LTO enabled
|
|
|
|
|
|
|
|
|
|
@@ -73,7 +73,7 @@ targets in the nrf-port. The `-flto` linker flag can be toggled easily by using
|
|
|
|
|
the argument LTO when building. The example below shows how to disable LTO for
|
|
|
|
|
the compilation:
|
|
|
|
|
|
|
|
|
|
make BOARD=pca10040 LTO=0
|
|
|
|
|
make BOARD=PCA10040 LTO=0
|
|
|
|
|
|
|
|
|
|
**Note**: There have been several issues with use of LTO in conjunction with
|
|
|
|
|
GNU ARM Embedded Toolchain 7.2.1/4Q17. It's recommended to use a toolchain after
|
|
|
|
|
@@ -88,11 +88,11 @@ First prepare the bluetooth folder by downloading Bluetooth LE stacks and header
|
|
|
|
|
|
|
|
|
|
If the Bluetooth stacks has been downloaded, compile the target with the following command:
|
|
|
|
|
|
|
|
|
|
make BOARD=pca10040 SD=s132
|
|
|
|
|
make BOARD=PCA10040 SD=s132
|
|
|
|
|
|
|
|
|
|
The **make sd** will trigger a flash of the bluetooth stack before that application is flashed. Note that **make sd** will perform a full erase of the chip, which could cause 3rd party bootloaders to also be wiped.
|
|
|
|
|
|
|
|
|
|
make BOARD=pca10040 SD=s132 sd
|
|
|
|
|
make BOARD=PCA10040 SD=s132 sd
|
|
|
|
|
|
|
|
|
|
Note: further tuning of features to include in bluetooth or even setting up the device to use REPL over Bluetooth can be configured in the `bluetooth_conf.h`.
|
|
|
|
|
|
|
|
|
|
@@ -104,7 +104,7 @@ it in the specific target board's `mpconfigboard.mk`.
|
|
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
|
|
|
|
make BOARD=pca10040 FROZEN_MANIFEST=path/to/manifest.py
|
|
|
|
|
make BOARD=PCA10040 FROZEN_MANIFEST=path/to/manifest.py
|
|
|
|
|
|
|
|
|
|
In case of using the target board's makefile, add a line similar to this:
|
|
|
|
|
|
|
|
|
|
@@ -117,7 +117,7 @@ As the `oofatfs` module is not having header guards that can exclude the impleme
|
|
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
|
|
|
|
make BOARD=pca10040 MICROPY_VFS_FAT=1
|
|
|
|
|
make BOARD=PCA10040 MICROPY_VFS_FAT=1
|
|
|
|
|
|
|
|
|
|
## Enable MICROPY_VFS_LFS1 or MICROPY_VFS_LFS2
|
|
|
|
|
|
|
|
|
|
@@ -127,7 +127,7 @@ or `MICROPY_VFS_LFS2` can be set. This will be in addition of setting
|
|
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
|
|
|
|
make BOARD=pca10056 MICROPY_VFS_LFS2=1
|
|
|
|
|
make BOARD=PCA10056 MICROPY_VFS_LFS2=1
|
|
|
|
|
|
|
|
|
|
## Set file system size
|
|
|
|
|
|
|
|
|
|
@@ -141,7 +141,7 @@ linker script syntax as it is passed directly.
|
|
|
|
|
For example, if we want to override the default file system size set by the
|
|
|
|
|
linker scripts to use 256K:
|
|
|
|
|
|
|
|
|
|
make BOARD=pca10056 MICROPY_VFS_LFS2=1 FS_SIZE=256K
|
|
|
|
|
make BOARD=PCA10056 MICROPY_VFS_LFS2=1 FS_SIZE=256K
|
|
|
|
|
|
|
|
|
|
Also note that changing this size between builds might cause loss of files
|
|
|
|
|
present from a previous firmware as it will format the file system due to a new
|
|
|
|
|
@@ -151,25 +151,25 @@ location.
|
|
|
|
|
|
|
|
|
|
Target Board (BOARD) | Bluetooth Stack (SD) | Bluetooth Support | Bootloader | Default Flash Util
|
|
|
|
|
---------------------|-------------------------|------------------------|----------------|-------------------
|
|
|
|
|
microbit | s110 | Peripheral | | [PyOCD](#pyocdopenocd-targets)
|
|
|
|
|
pca10000 | s110 | Peripheral | | [Segger](#segger-targets)
|
|
|
|
|
pca10001 | s110 | Peripheral | | [Segger](#segger-targets)
|
|
|
|
|
pca10028 | s110 | Peripheral | | [Segger](#segger-targets)
|
|
|
|
|
pca10031 | s110 | Peripheral | | [Segger](#segger-targets)
|
|
|
|
|
wt51822_s4at | s110 | Peripheral | | Manual, see [datasheet](https://4tronix.co.uk/picobot2/WT51822-S4AT.pdf) for pinout
|
|
|
|
|
pca10040 | s132 | Peripheral and Central | | [Segger](#segger-targets)
|
|
|
|
|
feather52 | s132 | Peripheral and Central | | Manual, SWDIO and SWCLK solder points on the bottom side of the board
|
|
|
|
|
arduino_primo | s132 | Peripheral and Central | | [PyOCD](#pyocdopenocd-targets)
|
|
|
|
|
ibk_blyst_nano | s132 | Peripheral and Central | | [IDAP](#idap-midap-link-targets)
|
|
|
|
|
idk_blyst_nano | s132 | Peripheral and Central | | [IDAP](#idap-midap-link-targets)
|
|
|
|
|
blueio_tag_evim | s132 | Peripheral and Central | | [IDAP](#idap-midap-link-targets)
|
|
|
|
|
evk_nina_b1 | s132 | Peripheral and Central | | [Segger](#segger-targets)
|
|
|
|
|
pca10056 | s140 | Peripheral and Central | | [Segger](#segger-targets)
|
|
|
|
|
pca10059 | s140 | Peripheral and Central | OpenBootloader | [nrfutil](#nrfutil-targets)
|
|
|
|
|
particle_xenon | s140 | Peripheral and Central | | [Black Magic Probe](#black-magic-probe-targets)
|
|
|
|
|
nrf52840-mdk-usb-dongle | s140 | Peripheral and Central | OpenBootloader | [nrfutil](#nrfutil-targets)
|
|
|
|
|
pca10090 | None (bsdlib.a) | None (LTE/GNSS) | | [Segger](#segger-targets)
|
|
|
|
|
actinius_icarus | None (bsdlib.a) | None (LTE/GNSS) | | [Segger](#segger-targets)
|
|
|
|
|
MICROBIT | s110 | Peripheral | | [PyOCD](#pyocdopenocd-targets)
|
|
|
|
|
PCA10000 | s110 | Peripheral | | [Segger](#segger-targets)
|
|
|
|
|
PCA10001 | s110 | Peripheral | | [Segger](#segger-targets)
|
|
|
|
|
PCA10028 | s110 | Peripheral | | [Segger](#segger-targets)
|
|
|
|
|
PCA10031 | s110 | Peripheral | | [Segger](#segger-targets)
|
|
|
|
|
WT51822_S4AT | s110 | Peripheral | | Manual, see [datasheet](https://4tronix.co.uk/picobot2/WT51822-S4AT.pdf) for pinout
|
|
|
|
|
PCA10040 | s132 | Peripheral and Central | | [Segger](#segger-targets)
|
|
|
|
|
FEATHER52 | s132 | Peripheral and Central | | Manual, SWDIO and SWCLK solder points on the bottom side of the board
|
|
|
|
|
ARDUINO_PRIMO | s132 | Peripheral and Central | | [PyOCD](#pyocdopenocd-targets)
|
|
|
|
|
IBK_BLYST_NANO | s132 | Peripheral and Central | | [IDAP](#idap-midap-link-targets)
|
|
|
|
|
IDK_BLYST_NANO | s132 | Peripheral and Central | | [IDAP](#idap-midap-link-targets)
|
|
|
|
|
BLUEIO_TAG_EVIM | s132 | Peripheral and Central | | [IDAP](#idap-midap-link-targets)
|
|
|
|
|
EVK_NINA_B1 | s132 | Peripheral and Central | | [Segger](#segger-targets)
|
|
|
|
|
PCA10056 | s140 | Peripheral and Central | | [Segger](#segger-targets)
|
|
|
|
|
PCA10059 | s140 | Peripheral and Central | OpenBootloader | [nrfutil](#nrfutil-targets)
|
|
|
|
|
PARTICLE_XENON | s140 | Peripheral and Central | | [Black Magic Probe](#black-magic-probe-targets)
|
|
|
|
|
NRF52840_MDK_USB_DONGLE | s140 | Peripheral and Central | OpenBootloader | [nrfutil](#nrfutil-targets)
|
|
|
|
|
PCA10090 | None (bsdlib.a) | None (LTE/GNSS) | | [Segger](#segger-targets)
|
|
|
|
|
ACTINIUS_ICARUS | None (bsdlib.a) | None (LTE/GNSS) | | [Segger](#segger-targets)
|
|
|
|
|
|
|
|
|
|
## IDAP-M/IDAP-Link Targets
|
|
|
|
|
|
|
|
|
|
@@ -218,7 +218,7 @@ to trim of the MBR in case SoftDevice flashing is requested.
|
|
|
|
|
`nrfutil` as flashing backend also requires a serial port parameter to be defined
|
|
|
|
|
in addition to the `deploy` target of make. For example:
|
|
|
|
|
|
|
|
|
|
make BOARD=nrf52840-mdk-usb-dongle NRFUTIL_PORT=/dev/ttyACM0 deploy
|
|
|
|
|
make BOARD=NRF52840_MDK_USB_DONGLE NRFUTIL_PORT=/dev/ttyACM0 deploy
|
|
|
|
|
|
|
|
|
|
If the target device is connected to `/dev/ttyACM0` serial port, the
|
|
|
|
|
`NRFUTIL_PORT` parameter to make can be elided as it is the default serial
|
|
|
|
|
@@ -228,7 +228,7 @@ When enabling Bluetooth LE, as with the other flash utils, the SoftDevice
|
|
|
|
|
needs to be flashed in the first firmware update. This can be done by issuing
|
|
|
|
|
the `sd` target instead of `deploy`. For example:
|
|
|
|
|
|
|
|
|
|
make BOARD=nrf52840-mdk-usb-dongle SD=s140 NRFUTIL_PORT=/dev/ttyACM0 sd
|
|
|
|
|
make BOARD=NRF52840_MDK_USB_DONGLE SD=s140 NRFUTIL_PORT=/dev/ttyACM0 sd
|
|
|
|
|
|
|
|
|
|
## Bluetooth LE REPL
|
|
|
|
|
|
|
|
|
|
|