We’re happy to announce initial support for Zephyr Project, a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource-constrained devices, and built with safety and security in mind.
You can finally use PlatformIO and its professional 1-Click solutions (PIO Unified Debugger, PIO Unit Testing) without dependencies to 3rd party tools or build systems. Everything works out-of-the-box. All famous operating systems (Windows, macOS, Linux) and over 10+ popular IDEs are ready to make you happy these holidays.
Thanks for this! I was hoping I would be able to start the journey of programming my PineTime development board with PlatformIO… and just in time, you implement support for Zephyr! So it looks like Mbed and Zephyr are in it’s immediate future!
Thanks for the zephyr support
I have a question though… when creating a project based on the nrf52840 board which zephyr base is used… is the ZEPHYR_BASE env var used? and if not can I set the zephyr base in my project? thanks.
Hi @sameraugury! We specify our local ZEPHYR_BASE variable in an isolated environment. ZEPHYR_BASE value is equal to the path to framework-zephyr package.
I’ve become so used to Platformio and VScode, and now find myself attracted by the hardware of the NXP ‘crossover’ products, but as someone else said on this forum, the MCUxpresso tooling is so back to the future (in a bad way!) that it is physically painful.
I was wondering, with this announcement, and given that Platformio now supportsTeensyduino 4.0, and also that Zephyr supports RT1062, is there any chance that Platformio will support the RT1060 dev kit with Zephyr anytime soon?
This Zephyr integration is really special, but I want to know if it’s feasible to integrate it with an external installation of Zephyr. What I mean is, an installation of zephyr somewhere on the filesystem, done using “west.” Maybe it’s possible to set-up some symlinks?
Hi @jpnorair! Indeed, the Zephyr integration is a bit unusual. In a nutshell, Zephyr has a pretty sophisticated structure and each Zephyr module is shipped as a standalone package. It might be a tedious task, but I believe it’s possible to point PlatformIO to custom Zephyr packages using the platform_packages option, for example:
[env:nucleo_f401re]
platform = ststm32
framework = zephyr
board = nucleo_f401re
platform_packages =
platformio/framework-zephyr @ file:// /path/to/zephyr/zephyr/sources
platformio/framework-zephyr-mbedtls @ file:// /path/to/zephyr/modules/crypto/mbedtls
platformio/framework-zephyr-hal-st @ file:// /path/to/zephyr/modules/hal/st
platformio/framework-zephyr-canopennode @ file:// /path/to/zephyr/modules/lib/canopennode
.... and so on for all Zephyr packages
Please keep in mind that each Zephyr module should contain a valid package.json file. Besides, the framework-zephyr package should also contain PlatformIO build scripts (you can copy them from the original package).
Thanks. Today I was trying your example of creating a custom board, and I was not having success in the building phase. I think this is because I am using an SoC not supported in the PlatformIO Zephyr version (but it is supported in the mainline Zephyr). But if I can just link PlatformIO to my mainline Zephyr modules, that is a much better solution. I will try this next.