Jupiter Nano

by Starcat

Tiny, high-performance computer that runs Linux or the NuttX real-time operating system

View all updates Sep 02, 2021

Compiling NuttX on Jupiter Nano

by Adam

This update is about compiling NuttX for the Jupiter Nano. It builds on last week’s update on just running NuttX. Today, we’ll learn about how to compile it from scratch, get it onto the board, run, configure, and debug it.

I’m also providing a link to the documentation on the Starcat Jupiter Nano documentation website because some of these instruction sections are pretty long.

Full documentation

The full documentation is located here: NuttX on the Jupiter Nano. You can just click that link and start reading there if you want, or else follow this outline.

Development Process

This process can be outlined with the following steps:

  1. Create a bootable NuttX SD Card

    (This was covered in the last update.) You’ll need to do this so you can boot into the U-Boot bootloader, which you’ll need to do if you’re setting up the board’s memory for the first time or if you don’t have a JTAG hardware debugger.

  2. Install NuttX prerequisites, compiler, and get source code

    There are a bunch of tools needed to compile NuttX, as well as a specific ARM compiler. Here’s how to install it all.

  3. Compile NuttX

    This will actually perform the compilation.

  4. Run NuttX on the Jupiter Nano

    Now you need to get the compiled NuttX binary onto the chip. You can either copy it to the SD Card or use a J-Link JTAG debugger to load it directly into the board’s memory.

  5. Configure NuttX with different options enabled (optional)

    One of NuttX’s big strengths is that it is highly configurable. There are a lot of optional modules and features that can be enabled or disabled. If disabled, they are not included in the binary, which makes the nuttx binary take up less space and provide less ‘attack surface’ from a security perspective – there are fewer things to go wrong.

  6. Debug a running NuttX binary using gdb

    It’s easy to use gdb to debug a running NuttX binary. This is very useful for finding and fixing bugs in NuttX applications, especially ones that interface to external hardware. It’s also essential for writing device drivers for new hardware.

Conclusion

Please visit the complete Jupiter Nano documentation on the Starcat Documentation site for lots more hardware info, pinouts, links to hardware design files, software source code, and the Linux and NuttX instructions. More detailed info will be coming here, and I’ll link to it in future updates.

As always, if you have questions, email me at adam@starcat.io!

About the Author

Adam

adamfeuer  ·   Seattle, WA


$15,674 raised

of $3,250 goal

482% Funded! Order Below

Product Choices

$99

Jupiter Nano

High-performance SAMA5D27C-LD1G development board that runs Linux or NuttX


$13

microSD Card With Operating System

A 2 GB microSD card, pre-loaded with NuttX or Linux, ready to boot your Jupiter Nano


$19

Custom USB Cable for Port B

Native USB Port B Panel mount cable - Female USB Type-A to female IDC header connector


$7

Micro-USB Cable

A Micro-USB to USB Type-A cable chosen for the fit of its connector housing

Credits

Starcat

Electronics R&D company specializing in open source hardware and high performance biosignals acquisition equipment; creator of the HackEEG shield successfully launched on Crowd Supply in 2020


Adam Feuer

See Also

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects: