Microcontrollers&Embedded Systems
- SO YOU WANT TO BUILD AN EMBEDDED LINUX SYSTEM? A primer on how embedded Linux systems are developed, plus an exploration of the hardware and software ecosystems of ten different commonly-available CPUs
- Anatomy of cross-compilation toolchains
- From zero to main(): Bare metal C
- Demystifying Firmware Linker Scripts
- Get the most out of the linker map file
- Cross debugging for ARM / MIPS ELF with QEMU/toolchain
- Emulating Embedded Linux Devices with QEMU
- Emulating Embedded Linux Systems with QEMU
- GNU Build IDs for Firmware
- ARM Cortex-M RTOS Context Switching
- CPU caches with examples for ARM Cortex-M
- ARM-X Firmware Emulation Framework
- Awesome IOT
- Analyzing Malware for Embedded Devices: TheMoon Worm
- Build a Debian Jessie root filesystem
- Device Tree for dummies
- Device Tree Usage
- Series about hardware analysis and firmware reversing
-
nvram-faker A simple library to intercept calls to libnvram when running embedded linux applications in emulated environments.
Power management
Bootloader
GPIO
Usually an embedded system has a certain numbers of devices interconnected via different signals. To configure these interconnections in some cases gpio are used.
>>> gpio2num = lambda a,b:(a -1)*32 + b
>>> print gpio2num(7,16)
208
>>> print gpio2num(7,9)
201
num2gpio = lambda x: (x /32 + 1, x%32)
>>> num2gpio(98)
(4, 2)
Update mechanisms
- Mender Mender is a secure and robust software update system designed to handle large number of devices. Mender is designed according to a simple client/server architecture, allowing central management of deployments to all devices.
- RAUC is a lightweight update client that runs on your embedded device and reliably controls the procedure of updating your device with a new firmware revision