Glossary¶
Every term the course introduces, defined once, with a link to where it is actually taught. Definitions here are deliberately short — the chapter is where the idea gets explained, this is where you come to be reminded.
Acronyms have hover definitions everywhere on this site. If you meet an unfamiliar one mid-sentence, point at it rather than coming here.
A¶
- A/B slots
- Keeping two copies of a piece of software — one running, one being replaced — so that a failed update can be undone by switching a pointer back. Used by this board's bootloader partitions and, at a much smaller scale, by MCUboot for the firmware. See From power to prompt and Updating safely.
- Admonition
- A callout box, like the tip above. Nothing to do with the board; mentioned because the documentation uses them for asides you can safely skip.
B¶
- Baud rate
- How many signal changes per second a serial line carries. This board's MPU↔MCU link runs at 115200, which works out at roughly 9 ms for a 104-byte message. See How they talk.
- Binding (devicetree)
- A file that says which properties a kind of hardware may have and what they mean — the schema for a devicetree node. See How the build knows your hardware.
- Binding (USB)
- Writing a USB controller's name into a gadget's
UDCfile, which is the moment the board actually appears on the host computer. See One cable, many devices. - BOOT0
- A single wire, sampled by the microcontroller at reset, that selects between running your firmware and sitting in the chip's own ROM bootloader. Driven by Linux. Get it wrong and a perfectly good board looks dead — this is the single most expensive mistake available on this hardware.
- Bootloader
- A small program that runs before the real one, decides what to start, and starts it. This board has a chain of them on the Linux side and one (MCUboot) on the microcontroller.
C¶
- Charlieplexing
- A wiring trick that drives n × (n−1) LEDs from n pins, by exploiting the fact that a microcontroller pin can be an input as well as high or low. Eleven pins, 104 LEDs. See The LED matrix.
- configfs
- A Linux filesystem where creating a directory creates a kernel object.
Making a folder called
functions/ncm.usb0does not make a folder; it makes a USB network function. See One cable, many devices. - Confirmed image
- A firmware image that has told the bootloader it is working, so it survives the next reset. Until then it is on probation. LED 3 shows this: green confirmed, yellow not. See Updating safely.
- Coverage
- The fraction of lines and branches a test suite executes. It measures what ran, not whether the assertions were any good — see Knowing it works for why it is enforced at 100% anyway.
- Cross-compiling
- Building on one kind of computer a program that will run on a different kind. Everything for the microcontroller is cross-compiled, on the Linux side of the same board. See From source to a running chip.
D¶
- Devicetree
- A description of what hardware exists and how it is wired, as data rather than code. Compiled into C macros at build time — there is no devicetree parser on the chip. See How the build knows your hardware.
F¶
- Firmware
- The program running on the microcontroller. The word is doing real work: it is the only program there, with no operating system beneath it in the sense Linux means.
- Framing
- Turning a stream of bytes into a sequence of messages. A wire delivers bytes when it feels like it, in any grouping; framing is the agreement that says where one message ends. See How they talk.
G¶
- Gadget (USB)
- A Linux-side definition of a USB device the board will pretend to be. Built from functions (a network adapter, a disk) grouped into configurations. See One cable, many devices.
- GPIO
- A pin software can read, or drive high or low. Five of them connect the two chips on this board.
I¶
- Idempotent
- Doing it twice has the same effect as doing it once. The property that makes
bootstrap.sha recovery path rather than a one-shot. See From factory to this. - Interrupt
- Hardware stopping whatever the processor was doing to run a specific function immediately. The LED matrix refresh is one, firing every 10 microseconds.
J¶
- Jiffies
- The unit
/proc/statcounts CPU time in. Not seconds — a tick whose length depends on the kernel's configuration, which is why the CPU percentages are computed from differences between two readings rather than from one. See The Linux side.
K¶
- Kconfig
- The system that decides which software features get compiled in. Distinct from devicetree, which describes what hardware exists — the two must agree, and most "device not ready" errors are them disagreeing. See How the build knows your hardware.
M¶
- MCU (microcontroller unit)
- The small chip. One core, 786 KB of memory, no operating system underneath you, and timing you can rely on. Here, an STM32U585.
- MCUboot
- The bootloader on the microcontroller. Keeps two firmware slots, boots the right one, and reverts an update that never confirms itself. See Updating safely.
- MPU (microprocessor unit)
-
The big chip. Four 64-bit cores, gigabytes of memory, Debian Linux, and no timing guarantees whatsoever. Here, a Qualcomm QRB2210.
(Confusingly, the same three letters also mean memory protection unit in Arm documentation. This course always means the processor.)
N¶
- native_sim
- A Zephyr target that compiles firmware as an ordinary program for your laptop, so logic can be tested in seconds without a board. See Knowing it works.
- NCM / RNDIS
- Two USB standards for pretending to be a network adapter. NCM is the modern one and what the gadget is built with; RNDIS is Microsoft's older one, kept as a build-time alternative for a host with no NCM driver. Only one of them is ever offered — see IP over USB.
O¶
- Overlay
- A small devicetree file layered on top of the board's, so you can change what the board description says without forking it. This project's is 38 lines.
P¶
- Persistence of vision
- The reason a panel that lights one LED at a time looks like a steady picture. The matrix sweeps all 104 LEDs about a thousand times a second; your eye integrates. See The LED matrix.
/proc/stat- A file that is not a file. Reading it asks the kernel for CPU counters, formatted as text, generated at the moment you read. The source of every number this project's demo displays. See The Linux side.
R¶
- Rasteriser
- The code that turns "core 2 is at 47%" into which pixels are lit at what brightness. Pure arithmetic with no hardware in it, which is exactly why it can be tested on a laptop.
- Real-time
- Not "fast". Guaranteeing that something happens by a deadline. Linux is much faster than the microcontroller and cannot make that guarantee; the microcontroller is slow and can. This distinction is most of the argument for a board with both.
S¶
- Sysfs
- Another filesystem that is not files —
/sysexposes kernel objects as directories, which is how this project reads and writes the LEDs. - systemd
- What starts and supervises everything on the Linux side. A unit is one thing it manages. See The Linux side.
- SWD (Serial Wire Debug)
- Two wires that let one chip write flash on another, halt it, and read its registers. How firmware gets onto the microcontroller the first time.
T¶
- Trigger (LED)
- A kernel feature that wires an LED to an event source — disk activity, wifi traffic — so it blinks without any program driving it. Three of them are registered on this board and none of them fire. See Four lights that tell the truth.
U¶
- UART
- The hardware behind a plain serial line: bytes, one bit at a time, on a pair
of wires. On the Linux side it appears as the file
/dev/ttyHS1. - Unit (systemd)
- One thing systemd manages — a service, a mount, a timer. This project adds about half a dozen.
W¶
- west
- Zephyr's meta-tool: manages the workspace, the several repositories in it, and wraps the build. See From source to a running chip.
Z¶
- Zephyr
- The real-time operating system running on the microcontroller. Small enough to fit in tens of kilobytes, and honest about being an operating system for one program rather than many. See The microcontroller side.
- ztest
- Zephyr's unit-testing framework. Runs on the chip, or on your laptop via
native_sim.