保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

VxWorks下PC/104-CAN驱动程序设计


码 create remove open close read write ioctl 1               2 ca Open NULL ca Open ca Close ca Read ca Write ca Ioctl

I/O系统的可动态调用iosDrvInstall()函数将设备的驱动例程(即XXOpen()、XXClose()、XXRead()等)加入到设备驱动列表中,如图2所示。

同样,系统中有一个设备列表,每个设备对应于设备列表中的一项,每一项包括设备名称和设备驱动号,同时包括一个设备描述的结构。该结构第一个变量是DEV_HDR类型的变量DEV_HDR。

DEV_HDR的定义如下:

Typedef struct

{

DL_NODE node; /*设备列表节点*/

short drvNum; /*驱动号码*/

char *name; /*设备名*/

}DEV_HDR;

系统调用iosDevAdd(),可以将设备加入到设备列表中。系统中将驱动和设备联系起来的就是文件描述符列表,每个文件描述符列表除了包括驱动号、设备ID外,还包括文件名、可用标志和指向DEV_HDR的指针。系统每次成功执行open(),返回一个文件描述符,这样对于设备的read()、write()及ioctl()就可以通过文件描述符进行。

文件描述符表(调试时调用iosFdShow()查看)如下:

I/O系统的整体结构如图3所示。系统启动时(一般挂接在usrroot()),XXDrv()和XXDevCreade()便将设备及其驱动加入相应的列表中。

3.3 设备驱动程序的访问过程

下面以CAN驱动程序为例,说明驱动程序的访问过程。(假定设备名“/can/1”并且以CAN设备驱动程序为例,上述中的XX在这里用Can代替。)

①fd=open(“/can/1”,O_RDWR,0644)

②I/O系统在设备列表中寻找设备名为/can/1的设备项,找到相应的设备驱动号。

③I/O系统在文件描述符中保留一个文件描述符空间。

④I/O系统在设备驱动列表中找到对应的CanOpen(CAN_DEV*PCAN_DEV,UBYTE*remainder,int flags),该驱动例程返回设备描述符的指针。

⑤I/O系统将设备描述符的指针存储在文件描述符列表的Device ID,同时将对应的设备驱动号存储在文件描述符的Driver num项。最后I/O系统返回该描述符项的索引(即为fd)。

⑥这样应用程序中的read()和write()等函数调用就可以根据fd找到相应的设备驱动号,进而找到相应的驱动例程。

4 CAN驱动程序的实现

CAN驱动程序的实现即是完成下面七个函数的编写。下面简要介绍其完成的功能,并用伪指令进行说明。

int drv_num; ;/*驱动号码*/

《VxWorks下PC/104-CAN驱动程序设计(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/168050.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。