User Tools

Site Tools


s340:platformio_ide_integration_for_the_nrf52840_feather_express_with_s340

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
s340:platformio_ide_integration_for_the_nrf52840_feather_express_with_s340 [2020/03/26 15:40]
orrmany created
s340:platformio_ide_integration_for_the_nrf52840_feather_express_with_s340 [2020/03/29 22:26]
orrmany
Line 1: Line 1:
 ====== PlatformIO IDE integration for the nRF52840 Feather Express with S340 ====== ====== PlatformIO IDE integration for the nRF52840 Feather Express with S340 ======
  
 +**Note**. this page is building on the assumption that the reader has read content in the pages
 +  * [[arduino:​s340_softdevice_adafruit_nrf52840_feather_express|S340 SoftDevice & Adafruit nRF52840 Express Feather]]...
 +  * ...and [[s340:​arduino_ide_integration_for_the_nrf52840_feather_express_with_s340|Arduino IDE integration for the nRF52840 Feather Express with S340]]
 +
 +===== Introduction =====
 +[[https://​platformio.org|Platform IO]] is a "new generation toolset for embedded C/C++ development"​ built on  [[https://​marketplace.visualstudio.com/​items?​itemName=platformio.platformio-ide|Microsoft'​s Visual Studio Code]]. It can be used as an alternative IDE for "​Arduino related work"​. ​
 +
 +It has a limited support for .ino files, as those have to be [[https://​docs.platformio.org/​en/​latest/​faq.html#​convert-arduino-file-to-c-manually|manually converted to normal C++ source files]] for full support. ​
 +
 +This document is about enabling embedded C/C++ development for ANT+ protocols within PlatformIO. It describes how to add S340 SD support within Platform Io to the Adafruit nRF52 Core for the Arduino nRF52840 Express Feather.
 +===== Credits ​ =====
 +
 +This work is based on [[https://​github.com/​rtgree01|rtgree01]]'​s PlatformIO adaptation. See also the [[http://​orrmany.hu/​wiki/​doku.php?​id=arduino:​s340_softdevice_adafruit_nrf52840_feather_express#​credits|Credits]] section with the page [[arduino:​s340_softdevice_adafruit_nrf52840_feather_express|S340 SoftDevice & Adafruit nRF52840 Express Feather]]
 +
 +
 +===== Prerequisites =====
 +  - Compile and build the modified bootloader as per [[arduino:​s340_softdevice_adafruit_nrf52840_feather_express|S340 SoftDevice & Adafruit nRF52840 Express Feather]]
 +  - Please read and understand [[s340:​arduino_ide_integration_for_the_nrf52840_feather_express_with_s340|Arduino IDE integration for the nRF52840 Feather Express with S340]] first. ​
 +
 +
 +===== Adding S340 support to Plaform IO =====
 +  - Download and install Platform IO IDE for VSCode as [[https://​platformio.org/​install/​ide?​install=vscode|per the instructions]]. ​
 +    - Ensure that you can program your Feather with Platform IO by, say, compiling and loading the classic Blinky example into the Feather. {{ :​s340:​annotation_2020-03-29_201803.png?​direct&​300 |}}See https://​docs.platformio.org/​en/​latest/​boards/​nordicnrf52/​adafruit_feather_nrf52840.html for further details
 +  - After the first succesful compilation and upload, all the necessary packages has got installed. Go to the location of the "​framework package"​ (this corresponds to the concept of "​Core"​ in the Arduino IDE):
 +    * On Linux: ''​~/​.platformio/​packages/​framework-arduinoadafruitnrf52/''​
 +    * On Windows: ''​%HOMEDIR%\.platformio\packages\framework-arduinoadafruitnrf52\''​
 +  -So, go to ''​.../​.platformio/​packages/​framework-arduinoadafruitnrf52/​bootloader/​feather_nrf52840_express/''​. ​ Copy the bootloader .zip (''​0.3.0_s340_6.1.1.zip''​) and .hex (''​0.3.0_s340_6.1.1.hex''​) from the build directory of the freshly modified bootloader package here.
 +  - Go to ''​.../​.platformio/​packages/​framework-arduinoadafruitnrf52/''​. Modify ''​boards.txt''​ just like I did for the Arduino IDE. See sub-step "​1"​ within the section [[s340:​arduino_ide_integration_for_the_nrf52840_feather_express_with_s340#​third_major_stepadd_s340_to_the_bsp|Second major step: replace the bootloader with the modified bootloader]] at the Arduino IDE adaptation page. 
 +  - Go to ''​.../​.platformio/​platforms/​nordicnrf52/​boards/''​. Copy ''​adafruit_feather_nrf52840.json''​ and name the copy as ''​adafruit_feather_nrf52840_s340.json''​. Change the following entries:<​code json>
 +    "​ldscript":​ "​nrf52840_s340_v6.ld",​
 +    "​softdevice":​ {
 +          "​sd_flags":​ "​-DS340",​
 +          "​sd_name":​ "​s340",​
 +          "​sd_version":​ "​6.1.1",​
 +          "​sd_fwid":​ "​0x00B9"​
 +        }</​code>​
 +  - Go to ''​.../​.platformio/​packages/​framework-arduinoadafruitnrf52/​cores/​nRF5/​linker''​. Copy/​duplicate the S140 linker script as nrf52840_s140_v6.ld. Modify the linker script memory settings just like I did for the Arduino IDE. See sub-step "​2"​ within the section [[s340:​arduino_ide_integration_for_the_nrf52840_feather_express_with_s340#​third_major_stepadd_s340_to_the_bsp|Second major step: replace the bootloader with the modified bootloader]] at the Arduino IDE adaptation page.
 +  -  Modify ''​.../​.platformio/​packages/​framework-arduinoadafruitnrf52/​platform.txt''​ file because the Adafruit bootloader is now 0.3.0:<​code bash>
 +    # Bootloader version
 +    # tools.bootburn.bootloader.file={runtime.platform.path}/​bootloader/​{build.variant}/​{build.variant}_bootloader-0.2.13_{build.sd_name}_{build.sd_version}
 +    tools.bootburn.bootloader.file={runtime.platform.path}/​bootloader/​{build.variant}/​{build.variant}_bootloader-0.3.0_{build.sd_name}_{build.sd_version}
 +</​code>​
 +
 +Now you should be ready to rock. Restart PlatformIO IDE and select ''​Adafruit Bluefruit Feather nRF52840 Express w.ANT''​ as your board type :)
s340/platformio_ide_integration_for_the_nrf52840_feather_express_with_s340.txt ยท Last modified: 2020/05/05 20:24 by orrmany