驱动程序的本质是什么？
驱动程序的本质是什么？为什么需要驱动程序？所有硬件都需要驱动程序吗？  
请从计算机科学技术或者工业界实践的角度回答，谢谢！  
那些说“因为不装驱动显卡分辨率低”的答案就算了，没有技术含量。
一句话结论:就是与io接口传送数据的程序。

计算机遵循冯.诺依曼结构。

## 1.计算机有IO模块

计算机由CPU+MEM存储器+"很多IO模块" 组成。

或，MCU微控制器由CPU+MEM存储器(flash，RAM，EEPROM)+多个"基本IO模块" 组成。做成单片，也叫单片机。

用户还可以增加"应用级IO模块"。

有IO模块，就要有对应的程序！

## 2.驱动程序的本质！

CPU要与IO模块传送数据，要编程，这个与IO模块传送数据的程序就是"驱动程序"。

驱动程序的本质，就是与IO模块传送数据的程序！

厂家提供的IO驱动:MCU内部基本IO模块的驱动程序，已经由MCU制造厂家提供，直接用就行。PC机的IO驱动，安装操作系统时，通用的IO驱动已经包括，特殊的IO驱动单独安装。

用户自编的IO驱动: 用户增加的应用级IO模块，用户要重新做驱动。也可能会依赖于厂家提供的基本IO驱动程序，来编制用户的IO驱动程序。

如，带有SPI接口的MCU，MCU制造厂家已经提供SPI接口的基本驱动，而应用时，外部可能会使用有SPI接口的特殊芯片，就要按这个特殊芯片的数据手册，针对这个特殊芯片再编制芯片的驱动程序(也就是设置、读、写这个芯片的程序)。

## 3.硬件抽象层

所有IO驱动程序，也叫板级支持包，BSP。这层是与硬件相关的代码。

抽象出硬件抽象层，只留软件接口，上层只用软件接口。

而其上层的操作系统，和应用程序，是与硬件无关的代码，可以移植到不同的MCU上。