关于驱动的理解

所有外设的操作对于cpu内核来说都是对一段内存地址(寄存器)进行的读写操作,与普通内存的读写没有区别。如果没有驱动程序,应用层软件开发人员在想要使用这些外设时,就需要去学习了解这个外设具体信息、寄存器操作方法等等,这是一件非常繁琐的工作。直接进行寄存器操作,也极不安全,甚至可能造成硬件的损坏。另外,类似功能的不同型号外设,其寄存器配置可能完全不同,这也不利于提高程序的通用性和可移植性。因此在系统层面定义了驱动框架,然后针对特定型号硬件编写符合框架的驱动程序。这样在应用程序开发时,可以不用关注硬件底层,而只需简单调用系统api,即可操作硬件。通过驱动程序,可以将系统api调用逐渐转换成对硬件底层的寄存器操作。例如嵌入式上经常使用摄像头,进行视频拍摄。在linux系统下,应用程序中会调用v4l2这个驱动框架中的api进行摄像头的操作,如读取视频帧、感光度曝光设置、白平衡设置、分辨率设置等等。应用程序中使用了系统api,不论采用了何种硬件,不管是usb的摄像头、还是排线连接的gc0308摄像头都可以很好的操作。实际上usb摄像头还有gc0308摄像头都有各自对应的驱动程序,这些驱动程序满足v4l2框架,接收由v4l2框架传递过来的参数,并转换成寄存器操作,实现操作硬件。因此可以看出驱动程序和驱动框架将用户和系统底层硬件隔离开,能够大大提高应用程序的开发速度和通用性。
■网友
对于单片机之类驱动底层硬件就是配置芯片里边的寄存器,对于传输通信的驱动,驱动就是协议,双方规定好的,然后按照协议工作。
■网友
驱动的作用正如其名,驱动外设干活。 只要外设能工作,就一定有“驱动”这样代码存在。题主,你所说的驱动我猜想是驱动程序吧? 在软件工程领域,一个系统需要模块化,这样利于以后的维护和扩展。所以,一般情况下把驱动单独隔离出来作为单独的模块。这样驱动在一个操作系统中的地位就是: 【关于驱动的理解】 关于驱动的理解

图片来源于:What is a driver? (Windows Drivers)延伸阅读:1. Device driver2. What is a device driver
■网友
楼主所理解的软件“驱动”是软件为了驱动硬件正常工作所采用的一种规程或者范式。无论是OS下还是裸机情况下,都需要遵循这种规程才能使硬件正常工作。而楼主所理解的“能不能不要驱动直接使用接口或者总线”,你可以再深入地问自己,如果不要“驱动”,那怎么才能“直接使用接口或者总线呢”。而这个“怎么样”,就是所谓的驱动。


    推荐阅读