Co to jest „oprogramowanie układowe” w terminologii Linuksa?

15

Używam oprogramowania układowego w kontekście systemu Linux.

Rozumiem, że oprogramowanie układowe i sterownik są takie, że oprogramowanie układowe to kod działający na gołym metalu urządzenia, takiego jak układ scalony Bluetooth, kontroler klawiatury, karta graficzna lub mikrokontroler jednofunkcyjny. Oprogramowanie układowe udostępnia interfejs systemu operacyjnego do korzystania z jego usług.

Dla porównania, sterownik jest oprogramowaniem używanym przez jądro do komunikacji z wcześniej wspomnianymi interfejsami dostarczanymi przez oprogramowanie układowe. Tak więc sterownik wideo, sterownik klawiatury, sterownik radia Bluetooth.

Dlaczego więc wciąż czytam o plikach oprogramowania Linux, które należy zainstalować (np. Tutaj ). Czy są one przesyłane do sprzętu? Czy te pliki są używane przez jądro? Jakie znaczenie ma oprogramowanie układowe w tym kontekście?

wopwop
źródło
1
Ogólnie rzecz biorąc: Oprogramowanie to program. Sprzęt to urządzenie fizyczne. Firmware to program zintegrowany ze sprzętem; zazwyczaj w celu konfiguracji działania sprzętu (więc jest to coś w rodzaju oprogramowania i sprzętu, tak jak „twarde” jest między „miękkim” a „twardym” w skali bluntless). Zasadniczo oprogramowanie układowe jest niezależne od systemu operacyjnego (na przykład konfiguracja RAID na kontrolerze SCSI RAID).
DopeGhoti 19.04.17
Aby dodać do komentarza DopeGhoti, wiele urządzeń umożliwia teraz ładowanie oprogramowania układowego na żywo, co czyni je bardziej elastycznymi / ewolucyjnymi niż stałe implementacje.
Julie Pelletier,
1
@DopeGhoti nie tylko konfiguruje sprzęt, ale działa na sprzęcie. Niektóre oprogramowanie układowe jest naprawdę bardzo złożone i zasadniczo działa w systemie mini-OS.
Stephen Kitt,
Zgadzam się, choć twierdzę, że „oprogramowanie zintegrowane ze sprzętem” oznacza, że ​​sprzęt jest tym, na którym działa to oprogramowanie. (:
DopeGhoti

Odpowiedzi:

23

W kontekście jądra Linux oprogramowanie układowe działa na innym procesorze w systemie, np. Kontrolerze bezprzewodowym, GPU, kontrolerze SCSI ... To oprogramowanie było przechowywane w pamięci ROM (różnych typów) podłączonej do odpowiedniego kontrolera , ale aby obniżyć koszty i uprościć aktualizacje, kontrolery zwykle polegają na systemie operacyjnym hosta, aby załadować dla nich oprogramowanie układowe.

Tak więc pliki oprogramowania układowego nie są używane przez jądro, są one ładowane przez jądro na inne elementy sprzętu. To właśnie sprawia, że ​​w systemach FLOSS nie ma akceptacji, aby mieć oprogramowanie bez kodu źródłowego: argumentem jest, że nie działa ono na głównym procesorze, ale na innym urządzeniu.

Stephen Kitt
źródło
1
Jesteś bardzo życzliwy, kiedy używasz „niejasno akceptowalnego”.
Rui F Ribeiro
2
Nie każdy może być RMS.
DopeGhoti
Nie dotyczy to tylko jądra Linuksa, jest to dość ogólna definicja „oprogramowania układowego” w kontekście systemu wieloprocesorowego.
Gilles „SO- przestań być zły”
Czy więc / etc / lib / firmwares zawiera oprogramowanie wewnętrzne, a nie sterowniki ładowane przez jądro podczas uruchamiania? Ale kontroler bezprzewodowy i karty graficzne mają własną pamięć ROM z oprogramowaniem wbudowanym przez producenta.
defaltować
3
@defalt tak, /lib/firmware(liczba pojedyncza, nie /etc) zawiera oprogramowanie wewnętrzne używane przez inne urządzenia. Wiele urządzeń (w tym kontrolery bezprzewodowe i procesory graficzne) potrzebuje oprogramowania układowego dostarczonego przez system hosta, nawet jeśli może mieć własną pamięć ROM (lub flash) zawierającą oprogramowanie układowe.
Stephen Kitt