Zwykle pod pojęciem mikrosterownik rozumie się mały system komputerowy zintegrowany w pojedynczym układzie scalonym. Zawiera on procesor, pamięć i układy wejscia/wyjścia. Mikrosterowniki są masowo stosowane do sterowania różnymi urządzeniami jak pralki czy kuchenki mikrofalowe i jako części większych systemów.

Często pojęcie mikrosterownika rozszerza się na płytkę drukowaną czy wręcz gotowy produkt (sterownik) bazowany na scalonym mikrosterowniku. Mikrosterowniki pozwalają zbudować komputer na pojedynczej płytce drukowaniej (ang, SBC ). Przy tym SBC, nawet jeśli nie jest oparty na jednoukładowym mikrosterowniku często może spełniać podobne funkcje. Np. Raspberry Pi jest konstrukcją pośrednią między klasycznym komputerem (używającym wielu układów) a mikrosterownikiem: procesor i pamięć Raspberry Pi są w odzielnych układach, ale zamontowanych na płytce tak że wyglądają jak jeden układ. Ponadto większość urządzeń jest wbudowana w procesor, ale jest oddzielny hub USB i interfejs Ethernetu. Małe rozmiary, niska cena, relatywnie niski pobór mocy (choć większy niż typowe mikrosterowniki) i dostępność linii wejścia/wyjścia pozwalają niekiedy stosować Raspberry Pi zamiast płytki z mikrosterownikiem. Ze względu na to że sercem mikrosterownika jest procesor niżej często będę używał słowo procesor zamiast mikrosterownik.

Zwykle jest ważne obniżenie kosztu, rozmiarów i poboru mocy mikrosterownika. Toteż stosuje się możliwie mały mikrosterownik. Ze względu na specyfikę zastosowań mikrosterowniki zwykle nie mają urządzeń zewnętrznych takich jak komputery PC. Zwykle też są zbyt małe by użyć na nich system operacyjny i interferjs użytkownika jak na PC. Również umieszczanie kompilatora w mikrosterowniku jest rzadkością -- kompilator konkuruje wtedy z programem użytkowym o zasoby. Ponadto kompilator który jest dostatecznie mały by się zmieścić w mikrosterowniku często generuje kod wynikowy niskiej jakości.

Powyższe oznacza że potrzebna jest inna metodologia programowania mikrosterowników w porównaniu z komputerami PC. Po pierwsze, program kompiluje się na komputerze PC używając specjalny kompilator który generuje kod wynikowy dla mikrosterownika (nazywa się to kompilacją skrośną). Następnie trzeba taki program załadować do mikrosterownika. Po wystartowaniu programu obserwuje się jego działanie i koryguje ewentualne błędy. W uruchamianiu programu pomocna jest możliwość jego zatrzymania i sprawdzenia zawartości zmiennych. Używa się też śledzenie pracy krok po kroku.

W przeszłości najlepsze wsparcie dla uruchamiania programów dawały symulatory pracujące na komputerze PC i pozwalające na uzyskanie informacji które bezpośrednio nie były dostępne. Jednakże nowoczesne procesory zawierają specjalny interfejs pozwalający na zatrzymanie programu i sprawdzanie stanu procesora/urządzeń. Aby to wykorzystać używa się płytki uruchomieniowe . Dostępne dla nas płytki podłącza się do komputera PC przez interfejs USB.

Jako kompilator skrośny będziemy używać kompilatora gcc. Dla interesujących nas procesorów, tzn. MSP430, AVR (w Arduino) i ARM (w Stellaris Launchpad, STM32F4 Discovery i Raspberry Pi) gcc generuje kod dobrej jakości. Uruchamianie można prowadzić przy pomocy narzędzi linii polecenia. Jest też graficzny interfejs pod nazwą Arduino (dla Arduino) i Energia (dla MSP430 i Stellaris Launchpad).