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
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
The heart of this project is the Feather STM32F405 Express:
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: