基于VxWorks和MC68332的变电站测控系统驱动程序设计(3)
发布时间:2021-06-07
发布时间:2021-06-07
单片机
.78.电力系统保护与控制
2.2VxWorksI/0系统驱动程序框架
VxWorks为各种设备(包括字符设备、块设备、虚拟设备及网络设备)提供统一的访问接口,包括七种基本的I/O函数:open(filename、flags、mode),create(filename、flags),read(fd、&buf、nBytes),write(fd、&buf、nBytes),ioctl(fd、command、arg),close(fd)及remove(filename)。I/O系统所起的作用就是,把用户请求分配到与设备对应的驱动例程中去。VxWorks系统中有一个驱动程序列表,其形式如表2所列。
表2设备驱动程序列表
Tab.2Listofdevicedriver
驱动
creatererrlOVeopenclosereadwrlteioetl号码
l
caOpenNULLcaOpencaClosecaReadcaWritecaIoctl
I/O系统可动态调用iosDrvlnstall0函数将设备的驱动例程(即XXOpen0、XXClose0、XXRead()等加入到设备驱动列表中,同样,系统中有一个设备列表,每个设备对应于设备列表中的一项,每一项包括设备名称和设备驱动号,同时包括一个设备描述的结构。该结构第一个变量是DEV—HDR类型的变量DEV—HDR。
DEV—HDR的定义如下:
Typedefstruct{
DL_NODEnode:/★设备列表节点★/
shortdrvNum;/★驱动号码。/
char*name;P设备笔’|
}DEV—HDR;
系统调用iosDevAdd0,可以将设备加入到设备列表中。系统中将驱动和设备联系起来的就是文件描述符列表,每个文件描述符列表除了包括驱动号、设备ID外,还包括文件名、可用标志和指向DEV_HDR的指针。系统每次成功执行open(),返回一个文件描述符,这样对于设备的read()、write()及ioctl()就可以通过文件描述符进行。文件描述符表(调试时调用iosFdShowO查看)如下:系统启动时(一般挂接在usrroot0),XXDrv()和XXDevCreade0便将设备及其驱动加入相应的列表中。
2.3设备驱动程序的访问过程
CAN驱动程序的访问过程。(设备名‘'/can/1”并且以CAN设备驱动程序为例,上述中的XX在这里用Can代替。)
①open(“/cardl”,O—RDWR,0644)
②I/O系统在设备列表中寻找设备名为/can/1
的设备项,找到相应的设备驱动号。
⑧I/0系统在文件描述符中保留一个文件描述符空间。
④I/0系统在设备驱动列表中找到对应的CanOpen(CAN—DEV*PCAN—DEV,UBYTE’remainder,intflags),该驱动例程返回设备描述符的指针。
⑤I/O系统将设备描述符的指针存储在文件描述符列表的DeviceID,同时将对应的设备驱动号存储在文件描述符的Driverhum项。最后I/o系统返回该描述符项的索引(即为fd)⑥这样应用程序中的read()和write()等函数调用就可以根据fd找到相应的设备驱动号,进而找到相应的驱动例程。2.4CAN驱动程序的实现
CAN驱动程序的实现即是完成下面6个函数与1个结构体的编写。下面简要介绍其完成的功能,并用伪指令进行说明。
intdrv—num;/★驱动号码。/
typedefstruct{
DEV_HDRPcanhdr:广这个数据结构必须放在设备描述符的最初部分‘/
………………………/.其余与驱动有关数据’/
lCAN_DEV;/*CAN设备描述符+/
CAN_DEVCall—.chan_dev;
STATUSCanDrv(void){
完成驱动的一些初始化;
intconnect0;/★连接所选的IRQ与中断处理函数+,
sysIntEnablePIC();/*68332允许中断+/
drv—num=iosDrvlnstall(CanOpen,NULL,CanOpen,CanClose,CanRead,CanWrite,CanIoctl);/★将设备驱动例程装入设备列表中’/
)
/*iosDrvlnstallO将设备的CAN驱动例程加入设备驱动列表中,7个参数为7个驱动例程的进入点(entrypoint),如果没有某个例程,则传递NULL。‘/
STATUSCanDevCreate(){
完成一些设备初始化;
iosDevAdd(&Can_chan_dev.pCANHDR,"carlO”,drv—num);/★将设备放入设备驱动列表中木/
}
intCanOpen(CAN_DEV.半pCan_Dev,UBYTE
木remainder,intflags){
CAN卡硬件复位
CAN卡关中断
CAN卡进入软件复位模式
万方数据
上一篇:刀剑乱舞阵型效果图文详解
下一篇:“国学小名士”经典诵读题库