Unlike most of the other options, Zephyr's run as an actual open source project and not just as a closed box you can peer into every once in a while, and Nordic seem to have gone all in on it.
Unlike most of the other options, Zephyr's run as an actual open source project and not just as a closed box you can peer into every once in a while, and Nordic seem to have gone all in on it.
I think the most important thing to do figure out what you actually want to make. Any microcontroller SDKs are going to be at least usable for most things.
For myself, after getting something simple like the above working, it was a gateway to much more experimentation of further possibilities, and ultimately I ended up making an interactive shell [1][2] with some built-in utilities and text games I also wrote that runs on a variety of AVR microcontrollers (those very same Arduino boards I had when starting out).
[1] https://community.atmel.com/projects/avrsysh-systemshell-som...
After 38 years of programming in C, I'd instead recommend exploring CircuitPython.org from Limor ("Lady Ada") Fried based on the work of Damien George. Also recommend starting out using one of her kits https://www.adafruit.com/category/116 and avoiding rechargeable batteries (unless they're NiCads) while keeping your USB power adapter on an easy-to-reach power strip for a while.
Even back in the day, I would have recommended new embedded systems developers start with FORTH or BASIC (PEEK and POKE yoh) ..or if it was a serial/UART-controllable device, Phillippe's insanely great Turbo Pascal --that is unless you had already written a lot of applications in C and maybe a few operating system hacks or device driver mods too.
(except for the dumbass name, but could be worse, like Deb-Ian)
It's quite irritating that everybody wants to complicate something which is basically "1) call this init function" "2) call that function every n ms on a timer".
The problem in programming (and this is true even for desktop stuff) is that everybody wants to own the event loop.
No. No no no no no no no. Bad programmer. No biscuit.
Two systems that want to own the event loop can't compose.
Maybe I'm running a CANOpen and a BLE stack. Both want to own everything. Well, sometimes that CAN system emits an event that I MUST not ignore (human proximity alert on a robot--for example). And I have to spend a not insignificant amount of time getting the bloody BLE stack out of the way so that I can focus solely on the CAN system for the moment.
Ah yes, one of my fav songs from the New Wave era
make BOARD=your_board flash
it has pretty good networking support (6LoWPAN) and is mostly used for sensor network applications