基于linux操作系统的多并口驱动研究井冈山学院学报自然科学版陈娅荔井冈【大学电子与信息工程大学,广东,安庆.广州学院共青大学信息工程系,广东,共青城摘要:在介绍基于操作系统的多并口驱动设计理论基础上,重点研究对多并口编程的技术,实现基于的核心设计,可作为实现串终端设备集中管理、实时数据采集的服务器显卡应用。其特性是可以采用平台,但完全兼容平台,用户原先在平台下编撰操作系统的多串驱动的程序只需做一次重新编译即可实现移植,达到基于操作系统的多串:驱动实时通信的目的。关键词:操作系统;多并口驱动;核心中图分类号:文献标示码:同时驱动最多个并口,板上的并口共用中断号,操作系统中并口的编程技术和、板上并口基地址连续。因而,通过合理的结构体设系统下的方式有所不同。本文较为详尽的计可以便捷的实现。表述了在操作系统中并口的驱动编程技术。重点研究多并口驱动通信,本驱动创新点可以通过设计理论手动侦测的方式测出当前是哪些类型的显卡,可以让往中断状态寄存器或其他保留的寄存器位中并口驱动本质上也是字符设备驱动,只是内写一个标记即可,用于惟一标记每一类显卡。
并口核按照其特殊的数据传输过程进行封装,将其文件驱动主要技术是在核心?的基础上实现的,须要封装到操作?收稿日期:;更改日期:一,女,江两安乡人,讲师,硕士linux 安装串口驱动,主要从事计算机软件理论研究:井冈山学院学报自然科学版核心提供插口给应用程序调用,,核心还提供或为空时,都会触发中断,并将寄存器的插口给线路规程和驱动程序使用;因而,在写并口,中断处理程序按照这种值发送驱动时只须要调用仕核心提供的插口,并传入驱数据到并口。,设置。动的处理函数。向核心注册驱动时,核心便会为该驱动并口接收数据过程如图所示,和发送数据一分配设备号,并注册文件操作函数样,并口接收数据也是以字节为单位的,并口通过而在核心中各文件操作函数会调用驱动传入的寄存器接收数据,之后会将数据存入驱动程序同样以字节为单位从中取数据。处理函数,可见真正实现应用程序需求的函数还是驱动程序,核心只是实现一个中转的过程,但,中数据低于某个值都会触发核心中封装了好多并口驱动实现的通用函数,大大中断,并将的,中断简化了并口驱动的编撰。处理程序按照这种值从并口读取数据。的值由寄存器的】设置。
编撰并口驱动主要分以下几个步骤:注册、释放设备驱动当启用了手动硬件流控制时在注册前要对进行形参,在指定设备号、串口个数、操作函数等信息。据大于时LINUX 删除目录,并口会手动通知发送端继续发送数据。使用/恳求发送/消除发送流控制时,应将通信两端的、线对应相连。并口操作函数设置驱动提供的并口操作函数,注册时提供给核心使用,并口操作函数是在中设置的。中断处理函数中断处理函数是并口通信的核心,驱动对并口进行读、写都是通过中断来实现的;并口内部有和,分别用于发送和接收数据。并口数据接收.设计思路多并口驱动基于核心进行的,主要设计以下几个方面:与内核通信这儿的与内核通信实际上是通过核心来实现的,通过向研核心注册驱动告诉内核应当处理并口数据发送那个驱动和应当使用什么处理函数,注册函数如.并口发送数据过程如图所示,通常并口通信;都是基于异步合同的,因而数据是以字节为单位传与应用程序通信输的,当驱动将一个字节数据讲到并口时,会先通字符设备驱动与应用程序通信是通过文件操过寄存器存入,之后通过将数据发送出去,每一个数据的发送时间是个时钟心里实现的。周期。当里的数据高于某一值井冈山学院学报自然科学版可见,应用程序其实是调用核心的文件操内核并口驱动主要是通过以下个链表来实现怍函数,但本质上还是驱动来实现的。
因而,驱动这是一个并口基本信息结构体,结构体中包括等函数。码率、基地址、中断号等信息,在定义时就早已驱动与硬件通信就是操作寄存器,在并口芯片来实现的,这个宏初始化了的中有详尽的说明,多的并口芯片是每位并口的基地址、中断号,这个字段中的初始值,这儿介绍几个驱动中常用的寄存器。就是默认情况下的以可以按照显卡:接收数据寄存器;的并口信息更改该宏的值,实现驱动显卡上:发送数据寄存器;:中断使能寄存器,其中分别对应;中中断;这是一个链表表针,链表大小为,对应于:中断状态寄存器,其中分别代表每位中断号,链表每位元素指向所有共享该中断号读、写中断;的并口信息结构体数组:是一个包含一个已打开并口所有信息的结构体,当打开一个并口等级都在这儿设置;时,会动态创建一个并口信息结构体:线路控制寄存器,设置线路规程,包括:之后按照打开设备的基本信息对这个结数据位,校准位linux 安装串口驱动,停止位等;构体进行初始化,最后将其链入相应数组的于使能硬件流控制输出;低版本内核并口驱动的数据结构模型如图路状态寄存器,其中标记示,在打开设备时,通过打开设备的次设备号和驱是否有数据,动的起始次设备号估算出是第几个并口,因而得到标记是否为并口基本信息;在中断处理程序中,可码率除数寄存器,用于设置波以直接按照中断号获取所有使用该中断号的并口信息,之后对所有并口进行处理。
数据结构设计这儿的数据结构不是指上一节的数据结构,这里是指并口驱动内部的数据组织形式,这种数据结构贯串整个并口驱动程序,合理的设计数据结构和组织形式可以有效地提升驱动的效率,下边分别介绍内核和多并口驱动的数据结构设计和组织形式linux标准教程,并进行比较和剖析。低版本内核数据结构模型数据结构和组织形式的设计要注意以下几个.方面:高版本内核并口驱动的设计思想和低版本内数据结构要能表示并口的所有信息以及运核类似,只是在其基础上进行了一些改进,以行过程中并口的属性;并口驱动为例说明,主要有以下几个数据结构:时要能按照数据结构来判定是哪一个并口,由于有可能一块板上有好多并口;;并口基本信息结构体,类似于内核的中断处理函数中也须要能通过数据结构来结构体,由宏初判定是那个并口形成的中断。内核数据结构设计井冈山学院学报自然科学版构体中。并口信息字段是这样设计的,默认每块主个并口,若显卡并口个数大于则字段的相应结构体,与低版本内核的不同之处在于这儿的结构体是静态分配的。打开并口时,依据设备的次设备号和驱动的次;设备号起始值,估算出打开的是第几个并口,按照这是一个链表,类似于低版本内核的这个就可以直接从并口信息字段中获取并口信息;,链表的内容为包含一个类型变在中断处理程序中,这儿并没有像内核并口驱动中量的结构体,用于指向相同中断号的所有并口的链的中断表针链表,但因为每块板上的并口中断号是表头。
相同的,所以只须要在发生中断时判定是哪块板上多数据结构设计的并口形成的,之后对该板上的并口进行一一判定内核并口驱动的数据结构设计是一种通用的并处理;在恳求中断号时,将板上第一个并口信息设计,目的在于能应用于各类不同的显卡,而多串结构体作为参数传入,然后在中断处理函数中按照口驱动的数据结构完全是针对并口系列显卡设并口信息字段的第个元素来判别属计的,是依据多的特点设计结构体。于哪块显卡。因为每块多显卡的所有并口是有一些共用属函数的实现性的,所以设计一个显卡信息结构体,这个结构体并口驱动中要实现的函数有好多,包括与每块显卡一个,显卡各个并口信息都可以通过此结核心的通信函数,与应用程序的通信函数以及中断构体来设置,结构体定义如下:处理函数,主要函数如下:写一个字符到并口发送写缓冲区中数据:并口共享中断口的码率基数数据通知并口恢复;/最大波特率的并口信息结构体链表,用于保存每位并口规程并口是共用中断号的,并口的基地址是连续的等,/设备挂起,等待再等,所以可以把这种共用的屙生设置在显卡信息结次被/井冈山学院学报自然科学版核心会更新,并将原先的状态位寮/线路规程保存在设置状中,程序按照中的线路规程值这儿挑一些与应用程序联系比较密切的函数设置状态,主要是设置/线进行介绍。
的状态,主要应用于硬件流控制中。中断处理函数当应用程序调用函数打开设备文件时就并口驱动程序的数据传输和接收都是通过中会步入此函数,此函数主要实现打开设备以及对设断来实现的,触发中断的情况有好多,这儿列举几备进行初始化等功能,主要工作如下:个常用的中断触发。当出现以下几种情况时会触发找到打开并口的信息结构体并进行必要的中断:初始化;若设置了寄存器的位,当值初始化并口寄存器,包括启用、中断抵达值时触发读中断,并将寄存器等各类初始化工作;;设置码率、停止位、流控制等线路状态若设置了寄存器的信息;值高于值或为空时触发写中断,并将寄存器的和寄存器的当应用程序调用函数关掉设备时会步入若设置了寄存器的此函数,此函数实现的功能与相反,主要是善后工作,包括对所有改变过的寄存器复位,还有的任意一个时将触发一个中断;后恳求的一些资源进行释放。若设置了寄存器的位,当线、铃控制器、数据扩频检查线中任