This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
s340_softdevice_adafruit_nrf52840_feather_express [2020/02/07 23:14] orrmany [A. Warm-up: Rebuild the Adafruit bootloader] |
s340_softdevice_adafruit_nrf52840_feather_express [2020/03/04 12:12] orrmany [C. Modify the Adafruit bootloader] |
||
---|---|---|---|
Line 22: | Line 22: | ||
**BEWARE**: trying to install the CircuitPython UF2 package to a S340-adapted Feather will brick your Feather and you will need to use a SWD programmer device to make your Feather usable again! | **BEWARE**: trying to install the CircuitPython UF2 package to a S340-adapted Feather will brick your Feather and you will need to use a SWD programmer device to make your Feather usable again! | ||
==== Credits ==== | ==== Credits ==== | ||
- | A number of internet resources helped me. The biggest help came as form of a personal mail from "Ryan", whom I got acquainted with by [[https://www.arduinolibraries.info/authors/cujomalainey|Curtis Malainey]]. It was "Ryan", who first managed the S340 SoftDevice to work with his Feather and he kindly shared his steps with me. This guide is based primarily on his work. | + | A number of internet resources helped me. The biggest help came as form of a personal mail from [[https://github.com/rtgree01|rtgree01]], whom I got acquainted with by [[https://www.arduinolibraries.info/authors/cujomalainey|Curtis Malainey]]. It was him, who first managed the S340 SoftDevice to work with his Feather and he kindly shared his steps with me. This guide is based primarily on his work. |
* [[https://github.com/charlesportwoodii/Adafruit_nRF52_Bootloader]] -- some interesting learnings about the bootloader | * [[https://github.com/charlesportwoodii/Adafruit_nRF52_Bootloader]] -- some interesting learnings about the bootloader | ||
* [[https://learn.sparkfun.com/tutorials/nrf52840-advanced-development-with-the-nrf5-sdk]] -- I learnt a lot about using the nRF5 SDK and the ARM-GCC workflow | * [[https://learn.sparkfun.com/tutorials/nrf52840-advanced-development-with-the-nrf5-sdk]] -- I learnt a lot about using the nRF5 SDK and the ARM-GCC workflow | ||
- | * [[https://learn.sparkfun.com/tutorials/nrf52840-development-with-arduino-and-circuitpython]] tons of info about what does it take to add a new board-type to the Arduino IDE. This also helped a lot in understanding Ryan's comments about his PlatformIO adaptation. | + | * [[https://learn.sparkfun.com/tutorials/nrf52840-development-with-arduino-and-circuitpython]] tons of info about what does it take to add a new board-type to the Arduino IDE. This also helped a lot in understanding rtgree01's comments about his PlatformIO adaptation. |
* The Adafruit nrf52 bootloader: [[https://github.com/adafruit/Adafruit_nRF52_Bootloader]] | * The Adafruit nrf52 bootloader: [[https://github.com/adafruit/Adafruit_nRF52_Bootloader]] | ||
* A blog entry of a similar bootloader hack success. but with the SparkFun PRo Mini board: . https://judepereira.com/blog/nrf52840-flash-s340/ | * A blog entry of a similar bootloader hack success. but with the SparkFun PRo Mini board: . https://judepereira.com/blog/nrf52840-flash-s340/ | ||
- | ===== Prequisites ===== | + | ===== Prerequisites ===== |
==== Must to have ==== | ==== Must to have ==== | ||
* You will need, obviously, an [[https://www.adafruit.com/product/4062|Adafruit Feather nRF52840 Express]] | * You will need, obviously, an [[https://www.adafruit.com/product/4062|Adafruit Feather nRF52840 Express]] | ||
Line 68: | Line 68: | ||
</code> | </code> | ||
- | If you run into any trouble, then **DO NOT PROCEED further down within this lazy-guide until you can successfully rebuild the original bootloader and flash it into your device!!** (If you can't build and flash the original version, then it makes no sense to try to hack it. | + | If you run into any trouble, then **DO NOT PROCEED further down within this lazy-guide until you can successfully rebuild the original bootloader and flash it into your device!!** (If you can't build and flash the original version, then it makes no sense to try to hack it.) |
==== B. Get the ANT SoftDevice ==== | ==== B. Get the ANT SoftDevice ==== | ||
Download [[https://www.thisisant.com/developer/components/nrf52832#tab_protocol_stacks_tab|S340 SoftDevice]] from thisisant.com. | Download [[https://www.thisisant.com/developer/components/nrf52832#tab_protocol_stacks_tab|S340 SoftDevice]] from thisisant.com. | ||
- | Unpack | + | Unpack it somewhere. You will need to rename and copy it later. |
==== C. Modify the Adafruit bootloader ==== | ==== C. Modify the Adafruit bootloader ==== | ||
Line 138: | Line 138: | ||
* Go to ... /src/boards/. | * Go to ... /src/boards/. | ||
* Copy the 'feather_nrf52840_express' dir to 'feather_nrf52840_express_s340' | * Copy the 'feather_nrf52840_express' dir to 'feather_nrf52840_express_s340' | ||
- | * Go into the 'feather_nrf52840_express_s340' subdir, which was just freshly created by copying'feather_nrf52840_express_s340' | + | * Go into the 'feather_nrf52840_express_s340' subdir, which was just freshly created by copying 'feather_nrf52840_express' over. |
== Modify src/boards/feather_nrf52840_express_s340/board.h == | == Modify src/boards/feather_nrf52840_express_s340/board.h == | ||
* Change the #include guards from "_FEATHER_NRF52840_H" to something else, say _FEATHER_NRF52840_S340_H | * Change the #include guards from "_FEATHER_NRF52840_H" to something else, say _FEATHER_NRF52840_S340_H | ||
Line 160: | Line 160: | ||
#ifdef S340 | #ifdef S340 | ||
#define USER_FLASH_START 0x31000 | #define USER_FLASH_START 0x31000 | ||
- | #elif // #ifdef S340 | + | #else // #ifdef S340 |
#define USER_FLASH_START 0x26000 | #define USER_FLASH_START 0x26000 | ||
#endif // #ifdef S340 | #endif // #ifdef S340 | ||
Line 186: | Line 186: | ||
{{ ::mainc-diff.png?direct |}} | {{ ::mainc-diff.png?direct |}} | ||
==== D. Build and flash the modified Adafruit bootloader ==== | ==== D. Build and flash the modified Adafruit bootloader ==== | ||
- | Go to the root of the bootloader directory tree. Build and flash as follows. **NOTE**: adapt the GNU_INSTALL_ROOT and SERIAL definitions according to your local setup! | + | Go to the root of the bootloader directory tree. Build and flash as follows. |
+ | |||
+ | **NOTE**: adapt the GNU_INSTALL_ROOT and SERIAL definitions according to your local setup! | ||
<code bash> | <code bash> | ||
make GNU_INSTALL_ROOT="C:/Program Files (x86)/GNU Tools Arm Embedded/9 2019-q4-major/bin/" BOARD=feather_nrf52840_express_s340 all combinehex | make GNU_INSTALL_ROOT="C:/Program Files (x86)/GNU Tools Arm Embedded/9 2019-q4-major/bin/" BOARD=feather_nrf52840_express_s340 all combinehex |