依据设备的不同特性,,大体可分为:char driver、serial driver、bLOCk driver、end driver、scsi driver等类型,其间以char driver最简略,最根底,以serial driver最常用。把握的根本作业流程,不管对咱们开发上层的使用仍是自己编写相应的驱动程序,都很有协助。本文首要以i8250串口驱动程序为例,介绍一下串行驱动程序编写的根本思路。
驱动程序,简而言之便是对详细的硬件设备做办理和服务的程序。为了更好的进步代码的可移植性,vxworks将一切的输入/输出设备都看成是一个文件,咱们对设备的输入/输出操作,都能够看作是对指定文件的读写操作。例如,咱们用c 规范库函数open()翻开一个文件,可所以翻开一个传统意义上的文本文件,也可所以指定一个输入/输出设备,如指定对某一个串口的输入/输出操作。在vxworks操作体系中,驱动程序的最大的作用是完结对相关设备的读、写、翻开、树立、封闭及操控等功用中的一项或几项,详细情况视详细的设备及规划的根本要求而定。
咱们就依照这一个思路,以I8250串口为例,剖析一下串行设备驱动程序的编写及加载流程。首要,给出串行设备驱动的结构框图:
需求阐明的是,ttyDrv是一个虚拟的设备驱动,与tylib一同,用于处理I/O体系与底层实践设备之间的通讯。首要完结以下作业:
下面,咱们结合图(一)给出的框图,以i8250为例,开端剖析串行设备驱动的规划流程。用户在编写自己的驱动程序时,能够不依照体系函数命名的方法命名,也能够不依照体系给定的方法来进行函数功用的区分,但其初始化及完结流程却不能改动。
本函数完结的首要任务是初始化设备的中断向量、串口的通讯形式及相关存贮器,在函数的最终调用i8250HrdInit()对I8250_CHAN结构进一步初始化。