In this lesson:
- what makes a computer "embedded", dedicated function, real-time, fixed resources
- MCU (microcontroller) vs MPU (microprocessor): the core hardware split
- why an MCU boots in milliseconds and an MPU needs external RAM and an OS
- how to choose between them
- the "MPU" naming trap (microprocessor vs memory protection unit)
What "embedded" means
A laptop is a general-purpose computer: it runs arbitrary programs you install. An embedded system is a computer built into a larger product to do one dedicated job, the controller in a washing machine, a motor drive, a pacemaker, a car's ECU. You don't install apps on it; its program is fixed firmware.
Embedded systems typically share these traits:
- Dedicated function, one purpose, decided at design time.
- Real-time constraints, must respond within deadlines (fire the spark plug now, not 5 ms late).
- Fixed, limited resources, kilobytes of RAM, not gigabytes; tight power and cost budgets.
- High reliability, runs unattended for years; often can't crash or be rebooted by a user.
- Direct hardware interaction, talks to sensors, motors, and radios through peripherals, not through a desktop OS.
MCU vs MPU: the fundamental hardware split
The first architectural decision is what kind of processor sits at the center.
A microcontroller (MCU) integrates the CPU core, memory (flash + SRAM), and peripherals onto a single chip. It's a complete computer in one package, add power and a crystal and it runs. Think STM32, AVR, PIC, ESP32.
A microprocessor (MPU), here meaning an application processor, is essentially just the CPU (often with a GPU). It has no usable on-chip program memory or RAM; it needs external DRAM, external flash/eMMC, and a power-management chip, and it runs a full OS like Linux. Think the SoC in a Raspberry Pi, i.MX, or a phone.
MCU (one chip) MPU (a system of chips)
βββββββββββββββββββββββββββββ βββββββββββ ββββββββββββ
β CPU core β β CPU ββββΆβ external β
β Flash (program) β β (+ GPU) β β DRAM β
β SRAM (data) β ββββββ¬βββββ ββββββββββββ
β Peripherals (GPIO,UART, β β ββββββββββββ
β timers, ADC, ...) β βββββββββΆβ eMMC / β
βββββββββββββββββββββββββββββ β flash β
self-contained, boots from +PMIC, +external storage,
internal flash in ms boots an OS in secondsThe comparison that matters
| MCU | MPU (application processor) | |
|---|---|---|
| Memory | on-chip flash + SRAM (KB-MB) | external DRAM + flash (MB-GB) |
| Software | bare-metal or RTOS | full OS (Linux, Android) |
| Boot time | milliseconds (from internal flash) | seconds (load OS from storage) |
| Determinism | high (predictable timing) | lower (OS scheduling, caches, MMU) |
| Power | Β΅A-mA, easy deep sleep | much higher; sleep is complex |
| Cost / BOM | low, few external parts | higher, many support chips |
| Compute | MHz, often no FPU/MMU | GHz, multicore, MMU, GPU |
| Best at | real-time control, low power, simple | rich UI, networking, heavy compute, filesystems |
The rule of thumb: choose an MCU when the job is real-time control, low power, low cost, and instant-on. Choose an MPU when you need an operating system, a rich GUI, networking stacks, a filesystem, or serious compute (video, ML). Many products use both, an MPU for the application and an MCU as a real-time co-processor.
This course is about the MCU world (Cortex-M class), where you own every byte and every cycle.
The line is blurry: "embedded Linux"
The MCU/MPU split isn't absolute. High-end MCUs now have megabytes of RAM and run lightweight Linux; application processors can run bare-metal. "Embedded Linux" sits in the middle, an MPU running Linux but in a fixed-function product (a router, a smart thermostat). The deciding questions are practical: do you need an OS and its ecosystem, and can you afford the external memory, power, and boot time it requires?
The "MPU" naming trap
Watch out: MPU has two meanings in embedded.
- MicroProcessor Unit, an application processor (this lesson).
- Memory Protection Unit, a small hardware block inside many Cortex-M microcontrollers that enforces memory access permissions (covered in memory-protection topics).
So a Cortex-M microcontroller (an MCU) can contain an MPU (memory protection unit). Always read MPU from context; senior engineers disambiguate automatically.
Gotchas
- "MCU vs MPU" is about integration, not just speed. The defining difference is on-chip memory and self-containment, not clock rate. A fast MCU can outrun a slow MPU; the split is about whether memory/OS are integrated.
- MPUs can't boot instantly. They load an OS from external storage into external DRAM, seconds, not milliseconds. If your product must be responsive at power-on (a safety control), that boot time matters.
- Determinism favors the MCU. An MMU, caches, and an OS scheduler make worst-case timing harder to bound on an MPU. Hard-real-time control usually lives on an MCU (or an MCU core beside the MPU).
- Don't conflate the two MPUs. Microprocessor unit β memory protection unit. Misreading this in a datasheet or interview is a classic slip.
TL;DR
- An embedded system is a computer dedicated to a specific function inside a larger product, usually with real-time constraints and fixed, limited resources.
- An MCU integrates CPU + flash + SRAM + peripherals on one chip, self-contained, instant-on, low-power, deterministic; runs bare-metal or an RTOS.
- An MPU (application processor) is essentially just a CPU needing external DRAM/storage; it runs a full OS, offers far more compute, but costs more power, money, and boot time.
- Choose MCU for real-time control / low power / low cost; choose MPU for an OS, rich UI, networking, or heavy compute, and many products use both.
- "MPU" means microprocessor unit or memory protection unit depending on context, don't confuse them.