I Should again mention that I am just a normal user here and just playing with this for the fun of it.
There are two sort of worlds here:
Zephyr - which is setup to use cmake and all the like, which I have not done (yet).
Lots more details up at: Getting Started Guide — Zephyr Project Documentation
This uses the device trees overlay and project config file, that choose which
components of zephyr are to be included...
And then there is the Arduino on top of zephyr and llext... Which is probably what I would call alpha level, some may say beta.
Which is described some in their blog last month:
Introducing Arduino cores with ZephyrOS (beta): take your embedded development to the next level | Arduino Blog
Which I am currently playing with and trying to contribute to.
I played some with the boards version mentioned in the blog. Which I found is/was missing a lot of stuff.
There is some good information up on the ReadMe file on the main ArduinoCore-zephyr github project:
arduino/ArduinoCore-zephyr: Arduino Core based on Zephyr+llext
There is also a lot that you can learn, from the open and closed issues that is part of this github project. Some of them have a lot of questions/answers that @Merlin513 and I asked and @facchinm responded to. Lots of this is in the readme mentioned.
But the current state of usage: For each of the boards, there is a definition of the device tree and config of which components are included and the like:
These are prebuilt into an image for each of these boards,
You need program the board with this image. You do so by selecting the board, double click to put it into bootloader mode, and then use the tools->Burn bootloader command, which will program the board with this. This image then is setup to be able to upload your compiled sketch and run it (that is the llext part of this). The first time you wish to program a sketch after downloading the new bootloader, you again probably need to double click the reset button...
If you are lucky and your program runs, then you should see it doing something.
But my first many attempts' things did not load, as there was not enough space
allocated in the system to load my sketch. So could not use the boards installed version. So had to build my own. Which again is described in the readme.
In the Setup the environment section:
Note: They don't have a real setup for this for Windows! However we are able to do so. That is I use WSL with Ubuntu 24.04 on my windows machine. (Sometimes I do it directly on Ubuntu as well). Two approaches for doing this, as I need to build the bootloader under WSL, but run it under WIndows.
a) Download it into the Windows filesystem space: in my case:
\mnt\d\github\ArduinoCore-zephyr
Then go through all of the steps:
.\extras\bootstrap.sh
.\extras\build.sh default to giga.
...
When this completes, I can simply run Arduino build as I setup links to this
within /hardware/arduino-git
I created a link to my build: mklink /J ArduinoCore-zephyr d:\github\ArduinoCore-zephyr
Note: in ArduinoCore-zephyr/cores/arduino is a directory api.
Actually, the github version is a link file that is setup for some ones relative link
location. I normally than have to delete it and create my own link. in this case
mklink /J api d:/github/ArduinoCore-api/api
And then choose the board within tools, like:
And then go through the steps of burn bootloader. ...
Note if you change any settings or system code or ..., you need to go through the
steps again of under WSL to rebuild the bootloader.
b) Build with all of the zephyr build stuff contained within your WSL file system.
Each time you complete the build: ./extras/build.sh you then need to copy
the appropriate parts of this directory structure to somewhere within your
windows normal file system locations.
Builds go a lot faster this way, BUT: not sure what all you need to copy, so I typically copy everything....
Most of the time I do A) or do builds on my old machine running Ubuntu, but probably will transition to B), I believe @Merlin513 does B)
State of Nano 33 BLE builds: still needs lots of TLC. The two of us mentioned, only started playing with the nano boards several days ago.
And if you look up at the github project issues you will see what we have found
so far:
Issues · arduino/ArduinoCore-zephyr
And we have only scratched the surface, dealing with things like some of the pins were not defined correctly, Serial interface had issues, Wire1 was not defined, ...
Just now starting to see how to talk to some of the sensors. I am not sure which direction Arduino will take on some of this. That is they could
a) define all of them in the device tree, and have then all running in all of the sketches you upload to it. (Or some subset of sensors)
b) Like MBED version where you load libraries for each sensor you wish to use...
Just starting to play with these.
So far my attempts to load a library to talk to the Temperature sensor with SPI1 crashes the board...
Sorry for the long-convoluted answer to your question. Hope some of it makes
sense