我对在Linux环境中使用固件感到困惑。
我对固件和驱动程序的理解是,固件是在设备的裸机上运行的代码,例如蓝牙IC,键盘控制器,视频卡或单一用途的微控制器。固件公开了一个接口,供操作系统使用其服务。
相比之下,驱动程序是内核用来与固件提供的上述接口进行通信的软件。因此,视频驱动程序,键盘驱动程序,蓝牙无线电驱动程序。
那么,为什么我要继续阅读有关必须安装的Linux固件文件的信息(例如,此处)。这些是否上传到硬件中?这些文件被内核使用吗?在这种情况下,固件是什么意思?
1
一般来说:软件是一个程序。硬件是物理设备。固件是集成到硬件中的程序。通常是为了配置硬件的工作方式(因此,它介于软件和硬件之间,就像“公司”介于“软”和“硬”之间一样,直言不讳)。通常,固件与操作系统无关(例如,SCSI RAID控制器上的RAID配置)。
—
DopeGhoti
只是为了补充DopeGhoti的评论,许多设备现在允许实时固件加载,从而使其比固定实现更灵活/更具发展性。
—
Julie Pelletier
@DopeGhoti它不仅配置硬件,而且还可以在硬件上运行。某些固件确实非常复杂,并且基本上运行微型操作系统。
—
斯蒂芬·基特
我同意,尽管我会断言“将软件集成到硬件中”意味着该硬件就是运行该软件的硬件。(:
—
DopeGhoti '17