inż. Dariusz Mikiel
Oprogramowanie układowe potocznie określane jako firmware jest wewnętrznym mikrokodem sterującym danym urządzeniem, fabrycznie wbudowanym i opracowanym przez producenta. Zwykle zaszyty jest w układzie elektronicznym wewnątrz urządzenia.

Firmware w zależności od stopnia skomplikowania danego urządzenia sieciowego, multimedialnego, podzespołu komputerowego czy pamięci masowej może być niewielkim programem, który zwykle jest rodzajem BIOS'u, startującym urządzenie i określającym jego ustawienia fabryczne lub rozległym systemem sterującym jaki ma miejsce np. w dysku twardym.

Producenci urządzeń elektronicznych dzięki jego ulepszaniu z produktu na produkt lub w obrębie tego samego urządzenia, mogą poprawiać błędy pojawiające się podczas jego eksploatacji. Modyfikacje firmware'u mogą wpływać także na poprawę zgodności z systemami operacyjnymi różnych producentów jak Microsoft czy Apple a także kompatybilności sprzętowej z producentami komputerów takimi jak Dell czy Hewlett-Packard.

Ponadto ulepszanie firmware'u stosowane jest także ze względu na poprawę parametrów pracy takich jak wydajność, zakres funkcji, hałas czy temperaturę. Jeżeli producent oferuje narzędzia do kontroli wersji firmware'u w dysku, użytkownik czy właściciel urządzenia może wykonać aktualizację mikrokodu we własnym zakresie.


Dyski twarde podobnie jak komputer posiadają swój system operacyjny znany jako wewnętrzny firmware. Jego mikrokod odpowiedzialny jest za natychmiastową i bezbłędną inicjalizację dysku, tak aby wszedł w stan gotowości i został wykryty przez komputer. W przypadku błędów w działaniu firmware'u detekcja dysku może zostać pominięta lub może być on całkowicie niewykrywany. W oprogramowaniu układowym dysku twardego możemy wyróżnić:

PCB firmware:

Elektronika dysku umieszczona na zewnętrznej płytce drukowanej PCB (ang. Printed Circuit Board) jest jego płytą główną. Podobnie jak w komputerze znajdziemy na niej procesor oraz pamięć RAM. PCB nie jest jedynie zbiorem komponentów elektronicznych ale zawiera w sobie także część firmware'u odpowiedzialnego za rozruch (ang. boot-strapping) i załadowanie "systemu operacyjnego" do pamięci. W tym przede wszystkim za uruchomienie silnika oraz głowic. Mikrokod zwykle zaszyty jest w pamięci ROM (ang. Read Only Memory) z podstawką TSOP lub SOIC, w pamięci NVRAM a także w masce procesora.

Disk Firmware:

Obszarem z którego ładowana jest zasadnicza część mikrokodu to specjalnie wydzielona część powierzchni platera, niewidoczna dla użytkownika. Obszar ten określany jest potocznie jako Strefa Serwisowa (ang. Service Area) a także jako "Reserved Area", "System Area", "Firmware Area", "Microcode Area" czy "Negative Sectors".

Strefa serwisowa dysku składa się z mikrokodu oraz modułów programowych odpowiedzialnych za konkretne funkcje. Należą do nich m.in. analiza kondycji dysku S.M.A.R.T (ang. Self-Monitoring, Analysis and Reporting Technology), translacja fizycznych adresów sektorów na postać logiczną LBA (ang. Logical Block Address), kontrola nieczytelnych lub trwale uszkodzonych sektorów tzw. bad sectors w modułach P-list oraz G-list, funkcje kontroli bezpieczeństwa oraz wiele innych. Moduł S.M.A.R.T oraz moduł translatora zwykle odpowiedzialne są za usterki w dyskach Seagate, w tym głównie w serii Barracuda 7200.11.

Dostęp do zarezerwowanej przestrzeni dysku może odbywać się jedynie poprzez specjalne komendy technologiczne VSC (ang. Vendor Specific Commands), nieujawniane przez producentów dysków. Nie powinien być także mylony z obszarem DCO (ang. Device configuration overlay) czy HPA (ang. Host Protected Area), do których dostęp zapewniają komendy ATA dysku, powszechnie używane do odczytu danych. Przestrzeń serwisowa dysku jest także poza logiczną adresacją LBA.

Firmware ze względu na złożoność dysków staje się coraz bardziej rozbudowany. Jego wielkość jest bardzo zróżnicowana w zależności od producenta, rodziny dysków, pojemności a także wersji firmware'u. Dla przykładu w dysku Western Digital WD10EACS-00ZJB0 o pojemności 1 TB, należącym do rodziny Hulk obszar serwisowy zajmuje 26 MB. W połączeniu z kopią bezpieczeństwa oraz obszarem zarezerwowanym na każdym platerze daje nam to w przybliżeniu około 450 MB (52 MB w użyciu).