W systemie komputerowym , o firmware (lub oprogramowania , oprogramowania , mikrokodu , wewnętrzne oprogramowanie lub nawet wbudowane oprogramowanie ) jest programem zintegrowane w sprzęt komputerowy ( komputer , kopiarka , PLC ( API , APS ), dysk twardy , ruter , aparat cyfrowy , itp.), aby działał.
Angielskie oprogramowanie sprzętowe pochodzi od firmy („odporność” lub „firma” w języku angielskim) i oprogramowania ( oprogramowanie , program komputerowy). Firmowy jest stanem pośrednim między miękkim („miękkim”) a twardym (odniesienie do sprzętu lub sprzętu komputerowego ). Pierwszym oprogramowaniem układowym był mikrokod, a jego użycie rozszerzyło termin na dowolną formę oprogramowania podstawowego, przechowywanego w pamięci ROM odpornej na awarie zasilania .
Oprogramowanie układowe umożliwia ewolucję sprzętu (poprzez aktualizacje ), integrację nowych funkcji bez konieczności całkowitej zmiany projektu sprzętu .
Pamięć , w której firmware zamieszkuje może być:
W większości przypadków to oprogramowanie zarządza wewnętrznym funkcjonowaniem systemu elektronicznego .
Ogólnie oprogramowanie układowe łączy w sobie zalety oprogramowania, które można modyfikować, i sprzętu, który jest bardziej wydajny. Z drugiej strony oprogramowanie układowe współdziała z komponentami sprzętowymi, których nie można już zmienić po wyprodukowaniu, co zmniejsza potrzebę ich aktualizacji.
Można zauważyć, że:
Jednak dwa poprzednie przypadki są czasami spełnione, na przykład, gdy pamięć ROM urządzenia zawiera część systemu BIOS komputera, a także oprogramowanie układowe przeznaczone do zarządzania tym urządzeniem. Nawiasem mówiąc, umożliwia to pomiar stopnia niezależności urządzenia peryferyjnego od typu komputera głównego, ponieważ każde rozszerzenie wyposażone w BIOS komputera może być używane tylko na komputerze tego typu, podczas gdy te, które używają tylko oprogramowania układowego, są niezależne od komputera głównego. Tak jest na przykład w przypadku czytników / nagrywarek CD / DVD IDE, które są zgodne ze standardem ATAPI i dlatego działają na dowolnej maszynie IDE (PC, Mac itp.)
Znanych jest kilka architektur w zależności od obszaru zastosowania oprogramowania układowego , począwszy od komputerów lub sprzętu o dużej użyteczności, ale także w zależności od rodzaju oprogramowania układowego . Różne architektury oprogramowania układowego są oparte na szynach wejścia-wyjścia. Dlatego należy sprecyzować, że nie ma standardowej architektury ani ustalonego modelu architektury oprogramowania sprzętowego .
Oprogramowanie układowe , podobnie jak wszystkie systemy pamięci, ogólnie charakteryzuje się rozmiarem pamięci, która indukuje flashowanie czasu, przepływem transferu i metodą aktualizacji. Oprogramowanie układowe można podzielić na dwie główne grupy: typ „binarny”, skompresowany lub nie, oraz typ archiwum .
W systemach pokładowych oprogramowanie układowe jest ogólnie zorganizowane tak, jak pokazano na rysunku obok. Podczas procesu uruchamiania obsługiwany jest program ładujący ( bootloader w języku angielskim). Można go uruchomić jako pierwszy, gdy system jest włączony. Rdzeń systemu operacyjnego jest tuż za nim.
Program ładujący inicjuje niezbędny sprzęt i przygotowuje środowiska oprogramowania operacyjnego. W szczegółach dzieli proces ładowania na dwie części. Krok 1 jest ściśle powiązany ze sprzętem.
W pozostałej przestrzeni programy aplikacji są przechowywane i ogólnie uporządkowane według systemu plików i pamięci RAM. Przed rozpoczęciem kroku 2, bootloader zwykle sprawdza pierwszy kod 4 kb załadowany przez sprzęt zgodnie z opisanym procesem uruchamiania.
Następnie zostanie załadowany i uruchomiony krok 2. Ten krok umożliwia uruchomienie bardziej zaawansowanych funkcji. Bootloader inicjuje różne potrzeby sprzętowe (porty, wejścia i wyjścia). Następnie załaduje i uruchomi jądro systemu odpowiedzialne za zarządzanie zasobami systemu, takimi jak różne procesy, zarządzanie pamięcią. W ten sposób system jest uruchamiany, a aplikacje mogą być uruchamiane w oparciu o wartości inicjalizacyjne.
Końcowy użytkownik zazwyczaj nie mają bezpośredniego dostępu do oprogramowania , ale czasami może go zmodyfikować poprzez zainstalowanie aktualizacji do skorzystania z ulepszeń lub błędów poprawek . Aby to zrobić, oprogramowanie układowe musi znajdować się w pewnych typach „reprogramowalnych” pamięci ROM, najczęściej jest to EEPROM lub, od połowy lat 90., pamięć flash (to znaczy EEPROM).
Oprogramowanie układowe może być celem złośliwych działań, które mogą uniemożliwić działanie urządzenia lub użyć go do włamania się do sieci. Podczas EUsecWest 2008 Rich Smith przedstawił możliwość przeprowadzenia permanentnego ataku typu „odmowa usługi” poprzez lukę w zabezpieczeniach systemów aktualizacji oprogramowania sprzętowego słabego sprzętu.
Jeśli taka usterka może zostać wykorzystana w celu przeprowadzenia trwałego ataku typu „odmowa usługi”, wówczas możliwe jest wykorzystanie tej luki w celu wprowadzenia backdoora i przedostania się do systemu informatycznego. Często celem takich ataków jest stale działający sprzęt.
BIOS obecny w PC typu komputery są firmware .
Firmware EFI (z angielskim interfejsem Extensible Firmware ) są wymagane, aby zastąpić BIOS na płycie głównej w komputerze , ponieważ mają one proste programowanie BIOS nie.
Wadą jest dodanie dodatkowej warstwy między sprzętem a użytkownikiem, kompensowanej większą szybkością procesorów i pamięci.