There are lots of ways to make programming microcontrollers really easy - CircuitPython, MicroPython, and Arduino are all options to get your project up and running, even as a beginner programmer. But sometimes you don't just need easy - you need beefy. When it's time to break out the big guns, you might consider using an RTOS - a Real Time Operating System, sort of a very tiny version of what runs on your desktop or laptop computer, but one that's built for single-chip microcontrollers like those on an Arduino or Feather board.

An RTOS is built to handle chips with lots of features automatically, juggling sensors, buses, screens and buttons without huge messes of custom code to manage them all. Unlike Arduino's startup/loop, or Circuitpython’s while True:, an RTOS can run many different operations (called Tasks) in parallel, never allowing any one task to fall too far behind. This means an RTOS is great for big, sprawling projects that have a lot of things running at once, or for projects like sensor data collection where one task is so critical that it needs to be constantly serviced. 

However, all this capability comes with a cost - RTOSes can be big and complex, since they're usually marketed toward corporate teams or very experienced freelancers. But they don't have to be hard to learn! In this guide, we'll be sticking to the basics - getting an LED up and running in an up-and-coming RTOS, Zephyr, which has been backed by the Linux Foundation, Intel, NXP, and many other powerful microcontroller companies.

You'll learn how to:

  • Install the Zephyr core on Mac OSX or Linux computers
  • Install Zephyr's custom management tool, West
  • Test your setup with the RTOS's built-in sample projects
  • Create your own application folder
  • Blink an LED on the Feather STM32F405 Express
  • Start learning RTOS concepts for custom projects

Parts

The heart of this project is the Feather STM32F405 Express:

Adafruit Feather STM32F405 Express

PRODUCT ID: 4382
ST takes flight in this upcoming Feather board. The new STM32F405 Feather (video) that we designed runs CircuitPython at a blistering 168MHz...
$24.95
IN STOCK

Depending on whether you want to work exclusively off of USB, or use a JLink programmer, you may also need one or more of the following parts:

1 x USB C to USB C Cable
A USB C Cable for the Feather STM32F405 for computers with USB C / Thunderbolt ports
1 x USB Type A to Type C Cable - approx 1 meter
A USB C Cable for the Feather STM32F405 for computers with traditional USB Type A ports
1 x SWD 0.05" Pitch Connector - 10 Pin SMT Box Header
A solderable STM box header, required for Jlink programming
1 x SEGGER J-Link EDU - JTAG/SWD Debugger
The Educational Edition Jlink - use this for hobby or student work
1 x SEGGER J-Link BASE - JTAG/SWD Debugger
The professionally licensed Jlink - use this if you intend to do professional work
1 x JTAG (2x10 2.54mm) to SWD (2x5 1.27mm) Cable Adapter Board
Jlink SWD adapter board, required for programming the Feather with Jlink
1 x 10-pin 2x5 Socket-Socket 1.27mm IDC (SWD) Cable - 150mm long
Jlink SWD adapter cable, required for programming the Feather with Jlink
This guide was first published on Feb 25, 2020. It was last updated on Feb 25, 2020.
This page (Overview) was last updated on Jul 11, 2020.