VxWorks驱动程序编写入门

vxworks系统的设计遵循了大多数微内核系统的设计思路,在设备上使用了与设备无关的接口方案,这是一个进步,也是一个牺牲(牺牲了实时性),具体的原理暂时就不描述了,接触过操作系统的人都会有点印象。做驱动只要知道两表一链一描述符。所谓两表指驱动描述表和文件描述符表,一链指设备链表,一描述符指设备描述符。这几个东西的关系将在下面的描述中提及。


1.必要的数据结构:
structdef{
DEV_HDR xxxdevhdr;
.../*设备相关的数据*/
}
DEV_HDR的作用是为了系统可以在设备链表上安装设备,并在执行打开操作时可以使系统找到设备。


2.制作好的驱动必须安装到系统之上。vxworks系统不会自动查找驱动程序,或者为新设备安装驱动。那么制作驱动的第一步工作就是安装驱动,这里要使用的函数是iosDrvInstall,这个工作的目的是把驱动挂接在驱动描述表中。之后,系统就可以为设备使用驱动了。为了遵循标准请使用xxxDrv(xxx代表设备的名称)的名称作为驱动程序的安装函数。
在调用的时候使用xxxDrv()。调用之后可以使用iosDrvShow来查看系统的驱动描述表。


3.必须在设备实体上使用驱动。安装完驱动,vxworks系统并不会先知先觉的在某个设备上使用驱动程序,而需要用户创建一个设备,并为将来的打开作准备。这里将会使用iosDevAdd函数添加一个设备到系统中去,同时会通知系统该设备所要使用的驱动程序。用户应在这个函数调用之前创建设备数据结构,就是1节里提到的那个,然后将DEV_HDR通过iosDevAdd传给系统。为了遵循标准请使用xxxDevCreate(xxx代表设备的名称)。
在调用的时候使用xxxDevCreate()。调用之后可以使用shell下devs命令来查看系统的设备链表。


4.打开函数。打开函数的实现是非常丰富多彩的。可以初始化硬件、初始化软件、可以什么都不做、甚至可以什么都做了,但是返回的时候要如下操作:
return(xxxpDev);这里,xxxpDev是指向设备数据结构的指针。便于系统在文件描述符中操作。系统会根据文件描述符中的内容返回一个文件描述符。当然,用户也可以返回写其他的东西,但是在这里的返回要和下面的其它接口函数所获取的参数相对应,否则将会蹈我的覆辙,浪费掉很多宝贵的时间。open的第一个参数是char *的字符串,但是在驱动中,实际传来的是一个指针,嘿嘿,这可是关键的变化,这是系统在设备列表中查找的结果。就是1节里提到的数据结构。


5.读写函数和ioctl函数。这几个函数可没什么说的,根据硬件进行数据的传输即可。对应的接口是read\write\ioctl。这三个函数的第一个参数是fd,但到了驱动里面,就变成了上面提到的xxxpDev,这一点是需要注意的。


6.不得不说的中断处理函数。虽然不得不说,但是也只想说就是一段中断来了要执行的代码!这段代码的限制有很多,但是一般的实现中还是不会出问题。只要知道,就是一段代码而已。


7.最后就是那些可实现或可不实现的东西。设备的关闭、删除、卸载等等,这些可以参见iosDevDelete、iosDrvRemove等函数,由于实时系统是个不死系统,所以不会有哪个牛人去不断的创建、删除设备,打开关闭设备。


VxWorks驱动程序编写入门 http://blog.21ic.com/user1/1369/archives/2010/66367.html
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值