I’ve been working with Non-Volatile Storage (NVS) in Zephyr to handle logging and Bluetooth bonding information. NVS works like a simple key-value database: data is stored as an id-data pair, and Zephyr provides APIs (and even an example project) ...
For many embedded engineers, “the cloud” feels abstract and kind of mysterious. It was the same for me. IoT devices today are always connected: sending, receiving, analyzing, and showing data. But how does it actually work behind the scenes?
The V-Model is a product development lifecycle that maps design phases on one side and testing phases on the other. It’s simple, easy to follow, and works well for small and medium projects like smart appliances or wearables.
Error handling is tricky. On one side, the caller needs to react to errors. On the other side, the more error details you pass back, the more complex the caller code becomes. Complex code means harder to read, harder to maintain, and more bugs. An...
Sysbuild is a higher-level build system that can be used to combine different modules that are not in the necessary under the same project like MCUmgr and MCUBoot. It’s a great tool and it’s part of the Zephyr ecosystem, but sometimes can be a pa...
In a previous post, I mentioned that I’ve been working a lot with the Linux and Zephyr RTOS code lately. Most of the time, I’m either tuning the device tree spec (DTS) or patching the kernel or writing drivers. I learned a lot about how Linux org...
I’m working lately a lot with embedded linux, and most of the time is either tuning the device tree spec (dts) or patching the kernel. So while debugging and patching the kernel I learned a lot about how linux organize the code and its use of th...
I’m pretty sure you’ve already heard about recursion. If not, check out these videos first:
In 2022, I spent almost a year looking for a business partner to start a new venture. During that time, I had a lot of conversations with people about various ideas and even tried out a few. One of the more intriguing ones was a device that could ...
In Zephyr, the typical way to enable logging in your application is by setting LOG_LEVEL and registering the module. This works well for small projects where you have one or two modules. But if your repository has multiple source files or modules,...