PlatformIO Community

How to create a new package for a new processor

Hi,
I am working on a new development board that uses the Insight SIP ISP4520.
The ISP4520 is basically a Nordic nRF52832 and a Semtech SX126x put together into one SoC. If the prototypes are working well, the boards will be on sale from early 2020 on.

I tried to use the existing nRF52 package (the Adafruit version), but I have problems, because neither the bootloader nor the pin-definitions of the existing variants work well with the ISP4520.

I created my own package that fixes all the issues that I had and I can load and use it in ArduinoIDE by adding it to the Additional Boards Manager URLs.

But I don’t want to use ArduinoIDE, as I do all my dev projects with PlatformIO.
I know how I create a custom platform to PlatformIO, but I struggle to define a custom package. It seems that all I can use are the packages on https://bintray.com/platformio/dl-packages.

Any way to create a custom package with a custom platform, so that I can use PlatformIO for my new board? I tried to find out how the platforms load the packages, but get stuck at
FRAMEWORK_DIR = platform.get_package_dir("framework-arduinoadafruitnrf52")
How can I replace that to load a custom package from Github?

Why use a custom platform when your board belongs to the https://github.com/platformio/platform-nordicnrf52 platform? Is your addition just a new board variant or do you also have a new / modified version of the Arduino framework for nRF52 chips? If it’s just a board then pull-request into the platform above.

Thank you for the "friendly’ welcome.
What I kindly asked for is if it is possible to use a custom package instead of “approved” existing ones.
The problems I have with the existing nRF52 package are

  • need changed bootloader written by me (secure,)
  • need include specific LoRa library for this chip in the package
  • requirement to not be linked to Adafruit brand

A more helpful answer would be appreciated, even if it is just a NO, it is not possible because of…

Ich wĂĽnsche Dir einen guten Tag.

Alright then let’s try this again…

If it’s just that then the docs tell you the solution: http://docs.platformio.org/en/latest/projectconf/section_env_platform.html#platform-packages as a per-project directive. Note that you need a package.json file in your repo to describe the package. This is all more explained in the docs (http://docs.platformio.org/en/latest/platforms/custom_platform_and_board.html) and the existing packages. Example:

{
    "name": "framework-arduinoavr",
    "description": "Arduino Wiring-based Framework (AVR Core, 1.6)",
    "url": "https://www.arduino.cc/en/Main/Software",
    "version": "4.1.2"
}

Danke.

I missed the option to override the default package with env:override_framework per project.

I did already the custom platform.json for my package

But I was hoping to have a project independant solution, where a custom platform could load a custom package from a location different than bintray.com.

Thanks for your fast reply and I hope you have a solution for me.

But if you already have your custom platform you can modify your platform.json to add your package repository to packageRepositories. (or additionally remove all package repositories but yours, but then you’ll have to provide all needed tools like toolchain-gccarmnoneabi, uploads etc…)

As an example you can look at the linked ones (example)

Got it 90% working. Thanks for your help.

Now I am stuck with the fact that on PlatformIO the Adafruit Arduino framework is still on release 0.13.0, but on ArduinoIDE it is upgraded to release 0.14.0 - 2019.09.27

But that is a different story.

On the development branch (https://github.com/platformio/platform-nordicnrf52/commits/develop) mbed-os was updated 5 days ago but no idea when the Arduino framework will be updated. If you open an issue at https://github.com/platformio/platform-nordicnrf52/issues I’m sure @valeros will help you.

1 Like

Hi @beegee1962! Please open an issue here https://github.com/platformio/platform-nordicnrf52/issues

1 Like

No need, I solved it. And I don’t care when the Adafruit platform will be updated.

Putting this platform into the .platformio\platforms folder and run pio platform install circuitrocks and all is setup and my custom package with custom platform is up and running.
And my package is based on the latest Adafruit nRF52 Arduino version 0.14.0 - 2019.09.27 and not 2 releases behind.

Again
PlatformIO ROCKS!!!
Thank you very much guys for giving this development IDE to us for free!

If our board is a success, I might come back here next year and ask you to make this platform a contributed platform.

1 Like