I've recently been trying to better my understanding of core Linux concepts, and I want to test that knowledge... so, please help me out by critiquing my understanding of Firmware and Drivers.
From what I've read, firmware is the code that makes hardware actually function on the lowest level, and it provides an API to simplify the general actions hardware can perform... like a speaker raising and lowering volume by altering input voltages. Then a driver's built to interact with that API endpoint to provide abstracted functionality of the hardware to the kernel.
I think of this like interacting with a website. The website backend, like firmware, provides API endpoints for interacting with the websites core functionality (like reading and writing to and from databases). Then an example of a driver would be your browser & search engine interacting with the backend API to provide you with web pages, or to upload your data.
I use to wonder why drivers didn't just interact with the hardware themselves, removing the need for firmware... but this would be the equivalent of your browser having to know how to run an sql query for user data on your websites backend, instead of having a backend API built by someone who can specifiy exactly how the database(s) should be interacted with, preventing any unsafe operations.
[link] [comments]