没有合适的资源?快使用搜索试试~ 我知道了~
VxWorks vxbus驱动程序的组织结构.docx
需积分: 13 1 下载量 46 浏览量
2022-07-04
15:31:44
上传
评论
收藏 169KB DOCX 举报
温馨提示
试读
13页
VxWorks vxbus驱动程序的组织结构.docx
资源推荐
资源详情
资源评论
VxWorks vxbus 驱动程序的组织结构
点击数:2128
vxworks 6.x
vxworks
device driver
vxbus
organization structure
VxWorks 下的 vxbus 驱动程序最重要的部分就是驱动程序源代码文件,
源文件描述了设备如何和 VxBus、VxWorks OS 交互。但是,VxWorks
设备驱动程序还需要另外一些文件,这些附加文件能够帮助你将自己编
写的驱动集成到 VxWorks 编译环境中去,这也是发布驱动程序最重要的
一步。本节主要讨论如何在源码树中找到相关的驱动程序文件和其他附
加文件。最后还说明驱动程序的各个部分是如何安装在 VxWorks OS 中
的。
文件位置
在开发驱动程序之前,了解驱动程序文件在 VxWorks 源码树中的位置是非常重要的,驱动
程序文件主要分布在源码树中的 3 个不同位置。
installDir/vxworks-6.x/target/3rdparty 第三方提供的基于 VxBus 驱动模型的驱动,它们一
般都做为插件安装到现有的 VxWorks 开发环境中
installDir/vxworks-6.x/target/src/hwif 风河官方提供的基于 VxBus 驱动模型的驱动程序,它
们一般都作为标准产品的一部分,或者作为补丁来升级。
installDir/vxworks-6.x/target/src/drv 风河官方提供的基于传统模型的驱动程序,和 VxBus
不兼容
风河官方的驱动程序
根据驱动程序的类型,installDir/vxworks-6.x/target/src/hwif 目录下的驱动被组织成不同的
子目录,例如,定时器的驱动程序在目录 installDir/vxworks-6.x/target/src/hwif/timer
第三方的驱动程序
第三方驱动程序的组织方式允许驱动程序开发厂商和开发者创建第三方驱动程序,不需要
担心不同厂商的文件之间的命名空间冲突。每一个想提供 VxWorks 驱动程序的厂商必须在
3rdparty 目录创建自己的子目录,比如说,Acme 公司计划为 vxworks 开发第三方设备驱
动程序,那么就必须在 3rdparty 目录创建自己的目录 installDir/vxworks-6.x/target/
3rdparty/acme,在这个目录下,不同类型的驱动程序又组织成不同目录,跟 hwif 目录一
样。
驱动程序文件例子:wrsample
风河公司提供的 VxBus 的驱动程序例子位于目录:installDir/vxworks-6.x/target/3rdparty/
windriver/wrsample,这些文件可以被当做模板来帮助你开发第三方驱动程序,具体信息
请参考 wrsample 目录下的 README 文件。
其他必须的文件
尽管一个驱动程序可以包括很多文件,比如多个源文件和多个头文件,但是一个标准的
VxWorks 驱动程序有一个最小的文件集,对于大多数 vxworks 驱动程序最少要求 6 个文件:
驱动程序源文件 实现驱动程序控制逻辑
组件描述文件(CDF) 主要用于将驱动程序集成到 VxWorks 编译环境中,以便于配置
一个 driverName.dc 文件 提供驱动注册例程的原型
一个 driverName.dr 文件 提供一小段调用驱动注册例程的代码
README 文件 提供版本信息
Makefile 文件 提供编译规则
一般情况下,CDF 文件,dc 文件,dr 文件都被认为是驱动程序的配置文件,下面详细介
绍这些文件。
驱动程序源文件
驱动程序源文件包含了驱动程序功能的实现逻辑,它们被放在目录 installDir/vxworks-6.x/
target/src/hwif, 第三方的被放在目录 installDir/vxworks-6.x/target/3rdparty。很多
VxWorks 设备驱动程序只包含一个源文件,一个驱动程序可以包含一个或者几个可选的头
文件;但是驱动程序可以包含多个源文件,但是此时必须在 Makefile 里面提供各个模块的
依赖规则。下面以文件 vxbCn3xxxTimer.c 来说明 VxWorks 驱动程序的结构。
设备驱动程序的第一部分是一个描述 VxBus 初始化阶段要调用的例程的结构:
/* data structures used by the driver to register itself
* with Vxworks
*/
/* drvBusFuncs provides a set of entry points into the
* driver that are called during various phases of the
* boot process. Drivers can choose to implement 1 or
* more of these entry point, according to the needs of
* the driver during its initialization phases.
*/
LOCAL struct drvBusFuncs cn3xxxTimerDrvFuncs =
{
cn3xxxTimerInstInit, /* devInstanceInit */
cn3xxxTimerInstInit2, /* devInstanceInit2 */
cn3xxxTimerInstConnect /* devConnect */
};
Copy
剩余12页未读,继续阅读
资源评论
ppcust
- 粉丝: 38
- 资源: 725
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功