Apa itu "firmware" dalam terminologi Linux?

14

Saya bingung dengan penggunaan firmware dalam konteks Linux.

Pemahaman saya tentang firmware & driver adalah firmware adalah kode yang berjalan pada logam telanjang perangkat seperti Bluetooth IC, atau keyboard controller, atau kartu video, atau micro-controller satu tujuan. Firmware memaparkan antarmuka untuk OS untuk menggunakan layanannya.

Driver, sebagai perbandingan, adalah perangkat lunak yang digunakan kernel untuk berkomunikasi dengan antarmuka yang disebutkan sebelumnya yang disediakan oleh firmware. Jadi, driver video, driver keyboard, driver radio bluetooth.

Jadi mengapa saya terus membaca tentang file firmware Linux yang harus diinstal (mis. Sini ). Apakah ini diunggah ke perangkat keras? Apakah file-file ini digunakan oleh kernel? Apa arti dari firmware dalam konteks ini?

wopwop
sumber
1
Secara umum: Perangkat lunak adalah sebuah program. Perangkat keras adalah perangkat fisik. Firmware adalah program yang diintegrasikan ke dalam perangkat keras; biasanya untuk tujuan mengkonfigurasi cara kerja perangkat keras (jadi itu adalah semacam antara perangkat lunak dan perangkat keras, seperti halnya 'perusahaan' antara 'lunak' dan 'keras' pada skala tanpa hambatan). Secara umum, firmware adalah OS-agnostik (misalnya, konfigurasi RAID pada pengontrol RAID SCSI).
DopeGhoti
Hanya untuk menambah komentar DopeGhoti, banyak perangkat sekarang memungkinkan pemuatan firmware langsung membuatnya lebih fleksibel / evolutif daripada implementasi tetap.
Julie Pelletier
1
@DopeGhoti tidak hanya mengkonfigurasi perangkat keras, tetapi juga berjalan pada perangkat keras. Beberapa firmware memang sangat kompleks dan pada dasarnya menjalankan OS mini.
Stephen Kitt
Saya setuju, meskipun saya akan menyatakan bahwa "perangkat lunak terintegrasi ke dalam perangkat keras" menyiratkan bahwa perangkat keras adalah perangkat yang digunakan untuk menjalankan perangkat lunak tersebut. (:
DopeGhoti

Jawaban:

21

Dalam konteks kernel Linux, firmware adalah perangkat lunak yang berjalan pada prosesor lain dalam sistem, misalnya pengontrol nirkabel, GPU, pengontrol SCSI ... Perangkat lunak ini digunakan untuk disimpan dalam ROM (dari berbagai jenis) yang terpasang pada pengontrol yang relevan , tetapi untuk mengurangi biaya dan membuat peningkatan lebih mudah, pengendali sekarang cenderung mengandalkan sistem operasi host untuk memuat firmware mereka.

Jadi file firmware tidak digunakan oleh kernel, mereka dimuat oleh kernel ke perangkat keras lainnya. Ini juga yang membuatnya samar-samar dapat diterima untuk memiliki perangkat lunak tanpa kode sumber dalam sistem FLOSS: argumennya bahwa itu tidak berjalan pada CPU utama tetapi pada perangkat lain.

Stephen Kitt
sumber
1
Anda menjadi sangat baik hati dengan penggunaan "bisa diterima secara samar".
Rui F Ribeiro
2
Tidak semua orang bisa menjadi RMS.
DopeGhoti
Itu bukan hanya dalam konteks kernel Linux, itu definisi yang cukup umum dari "firmware" dalam konteks sistem multi-prosesor.
Gilles 'SANGAT berhenti menjadi jahat'
Jadi apakah / etc / lib / firmwares benar-benar berisi firmware dan bukan driver yang dimuat oleh kernel saat boot? Tetapi pengontrol nirkabel dan kartu grafis memiliki ROM sendiri dengan firmware yang dibakar oleh pabrikan.
defalt
3
@ jelas ya, /lib/firmware(tunggal, tidak /etc) berisi firmware yang digunakan oleh perangkat lain. Banyak perangkat (termasuk pengontrol nirkabel dan GPU) memerlukan firmware yang disediakan oleh sistem host, walaupun mereka mungkin memiliki ROM (atau flash) sendiri yang berisi firmware.
Stephen Kitt