After Jay Carlson published a $1 MCU write-up, several readers suggested looking at application processors — the MMU-endowed chips necessary to run real operating systems like Linux. Massive shifts over the last few years have seen internet-connected devices become more featureful (and hopefully, more secure), and Linux is being put into more and more places.
This extensive article is targeted at embedded engineers who are familiar with microcontrollers but not with microprocessors or Linux, a quick primer on why you’d want to run embedded Linux, a broad overview of what’s involved in designing around application processors, and then a dive into some specific parts you should check out — and others you should avoid — for entry-level embedded Linux systems.
On Microcontrollers vs. Microprocessors:
Coming from microcontrollers, the first thing you’ll notice is that Linux doesn’t usually run on Cortex-M, 8051, AVR, or other popular microcontroller architectures. Instead, we use application processors — popular ones are the Arm Cortex-A, ARM926EJ-S, and several MIPS iterations.
The biggest difference between these application processors and a microcontroller is quite simple: microprocessors have a memory management unit (MMU), and microcontrollers don’t. Yes, you can run Linux without an MMU, but you shouldn’t: when compared to application processors, MMUless microcontrollers are horribly expensive, power-hungry, and slow.
This just scratches the surface of this expansive publication – a must-read.