Apache NuttX and small systems - NuttX Core Size

Minimal NuttX Core Size

We continue our exploration of Apache NuttX for small embedded systems. In the previous post, we examined a simple "Hello, World!" example and explored how small it could be on NuttX.

Now, we take it a step further by disabling all possible NuttX features, allowing the toolchain to remove as much code as possible. This approach leaves us with the core of NuttX—components that can't be eliminated through configuration options and compiler optimizations.

Finally, we implement a trivial application using two different approaches—the POSIX-compliant method and the non-portable alternative—highlighting the trade-offs between achieving portability and minimal system size.

Read more…

Apache NuttX and small systems - Hello, World !

Smoll NuttX

In the world of small embedded systems, balancing functionality with strict resource limitations is a constant challenge. Apache NuttX, with its scalable and modular design, allows developers to select only the features needed for a given application and then fine-tune the system to minimize resource usage. However, the vast number of configuration options can be overwhelming, and without exploring the OS implementation or analyzing the generated binaries, it can be difficult to effectively optimize resource consumption.

I've been curious for some time about how minimal we can make NuttX while still implementing useful applications. It's time to check it out. This is the first post in the series "Apache NuttX and small systems", where we'll experiment with reducing the size of the final NuttX image, explore how low we can push resource requirements, and, if all goes well, implement some useful applications that fit into some small embedded targets.

We're going to start with the classic "Hello, World!" example, examine its memory consumption, and see how different configuration options influence the final result.

Read more…

NuttX SensorScope demo with Thingy53

Plot from IR sensor data

NxScope in Apache NuttX is a universal tool that allows you to capture and transfer time series data to your host machine. In this post, I'll demonstrate its use based on the SensorScope application, which enables the streaming of data from sensors and their subsequent visualization.

For this purpose, the Thingy:53 board from Nordic Semiconductor is used. It has several sensors on board and almost all of them are already supported in NuttX (BME688 is still missing).

Read more…

Segger RTT as an interface for NuttX NxScope library

One of my favorite things when working with Segger J-Link is RTT support which significalntly improves my debugging experience. With a single interface (one USB cable), I can run:

  • RTT serial console to communicate with the target

  • SystemView to capture system events

  • gdb for general debugging

The latest addition to this list is real-time data streaming with the NuttX NxScope library and RTT channel as a communication interface. This feature is supported with nxscli tool since version 0.5.1. Now we can visualize and debug complex data relations much more simpler.

This post discusses how to configure the NxScope example with NuttX to work over an RTT channel with an RTT serial console and SystemView support.

For demonstration, we use Nordic nRF52832-DK board with a built-in J-Link OB interface, so there is no need to connect any external device.

Read more…

Hello, world!

Hello, world!

Let's see what the website design looks like and how to use the rST with Nikola. You probably won't find anything particularly interesting here.

Any tips and comments regarding the appearance of the website are welcome.

Read more…