通俗的讲:

固件:嵌入式的底层系统,就像PC上安装的xp操作系统。

驱动:一种对系统和硬件服务的,对其起着协调,联结,交互作用的软件。

 

下面是摘自《硬件/固件接口设计--提高嵌入式系统开发效率的最佳实践》说明

固件和设备驱动程序

固件是指为嵌入式系统产品构建且存储在非易失存储器(如ROM、EPROM、E2PROM或FLASH)上的软件。这些存储器可能位于片上,也可能位于片外。工业界也将固件称为"嵌入式软件"或者"底层软件"。主要的固件组成部分有可能包括操作系统(OS)、内核、设备驱动程序及应用程序代码等。

术语"固件"在工业界还有本书未涉及的其他含义。比如,对于某些人,固件是指运行在微处理器上的微代码,它们会执行汇编语言指令。而在另一些领域中,固件是指下载到FPGA且需要烧录的代码。本书中的固件不是指这些微代码或者FPGA的可编程代码。

固件还可以包含操作系统,如RTOS(Real-Time Operation System,实时操作系统)。操作系统既可以是商用产品,如嵌入式Windows?、Linux?以及VxWorks?,也可以是自己开发的。有些轻量级的嵌入式系统并不使用操作系统,而是直接执行固件。

设备驱动程序是与芯片交互的专用固件组件。在有些系统中,它们被称为BIOS(Basic Input/Output System,基本输入/输出系统)或者底层代码。设备驱动程序可以读写寄存器并响应中断。固件上的应用程序通过设备驱动程序来访问硬件。

术语"driver"对于硬件工程师还有其他含义,比如电流驱动器或缓冲驱动器。在计算机领域,"驱动程序(driver)"还指安装在计算机上管理外设(如打印机)的软件模块。在本书中,术语"驱动程序"专指"设备驱动程序"。

通常每块芯片上的组件都有一个设备驱动程序。该图中有一个固件和一块芯片。该芯片包含数个组件,而固件也包含数个应用程序及设备驱动程序。

固件与驱动的区别_固件 驱动

例如,用上图来描述激光打印机是如何打印一页的。假设组件A是USB组件,它负责接收来自打印任务的数据包。驱动程序A读取来自组件A的接收数据包,并将它们交给应用程序A。应用程序A组装所有的数据包,并且等到接收足够一页的数据包时,将数据提交给另一个应用程序,如调用光栅应用程序、数据压缩应用程序等的打印任务解释器。最终应用程序B得到光栅数据,并提交给驱动程序B,而驱动程序B再配置组件B的寄存器,并用这些数据来控制激光。

上图所示的固件架构只是一种可能的情况,下图给出了另一种可能的架构。

固件与驱动的区别_固件 驱动_02