1 .对设备驱动通俗的解释:驱动硬件设备行动。设备驱动与底层硬件直接打交道,按照硬件设备的具体工作方式读写设备寄存器,完成设备的轮询,中断处理,DMA通信,进行物理内存向虚拟内存的映射,最终使通信设备能够收发数据,使显示设备能够显示文字和画面,使存储设备能够记录文件和数据。
2.关于有操作系统和没有操作系统的区别:
有时候操作系统是不必的,对于一些功能单一,控制并不复杂的系统,只需要在一个无限循环中包含设备中断的检测或者设备的轮询就可以了,比如公交刷卡机,电冰箱,微波炉,简单的手机和小灵通。
当功能很多的时候,需要多进程并发,就需要进程的调度,文件系统的管理,内存的管理等。这时候操作系统就需要了。
3.设备的分类:字符设备 必须以串行顺序依次进行访问的设备,就是说不能跳跃式的访问数据,只能一个接着一个的访问 如键盘 触摸屏 鼠标
块设备 可以任意顺序访问 如硬盘 软驱等
网络设备 面向数据包的接受和发行而设计 与字符设备 块设备都完全不同
也有一些像字符设备 也像块设备的 如flash 所以字符设备与块设备的界限不是很明显
4.linux设备驱动与整个软硬件系统的关系
从上图可知:一个应用软件可以直接使用操作系统向上提供的API,比如read(),write()等函数
应用软件用到c库,c库再调用驱动接口也是可以的,比如printf函数,要在屏幕上显示,当然与LCD驱动有关
5.关于学习驱动设计所需的基础
- 懂得SRAM FLASH SDRAM 磁盘的读写方式
- UART I2C USB设备的接口
- 轮询中断 DMA的原理 PCI总线的工作方式
- 内存管理单元MMU