Oprogramowanie wbudowane jest bardzo różne.
W aplikacji komputerowej abstrakcje i biblioteki oszczędzają dużo czasu na programowanie. Masz problem z rzuceniem kolejnej pary megabajtów lub gigabajtów pamięci RAM lub niektórych 64-bitowych rdzeni procesora 2 + GHz na problem, a ktoś inny (użytkownicy) płaci za ten sprzęt. Możesz nie wiedzieć, na jakich systemach aplikacja będzie działać.
W projekcie osadzonym zasoby są często bardzo ograniczone. W jednym projekcie, nad którym pracowałem (procesory z serii PIC 17X), sprzęt miał 2 słowa pamięci programu, 8 poziomów stosu (sprzętowego) i 192 bajty (<0,2 kB) pamięci RAM. Różne piny we / wy miały różne możliwości i skonfigurowałeś sprzęt w razie potrzeby, pisząc do rejestrów sprzętowych. Debugowanie obejmuje oscyloskop i analizator logiki.
W osadzonych abstrakcjach często przeszkadza i zarządza (i kosztuje) zasoby, których nie masz. Np. Większość systemów osadzonych nie ma systemu plików. Kuchenki mikrofalowe to systemy wbudowane. Sterowniki silnika samochodowego. Niektóre elektryczne szczoteczki do zębów. Niektóre słuchawki z redukcją szumów.
Jednym z bardzo ważnych dla mnie czynników przy tworzeniu systemów wbudowanych jest znajomość i kontrolowanie tego, co kod przekłada się na instrukcje, zasoby, pamięć i czas wykonania. Często dokładna sekwencja instrukcji steruje np. Synchronizacją przebiegów interfejsów sprzętowych.
Abstrakcje i „magia” za kulisami (np. Śmieci) jest świetna do aplikacji komputerowych. Śmieciarki oszczędzają dużo czasu, ścigając wycieki pamięci, gdy pamięć jest / może być dynamicznie przydzielana.
Jednak w świecie osadzonym w czasie rzeczywistym musimy wiedzieć i kontrolować, jak długo to trwa, czasem nawet do nanosekund, i nie możemy rzucić kolejnego megabajta pamięci RAM lub szybszego procesora na problem. Jeden prosty przykład: przy programowym przyciemnianiu diod LED przez kontrolowanie cyklu pracy (CPU miał tylko kontrolę włączania / wyłączania diod LED), NIE jest OK, aby procesor zgasł i wykonał np. Usuwanie śmieci na 100 ms, ponieważ wyświetlacz byłby widoczny błyskaj jasno lub gaśnie.
Bardziej hipotetycznym przykładem jest sterownik silnika, który bezpośrednio odpala świece zapłonowe. Jeśli ten procesor się wyłączy i zbierze śmieci na 50 ms, silnik wyłączyłby się na chwilę lub uruchomiłby niewłaściwe położenie wału korbowego, potencjalnie blokując silnik (podczas przejeżdżania?) Lub uszkadzając go mechanicznie. Możesz kogoś zabić.