Neko

Embedded Linux Refresher

A quick overview/refresher

Last updated: May 4th, 2023

Embedded 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