《VxWorks设备驱动开发详解》是2011年电子工业出版社出版的图书,作者是曹桂平。
- 书名 VxWorks设备驱动开发详解
- 作者 曹桂平
- 出版社 电子工业出版社
- 出版时间 2011 年3月
- 页数 1 页
内容简介
shell是用户与内核进行交互操作的一种接口,是linux最重要的软件缺调化露句执住益影之一。最流行的shell称为来自bash shell,bash shell脚本编程以其简洁、高效而著称,多年来成为linux程序本书结合作者实际的开发经验,对vxworks操作系统内部的机制及其各类设备驱动的开发妈旧欢多马散操进行了深入的讲解和分析。全书照章铁七装分3篇共11章,第1篇对vxworks操作360百科系统的主要组件如任务、任务调度、任务间通信、内吸资搞再食几司丰距存管理、中断处理进行了较为细致的分析;其后对很多vxworks开发者不甚了解的vxworks内核映像类型以及启动方式和流程进行了详细的说明和解析。第2篇是驱动开三发的准备阶段,着艺志重介绍了vxworks系统下静哪地兴负湖感煤设备驱动的内核层次结构。第3杀字守所利视线绍篇作为本书的重点,每章对应一类驱动,结合开发实例,详细而完整地分析了vxwor裂采防识随观本ks下普通字符设备驱动、串数问施口车周强影旧引口驱动、普通块设备驱动、flash设备驱动、网络设备驱动以及usb设备驱动的设计和实现。
《vxworks设备驱动开发详解》面向广大工程技术工作者,既可作为高等院校教师和相关专业学生的教材件分身张,又可作为各类培训班的培训教程。
目录
《vxworks设备驱动开发详解》
第1篇 vxworks操作系统快速入门篇
第1章 vxworks嵌入式操大办决本失报打针作
系统的特点与应用 2
1.1 嵌入式系统概述 3
1.1.1 嵌入式系统定项叫服功齐义 3
1.1.2 嵌入式系刘啊负统权门话些省只统组成和特点 3
1.1.3 嵌入式系统发展趋势 4
1.1.4 实时操作系统 5
1.实时操作著说占斗此引系汉树系统定义 5
2.实时操作系统的特征 6
3.实时操作系统只的相关概念 6
1.2 vxworks操作系统基本特点 7
1.2.1 操作系统内核结构--微内核和宏内核 7
1.宏内核 7
2.微内核 8
1.2.2 vxworks内核--高性能的微内核设计 8
1.2.3 vxwork翻龙s开发支持--可裁减的运行软件 8
1.2.4 vxworks网络支持--综合的网络工具 9
1.2.5 vxworks移植性支持 9
.1.兼容pos对松谁含ix 1003.1b标准 9
2.平台的选择 9
3.方便移植到用户硬件上 9
1.2.6 vxworks操作系统选件 10
1.3 vxworks操作系统应用范围 10
1.4 本章小结 11
第2章 vxworks操作系统的基本组件 12
2.1 vxworks任务 13
2.1.1 内核实现基本原理 13
2.1.2 任务操作函数 15
2.1.3 深入了解任务栈 19
2.1.4 任务名长度问题 20
2.1.5 正确结束任务 21
2.1.6 任务的钩子函数--黑客机制 23
2.1.7 任务小结 25
2.2 vxworks任务调度算法--基于优先级的抢占式调度 26
2.3 vxworks任务间通信策略 29
2.3.1 信号量 30
2.3.2 消息队列 31
2.3.3 管道 32
2.3.4 网络套接字socket 32
2.3.5 任务间通信的特殊机制:信号 33
2.4 vxworks内存管理--虚拟地址空间支持 33
2.5 vxworks中断处理--多层次的中断转移 38
2.5.1 vxworks下中断转移过程详解(基于arm平台) 40
2.5.2 中断上下文中为何不可调用可引起睡眠的函数 43
2.6 本章小结 45
第3章 vxworks操作系统启动过程详解 46
3.1 vxworks操作系统启动 47
3.1.1 vxworks基本启动方式 47
3.1.2 vxworks操作系统内存布局 48
1.非压缩形式 48
2.压缩形式 48
3.1.3 下载型启动方式概述 50
3.1.4 rom型启动方式概述 53
3.2 深入理解bootrom--下载启动方式下的"瑞士军刀" 54
3.2.1 bootrom的构成 55
3.2.2 bootrom脚本的创建 56
3.2.3 脚本运行过程分析 56
3.2.4 bootrom的重定位 60
3.2.5 ram中运行的bootrom代码 62
1.usrinit函数 62
2.usrroot函数 65
3.bootcmdloop函数 68
3.2.6 在bootrom中添加用户代码 68
3.2.7 其他注意事项及说明 69
3.3 深入vxworks启动过程 71
3.3.1 rom型映像早期启动流程详解 71
1.rominit函数 71
2.romstart函数 79
3.3.2 下载型映像早期启动流程详解 81
3.3.3 公共启动流程详解 82
1.usrinit函数分析 83
2.usrroot函数分析 84
3.启动用户代码 89
3.4 vxworks bsp文件组成 90
3.4.1 源文件 91
3.4.2 头文件 94
3.4.3 makefile文件 97
3.4.4 扩展文件 100
3.4.5 说明文件 100
3.5 本章小结 100
第2篇 vxworks设备驱动起步篇
第4章 设备驱动 102
4.1 设备驱动的功能 103
4.2 设备驱动的结构 103
4.3 设备驱动的基本特点 105
4.3.1 驱动代码执行环境--任务和中断上下文 105
4.3.2 设备基本分类 105
4.3.3 驱动代码安全性--参数合法性检查 106
4.3.4 驱动基本工作模式--轮询和中断 106
4.3.5 驱动与硬件数据的交互方式--dma和直接复制 107
4.3.6 其他注意事项--volatile关键字 107
4.4 本章小结 108
第5章 vxworks下设备驱动的内核结构层次 109
5.1 认识vxworks设备驱动内核基本层次 110
1.usb设备驱动内核层次 110
2.块设备驱动内核层次 111
3.字符设备驱动内核层次 111
4.网络设备驱动内核层次 112
5.2 vxworks内核驱动基本结构--内核三张表 114
5.2.1 系统设备表 114
5.2.2 系统驱动表 116
5.2.3 系统文件描述符表 118
5.2.4 内核三张表之间的联系 120
5.3 vxworks内核驱动支持--"免费的午餐" 122
5.3.1 管道虚拟设备驱动支持 123
5.3.2 虚拟内存设备驱动支持 124
1.虚拟内存设备创建函数 124
2.虚拟内存设备使用实例 125
5.3.3 ramdisk设备驱动支持 127
5.3.4 网络设备(netdrv)高层次驱动支持 129
1.netdrv驱动基本工作原理 129
2.网络设备节点的创建 130
3.netdrv驱动中关键参数的获取 131
5.4 vxworks文件系统支持 132
5.4.1 虚拟根文件系统vrfs 132
5.4.2 事务型文件系统hrfs 132
5.4.3 ms-dos兼容型文件系统dosfs 133
5.4.4 原始文件系统rawfs 134
5.4.5 cd-rom文件系统cdromfs 135
5.4.6 只读文件系统romfs 135
5.4.7 目标机文件系统tsfs 136
5.5 添加驱动到vxworks内核 136
1.将驱动代码编入内核映像 136
2.注册驱动和创建设备 137
5.6 本章小结 138
第3篇 vxworks之六大核心设备驱动
第6章 vxworks设备驱动之字符设备驱动详解 140
6.1 用户请求到字符设备驱动服务函数的传递 141
6.2 实例入门:基于spi接口的串口扩展芯片vk3224驱动实现 144
6.3 认识vxworks字符设备驱动基本数据结构--dev_hdr结构 145
6.4 注册字符设备驱动和创建字符设备节点 147
6.5 编写字符设备驱动底层服务函数 150
6.5.1 编写字符设备打开函数 150
6.5.2 编写字符设备读写函数 152
6.5.3 编写字符设备控制函数 155
6.5.4 编写字符设备关闭函数 157
6.5.5 设备驱动工作模式的选择 160
6.5.6 编写字符设备删除函数 161
6.6 删除字符设备节点和卸载字符设备驱动 163
6.6.1 删除字符设备节点 163
6.6.2 卸载字符设备驱动 164
6.7 本章小结 165
第7章 vxworks设备驱动之串口驱动详解 166
7.1 认识vxworks内核tty
中间层--串口驱动的基石 168
7.1.1 tty中间层应具备的功能 168
7.1.2 基于tty的串口驱动实现思想 169
7.1.3 tty中间层与底层串口驱动的关系 171
7.2 vxworks内核tty中间层初始化详解 171
7.2.1 ttydrv函数 172
7.2.2 ttydevcreate函数 173
7.2.3 sysserialhwinit和sysserialhwinit2函数 174
7.2.4 tty中间层初始化过程小结及注意事项 174
7.3 认识vxworks下串口驱动基本数据结构--sio_chan结构 176
7.3.1 内核sio_chan结构定义 176
7.3.2 封装sio_chan结构 178
7.4 vxworks串口驱动文件基本构成 180
7.5 vxworks串口驱动内核接口
文件sysserial.c的实现 183
1.sysserial.c模板文件 184
2.模板文件函数功能说明 188
3.sysserial.c文件功能小结 190
7.6 编写vxworks串口驱动底层服务函数 190
7.6.1 编写串口驱动初始化函数 191
7.6.2 编写串口驱动回调函数--arm926uartcallback- install 193
7.6.3 编写串口驱动控制函数--arm926uartioctl 195
7.6.4 编写串口驱动中断处理函数--arm926uartint 197
7.6.5 编写串口驱动启动发送函数--arm926uart- txstartup 200
7.6.6 编写串口驱动轮询工作模式支持函数 202
1.编写发送函数arm926uartpolloutput 202
2.编写接收函数arm926uartpollinput 203
7.7 再议vxworks内核tty中间层 205
7.8 本章小结 208
第8章 vxworks设备驱动之块设备驱动详解 208
8.1 认识vxworks块设备驱动内核基本层次 210
8.2 vxworks块设备驱动基石--内核文件系统支持 211
8.2.1 rawfs文件系统详解 211
1.rawfs文件系统初始化第一步:rawfsinit函数 212
2.rawfs文件系统初始化第二步:rawfsdevinit函数 212
3.rawfs文件系统使用示例 214
4.cbio中间层浅析 216
8.2.2 dosfs文件系统详解 220
1.dosfs初始化基本流程 221
2.初始化第一步:dosfslibinit函数 222
3.初始化第二步:dosfsdevcreate函数 223
4.dosfs文件系统格式化 225
5.dosfs文件系统初始化小结 226
8.3 认识vxworks块设备驱动基本数据结构--blk_dev结构 228
8.3.1 内核blk_dev结构定义 229
8.3.2 封装blk_dev结构 232
8.4 vxworks块设备驱动基本架构 233
8.4.1 块设备驱动工作的特点 233
8.4.2 基于cbio中间层的块设备驱动内核层次 234
8.4.3 块设备驱动底层函数组成 234
8.5 编写vxworks块设备驱动底层服务函数 235
8.5.1 认识ata(ide)硬盘结构 236
8.5.2 认识硬盘分区 237
8.5.3 认识cbio分区管理层 239
8.5.4 编写块设备驱动初始化函数 241
8.5.5 编写块设备驱动读设备函数atablkrd 244
8.5.6 编写块设备驱动写设备函数atablkwrt 245
8.5.7 编写块设备驱动设备控制函数ataioctl 247
8.5.8 编写块设备驱动设备状态查询函数atastatus 248
8.5.9 编写块设备驱动设备复位函数atareset 248
8.6 本章小结 249
第9章 vxworks设备驱动之flash设备驱动详解 249
9.1 认识flash设备 251
9.1.1 概述 251
9.1.2 flash设备硬件接口的差别 252
9.1.3 flash设备容量和成本 252
9.1.4 flash设备可靠性和耐用性 252
9.1.5 flash设备易用性 253
9.1.6 flash设备软件支持 253
9.2 深入nand flash设备 254
9.3 深入nor flash设备 256
9.3.1 nor flash存储器特点 256
9.3.2 nor flash命令集bcs / scs 256
9.3.3 nor flash接口访问标准 257
9.4 认识flash设备地址问题--驱动"陷阱" 258
9.5 vxworks下flash设备驱动内核层次详解--认识trueffs中间层 259
9.6 vxworks内核trueffs中间层初始化详解 261
9.7 创建和使用flash设备 264
9.8 认识vxworks下flash设备驱动基本架构 267
9.9 编写vxworks下flash设备驱动socket层服务函数 268
9.9.1 socket驱动层文件构成 268
9.9.2 socket驱动层实现示例 269
9.9.3 socket层实现小结 279
9.10 编写vxworks下flash设备驱动mtd层服务函数 285
9.10.1 tffsconfig.c文件--flash设备驱动初始化入口 286
9.10.2 tffsmtd.c文件--flash设备驱动mtd层服务函数所在地 289
9.10.2.1 编写flash设备识别函数 289
9.10.2.2 编写flash设备读函数 292
9.10.2.3 编写flash设备写函数 293
9.10.2.4 编写flash设备块擦除函数 296
9.10.2.5 编写flash设备地址映射函数 297
9.11 本章小结 297
第10章 vxworks设备驱动之网络设备驱动详解 298
10.1 vxworks下网络设备驱动内核基本层次--认识mux接口层 300
10.1.1 网络设备驱动的基本特点 300
10.1.2 网络设备驱动内核层次 301
10.1.3 认识mux中间层 302
10.2 认识vxworks网络设备驱动基本数据结构--end_obj结构 304
10.3 实例介绍:基于tms320d-m6446平台的emac网口驱动 305
10.4 定义vxworks网络设备驱动自定义结构--"信息集中地" 310
10.5 vxworks网络设备驱动加载与启动 311
10.5.1 网络设备驱动初始化基本流程 311
10.5.2 修改confignet.h文件 313
10.5.3 网络设备驱动加载函数armload的实现 314
10.5.4 网络设备驱动启动函数armstart的实现 319
10.6 vxworks网络设备驱动数据帧后台处理支持:netjobadd 320
10.7 编写vxworks网络设备驱动数据帧接收函数 323
10.7.1 编写数据帧接收"下半部分"入口函数 323
10.7.2 vxworks内核网络栈对数据帧的封装要求 324
10.7.3 网络数据帧处理和上传 330
10.7.4 再议网络数据帧的接收 332
10.8 编写vxworks网络设备驱动数据帧发送函数 333
10.9 编写vxworks网络设备控制函数 337
10.10 编写vxworks网络设备驱动查询模式支持函数 342
1.armpollsend函数的实现 343
2.armpollrcv函数的实现 344
10.11 编写vxworks网络设备停止和卸载函数 345
1.armstop函数的实现 346
2.armunload函数的实现 347
10.12 认识vxworks网络设备驱动内核支持函数 347
10.13 vxworks网络设备驱动实现小结 349
10.14 认识网络设备ip地址和mac地址 350
10.15 vxworks网络设备驱动对多网口的支持 351
10.15.1 修改底层驱动 352
10.15.2 修改confignet.h文件 353
10.15.3 修改usrnetinit函数 354
10.16 本章小结 355
第11章 vxworks设备驱动之usb设备驱动详解 355
11.1 usb详解 357
11.1.1 usb的定义 357
11.1.2 认识usb描述符及其相互关系 360
1.驱动描述符(device descriptor) 360
2.配置描述符(configuration descriptor) 360
3.接口描述符(interface descriptor) 361
4.端点描述符(endpoint descriptor) 362
11.1.3 usb控制器基本分类 363
11.1.4 认识usb硬件接口 363
11.2 认识vxworks下usb设备驱动内核层次和驱动对象 365
11.3 示例介绍:uhci usb主机控制器基本工作原理 367
11.3.1 uhci规范 367
11.3.2 uhci基本工作原理和数据结构 368
11.3.3 uhci控制器驱动原理概述 371
11.4 vxworks下usb设备操作请求内核传递过程详解 372
11.4.1 第一层入口函数:usbbulkdevblkrd 373
11.4.2 第二层入口函数:usbbulkcmdexecute 376
11.4.3 第三层入口函数:usbdtransfer 381
11.4.4 第四层入口函数:urbexecblock 383
11.4.5 第五层入口函数:usbdcoreentry 384
11.4.6 第六层入口函数:fnctransfer 386
11.4.7 第七层入口函数:usbhcdirpsubmit 388
11.4.8 第八层入口函数:底层hcd总入口函数 389
11.4.9 vxworks下usb设备操作请求内核传递过程总结 391
11.5 vxworks下usb设备应用层类驱动初始化详解 392
11.6 vxworks下usb控制器驱动初始化详解 397
11.7 vxworks下usb控制器驱动架构 402
11.8 编写vxworks下usb控制器驱动底层服务函数 403
11.8.1 编写usb操作请求总入口函数 403
11.8.2 编写usb控制器驱动中断处理函数 404
11.8.3 编写usb控制器驱动具体服务函数 408
11.9 本章小结 408
参考文献 409