The term embedded or embedded systems can be interpreted in several ways depending on your background, knowledge, and exposure to embedded technology. For the purpose of this document, firmware is defined as the software layer between the underlying hardware and the operating system (OS). The main purpose of firmware is to initialize and abstract enough hardware so operating systems drivers and components can further configure the hardware according to its functionality. In addition to firmware, embedded systems can be defined as having the characteristics described below.
- Limited resources
- 16KB - 1GB RAM
- 32MB - 4GB Flash storage
- System-on-chip (SoC)
- System-on-module (SoM)
- Microcontroller (MCU)
- Das U-boot
- RedBoot
- CoreBoot
- Grub
- Little Kernel
- and more
- Word lengths from 8-bit, 16-bit, 32-bit, and 64-bit
- ARM
- MIPS
- AVR
- PowerPC
- x86
- Embedded Linux
- OpenWrt variants
- Android
- Ubuntu Core
- RTOS (Microkernel)
- FreeRTOS
- Mbed OS
- QNX
- AUTOSAR
- INTEGRITY
- BareMetal
- Windows
- Windows Compact 2016
- Windows Compact 7
- Windows 10 IoT
- Assembly
- C / C++
- Python
- Classic ASP
- PHP
- Perl
- Lua
- Golang (Go)
- Rust
- Sometimes immortal 😉
- *Some flash chips use a disclaimer of 20 years data retention*
- "Trustworthy" systems
- Vehicles ~7-15 years