Wszystkie omawiane dotąd urządzenia byłyby bezużyteczne bez czegoś, co definiuje ich funkcjonalność. W systemach opartych na mikrokontrolerach/mikroprocesorach oprogramowanie definiuje możliwości i tchnie życie w system. Bootloader jest używany do inicjalizacji procesora i uruchomienia oprogramowania systemowego. Oprogramowanie systemowe dla tych systemów zazwyczaj mieści się w jednym z tych trzech scenariuszy:
- Brak systemu operacyjnego W przypadku prostych systemów
- System operacyjny czasu rzeczywistego W przypadku systemów ze sztywnymi wymaganiami czasowymi przetwarzania (na przykład VxWorks i Nucleus)
• Ogólny system operacyjny W przypadku systemów, które zazwyczaj nie mają ograniczeń czasowych i mają wiele wymagań funkcjonalnych (na przykład Linux i Embedded Windows)