From fc955b1591798ec3a6b1cb3b5d28290e478a19b1 Mon Sep 17 00:00:00 2001 From: hathach Date: Wed, 22 Aug 2018 15:22:17 +0700 Subject: [PATCH] remove bootloader binaries, update readme for using adafruit-nrufitl and flashing bootloader --- ports/nrf/README.md | 12 +- ports/nrf/boards/feather52832/README.md | 30 +- .../feather52832/bootloader/.gitattributes | 2 - .../boards/feather52832/bootloader/README.md | 9 - ...feather52_bootloader_2.0.1_s132_single.zip | Bin 131786 -> 0 bytes ...feather52_bootloader_5.0.0_s132_single.zip | Bin 159962 -> 0 bytes ports/nrf/boards/feather52840/README.md | 53 +- .../feather52840_bootloader_6.0.0_s140.hex | 11027 ---------------- .../feather52840_bootloader_6.0.0_s140.zip | Bin 174566 -> 0 bytes .../6.0.0/pca10056_bootloader_6.0.0_s140.hex | 11026 --------------- .../6.0.0/pca10056_bootloader_6.0.0_s140.zip | Bin 174550 -> 0 bytes 11 files changed, 40 insertions(+), 22119 deletions(-) delete mode 100644 ports/nrf/boards/feather52832/bootloader/.gitattributes delete mode 100644 ports/nrf/boards/feather52832/bootloader/README.md delete mode 100644 ports/nrf/boards/feather52832/bootloader/feather52_bootloader_2.0.1_s132_single.zip delete mode 100644 ports/nrf/boards/feather52832/bootloader/feather52_bootloader_5.0.0_s132_single.zip delete mode 100644 ports/nrf/boards/feather52840/bootloader/6.0.0/feather52840_bootloader_6.0.0_s140.hex delete mode 100644 ports/nrf/boards/feather52840/bootloader/6.0.0/feather52840_bootloader_6.0.0_s140.zip delete mode 100644 ports/nrf/boards/pca10056/bootloader/6.0.0/pca10056_bootloader_6.0.0_s140.hex delete mode 100644 ports/nrf/boards/pca10056/bootloader/6.0.0/pca10056_bootloader_6.0.0_s140.zip diff --git a/ports/nrf/README.md b/ports/nrf/README.md index be799a6a27..df1cd19496 100644 --- a/ports/nrf/README.md +++ b/ports/nrf/README.md @@ -79,6 +79,7 @@ Target Board (BOARD) | Bluetooth Stack (SD) | Bluetooth Support | Flash pca10040 | s132 | Peripheral and Scanner | [Segger](#segger-targets) feather52832 | s132 | Peripheral and Scanner | [UART DFU](#dfu-targets) pca10056 | s140 | Peripheral and Scanner | [Segger](#segger-targets) +feather52840 | s140 | Peripheral and Scanner | [UART DFU](#dfu-targets) ## Segger Targets @@ -98,11 +99,9 @@ note: On Linux it might be required to link SEGGER's `libjlinkarm.so` inside nrf ## DFU Targets - sudo apt-get install build-essential libffi-dev pkg-config gcc-arm-none-eabi git python python-pip - git clone https://github.com/adafruit/Adafruit_nRF52_Arduino.git - cd Adafruit_nRF52_Arduino/tools/nrfutil-0.5.2/ - sudo pip install -r requirements.txt - sudo python setup.py install +run follow command to install [adafruit-nrfutil](https://github.com/adafruit/Adafruit_nRF52_nrfutil) from PyPi + + $ pip3 install adafruit-nrfutil --user **make flash** and **make sd** will not work with DFU targets. Hence, **dfu-gen** and **dfu-flash** must be used instead. * dfu-gen: Generates a Firmware zip to be used by the DFU flash application. @@ -111,8 +110,7 @@ note: On Linux it might be required to link SEGGER's `libjlinkarm.so` inside nrf Example on how to generate and flash feather52832 target: make BOARD=feather52832 SD=s132 - make BOARD=feather52832 SD=s132 dfu-gen - make BOARD=feather52832 SD=s132 dfu-flash + make BOARD=feather52832 SD=s132 dfu-gen dfu-flash ## Bluetooth LE REPL diff --git a/ports/nrf/boards/feather52832/README.md b/ports/nrf/boards/feather52832/README.md index cdd542068c..77b1507ddf 100644 --- a/ports/nrf/boards/feather52832/README.md +++ b/ports/nrf/boards/feather52832/README.md @@ -21,24 +21,15 @@ $ cd ports/nrf $ ./drivers/bluetooth/download_ble_stack.sh ``` -## Installing `nrfutil` +## Installing `adafruit-nrfutil` The Adafruit Bluefruit nRF52 Feather ships with a serial and OTA BLE bootloader that can be used to flash firmware images over a simple serial connection, using the on-board USB serial converter. -If you haven't installed this command-line tool yet, go to the `/libs/nrfutil` -folder (where nrfutil 0.5.2 is installed as a sub-module) and run the following -commands: +run follow command to install [adafruit-nrfutil](https://github.com/adafruit/Adafruit_nRF52_nrfutil) from PyPi -> If you get a 'sudo: pip: command not found' error running 'sudo pip install', -you can install pip via 'sudo easy_install pip' - -``` -$ cd ../../lib/nrfutil -$ sudo pip install -r requirements.txt -$ sudo python setup.py install -``` + $ pip3 install adafruit-nrfutil --user # Building and flashing firmware images @@ -75,7 +66,7 @@ You can then connect over BLE UART using an application like Bluefruit LE Connect, available for Android, iOS and OS X, or any other application that supports the NUS service and allows you to send the corrent EOL sequence. -## Flashing binaries with `nrfutil` +## Flashing binaries with `adafruit-nrfutil` ### 1. **Update bootloader** to single-bank version @@ -90,20 +81,25 @@ Due to the size of CircuitPython, we must migrate this bootloader to a bootloader from the dual-bank version that ships on Arduino-based Adafruit Feather52 boards to a single-bank CircuitPython compatible version: +Firstly clone the [Adafruit_nRF52_Bootloader](https://github.com/adafruit/Adafruit_nRF52_Bootloader.git) and enter its directory + + $ git clone https://github.com/adafruit/Adafruit_nRF52_Bootloader.git + $ cd Adafruit_nRF52_Bootloader + #### S132 v2.0.1 single-bank (recommended): -By default s132 v2.0.1 is used when no `SOFTDEV_VERSION` field is passed in: +To flash bootloader with s132 v2.0.1 ``` -$ make BOARD=feather52832 SERIAL=/dev/tty.SLAB_USBtoUART boot-flash +$ make BOARD=feather_nrf52832 VERSION=2.0.1 SERIAL=/dev/tty.SLAB_USBtoUART dfu-flash ``` #### S132 v5.0.0 (BLE5, experimental): -To enable BLE5 support and the latest S132 release, flash the v5.0.0 bootloader via: +To flash bootloader with s132 v5.0.0 ``` -$ make BOARD=feather52832 SERIAL=/dev/tty.SLAB_USBtoUART SOFTDEV_VERSION=5.0.0 boot-flash +$ make BOARD=feather52832 VERSION=5.0.0 SERIAL=/dev/tty.SLAB_USBtoUART dfu-flash ``` ### 2. Generate and flash a CircuitPython DFU .zip package over serial diff --git a/ports/nrf/boards/feather52832/bootloader/.gitattributes b/ports/nrf/boards/feather52832/bootloader/.gitattributes deleted file mode 100644 index 608f8c345c..0000000000 --- a/ports/nrf/boards/feather52832/bootloader/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Inform git that .zip files should be treated as binary -*.zip binary diff --git a/ports/nrf/boards/feather52832/bootloader/README.md b/ports/nrf/boards/feather52832/bootloader/README.md deleted file mode 100644 index 4348590859..0000000000 --- a/ports/nrf/boards/feather52832/bootloader/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Adafruit nRF52 Feather Single-Bank Bootloader - -These files contain an implementation of a single-bank bootloader, -which doubles the amount of flash memory available to applications -at the expense of safe over the air updates. - -Two versions are present, based on release **2.0.1** and **5.0.0** -of the Nordic S132 SoftDevice. The SoftDevice is included as poart -of the bootloader binary. diff --git a/ports/nrf/boards/feather52832/bootloader/feather52_bootloader_2.0.1_s132_single.zip b/ports/nrf/boards/feather52832/bootloader/feather52_bootloader_2.0.1_s132_single.zip deleted file mode 100644 index 42a83bb9076380ea8dfa15683c40562367ddae9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131786 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