Embedded Linux Refresher
A quick overview/refresher
Last updated: May 4th, 2023Embedded Systems
- Microcontroller
- Flash program memory, RAM, processor core, peripherals
- Development studio for bare-metal programming
- Linux-capable Processor
- Numerous peripherals
- Boot ROM for loading the bootloader
Bootloader
- Responsible for loading the kernel
- Typically Das U-Boot, a universal bootloader
- Stripped-down drivers for storage and peripherals
Kernel
- Ported to specific architectures, parts, and boards
- Low-level routines, drivers, and device tree
- Supports peripherals through consistent interfaces
Userland
- Filesystem
- Selection based on storage medium
- Different filesystem options
- Init system
- Manages userland
- Different options available
- Shell
- Interface for interacting with the system
- Accessed through UART serial connection
Components
- Microprocessor
- Determines system capabilities
- Peripherals added by silicon vendors
- Memory
- SDRAM, DDR, DDR2/3
- Options for separate memory placement or embedded RAM
- Storage
- Flash memory (e.g., SD cards, microSD cards, eMMC)
- Raw flash (NOR or NAND) with or without a controller
Software Development
- Developers provide the bootloader, kernel, and filesystem
- Embedded Linux distributions offer toolkits for firmware building
- Porting the Linux kernel to specific architectures and boards
- Driver interfaces and device tree for hardware configuration
- Userland components similar to desktop counterparts