在Linux下的驱动开发和单片机开发有很大的区别,程序调用过程的区别如下:
单片机:应用程序 ==>设备驱动
Linux:应用程序==>设备驱动==>Llinux核心==>控制器驱动(总线驱动)
产生以上区别的主要原因是:
1、单片机:每个厂商的每颗芯片都有相应的库可供开发者调用,当一个新的外设需要开发驱动,开发者只需把外设厂商提供的设备驱动修改读写相关函数即可与单片机匹配通信。
2、Linux:Linux是一个操作系统,它得面对各种主控芯片、各种外设芯片,为增强Linux的兼容性,Linux核心对上层应用和底层驱动都提供了统一的接口 ,一般的嵌入式Linux驱动开发主要写的还是应用程序和设备驱动部分的开发。控制器驱动(总线驱动)部分是由主控芯片产商提供。和单片机设备驱动开发的区别在于单片机直接对应外设驱动,Linux设备驱动调用Linux核心提供的接口,Linux核心再调用相应的控制器驱动(总线驱动)。
Linux应用程序:在Linux下万物皆文件。应用程序与外设通信都是调用的文件读写程序。
Linux设备驱动:编写Linux设备驱动要按照linux制定的规则来做,①编写打开、关闭、读、写文件的调用的函数。②调用Linux核心提供的接口
在Linux设备驱动编写好之后,将设备驱动编译为模块(.ko结尾),再将模块变为Linux的设备,此时应用程序就可以调用"文件"(设备驱动)了