《VxWorks设备驱动开发详解 》(曹桂平版)对VxWorks的设备驱动开发讲解得很详细,也包括了很多作者的个人开发经验在其中,因此是VxWorks设备驱动开发的上佳参考资料。
一般在网络上下载该文档都需要积分,或者不够高清,最近发现了一个比较好的电子版,因此将其链接记录如下以备后用:
https://www.vxworks.net/app/771-vxworks-device-driver
1.通常在设备打开函数中进行中断注册,以提高对中断的共享性;
2.驱动代码的执行环境包括:
- 任务上下文
- 中断上下文
3.设备类型包括:
- 字符设备:执行字节流访问,如终端、串口
- 块设备:基于文件系统,如磁盘、Flash
- 网络设备:用于网络通信,不具备文件节点
4.驱动工作方式:
- 轮询模式
- 中断模式
5.驱动与硬件进行数据交互的方式:
- DMA方式(在嵌入式下使用较少)
- 直接拷贝方式
6.注意事项:对外设寄存器进行操作时,必须使用volatile修饰符;
7.三张表:
- 系统设备表
- 系统驱动表
- 文件描述符表
8.虚拟设备:
- 管道设备
- 虚拟内存设备
- RamDisk设备
- 网络设备
9.VxWorks中管道的底层实现是基于VxWorks消息队列的;
10.网络设备不等于网络文件系统;
11.VxWorks中最常用的文件系统:MS-DOS兼容性文件系统;
12.虚拟根文件系统VRFS:应用层需要POSIX根文件系统支持时,内核才需要包括VRFS支持。VRFS仅提供根目录,为其他文件系统提供挂载点;
13.事务型(Transaction)文件系统,HRFS,亦即高可靠性文件系统;
14.MS-DOS兼容型文件系统,dosFs,使用最广泛。支持层次性文件和目录管理方式,支持VFAT长文件名,支持FAT12、FAT16、FAT32文件格式;
15.内核与块设备之间的缓存机制:
- Vx5.5:CBIO ,cached block I/O;
- Vx6.4:XBD,extend block device;
16.原始文件系统,rawFs,将整个块设备作为单个文件进行操作,不存在文件和目录层次性管理功能;
17.ROMFS,只读文件系统,可将任何格式的文件存储在ROMFS下,然后将其编入内核,作为内核映像的一部分。ROMFS只存在于RAM中。于ramdisk类似,但是ramdisk只能在VxWorks启动完成后创建,ROMFS是在编译内核映像过程中创建的。