Vocabulary for Embedded Systems Engineers
Essential English vocabulary for embedded systems: RTOS, ISR, HAL, BSP, bare metal, bootloader, memory map, linker script — with definitions and usage examples.
Embedded systems engineering operates at the intersection of hardware and software, and its vocabulary reflects that dual nature. If you are writing technical documentation, reviewing firmware code, or presenting to a mixed hardware/software audience, precision in this vocabulary is essential.
This guide covers the core terms of embedded systems development with natural English examples.
Hardware Abstraction
HAL (Hardware Abstraction Layer)
The HAL is a software layer that provides a consistent API to the hardware below it, hiding the differences between hardware variants from the code above.
“By programming against the HAL rather than the hardware registers directly, we can port the application to a different MCU family with minimal code changes.” “The HAL provides a uniform
uart_write()function regardless of which UART peripheral the hardware uses.”
BSP (Board Support Package)
The BSP is the collection of low-level software specific to a particular hardware board. It includes the HAL, peripheral drivers, and startup code.
“The BSP for the custom carrier board includes drivers for the on-board accelerometer, the Ethernet PHY, and the CAN transceiver.” “When we bring up a new hardware revision, the first task is to update the BSP to reflect the changed pin assignments.”
Bare Metal vs. RTOS
Bare Metal
Bare metal development means writing firmware that runs directly on the hardware without an operating system. The developer has complete control but must manage all timing and resource sharing manually.
“For this low-power sensor node, we went bare metal — there’s no operating system overhead, and the interrupt-driven architecture is simple enough to manage without a scheduler.” “Bare metal is appropriate when the system is simple and deterministic. As soon as you need concurrency or task management, an RTOS becomes attractive.”
RTOS (Real-Time Operating System)
An RTOS is a lightweight operating system designed for embedded systems that provides task scheduling, inter-task communication, and timing services with deterministic (predictable) response times.
Common RTOS examples: FreeRTOS, Zephyr, ThreadX, RTEMS.
“We’re using FreeRTOS to manage the four concurrent tasks: sensor sampling, data processing, Bluetooth communication, and display update.” “The RTOS scheduler ensures that the motor control task runs every 1 ms with a maximum jitter of 50 µs.”
Determinism and Real-Time
A real-time system guarantees that certain operations complete within a defined time bound. This is different from “fast” — a real-time system may not be fast, but it is predictable.
“The hard real-time requirement is that the braking signal is processed within 10 ms of sensor input — no exceptions.” “FreeRTOS is soft real-time in most configurations. For hard real-time guarantees, we evaluated RTEMS.”
Interrupts
ISR (Interrupt Service Routine)
An ISR is a function that the CPU calls immediately when a hardware interrupt occurs, pausing the main program execution.
“The ISR for the UART receive interrupt reads the incoming byte and places it in the ring buffer. It must complete in under 5 µs to avoid missing subsequent bytes at 115200 baud.” “Keep ISRs short — defer any non-trivial processing to a task using a semaphore or a queue.”
Interrupt Latency and Priority
Interrupt latency is the time between the hardware event and the first instruction of the ISR executing.
“Our profiling shows interrupt latency of approximately 800 ns on this MCU at 168 MHz — well within the requirement.” “We assigned the CAN receive interrupt a higher priority than the display refresh interrupt to ensure bus messages are never missed.”
Memory and Linking
Memory Map
A memory map describes how the address space of a microcontroller is organised — which addresses correspond to Flash, RAM, peripherals, and other regions.
“The memory map shows that Flash starts at 0x08000000 and RAM starts at 0x20000000. The linker script uses these addresses to place code and data in the correct regions.”
Linker Script
A linker script is a configuration file that tells the linker how to organise the compiled code and data into the target memory regions.
“The linker script defines three memory regions: FLASH for code, RAM for stack and heap, and CCMRAM for time-critical data. We place the motor control interrupt vectors in CCMRAM to reduce access latency.”
Stack and Heap
In embedded systems, the stack and heap sizes must be explicitly configured — there is no virtual memory to fall back on.
“We had a hard fault caused by a stack overflow in the Bluetooth task. I increased the task stack size from 512 to 1024 words.” “Heap usage is particularly dangerous in embedded systems — memory fragmentation can cause allocation failures that are difficult to reproduce.”
Boot Process
Bootloader
A bootloader is a small program that runs before the main application. It typically handles initial hardware setup and may support firmware update over UART, USB, or a network interface.
“The bootloader checks for a valid firmware image on the SD card at startup. If found, it updates the internal Flash and reboots into the new application.” “We use a dual-bank Flash arrangement so the bootloader can write the new firmware to Bank B while Bank A is still running, then switch banks on the next reset.”
Reset Vector and Startup Code
The reset vector is the address of the first instruction the CPU executes after reset. The startup code (often called crt0 or startup.s) initialises the C runtime environment before main() runs.
“The startup code zeroes the BSS section, copies the data section from Flash to RAM, and calls the global constructors before jumping to
main().”
Practical Phrases for Embedded Engineers
- “The ISR must be re-entrant and must not call any non-reentrant functions.”
- “We need to map this peripheral driver into the HAL interface so we can swap hardware without touching application code.”
- “The RTOS tick rate is 1 kHz, giving us 1 ms scheduling resolution.”
- “The linker script needs to be updated to place the DMA buffers in a non-cached memory region.”
- “Bare metal is fine for the prototyping phase, but once we add wireless connectivity we’ll need an RTOS for task management.”
Embedded systems vocabulary is precise by necessity — in a domain where a mistimed interrupt can cause a system failure, language precision matters as much as code precision. These terms will serve you in technical documentation, design reviews, and cross-functional discussions with hardware and software colleagues alike.