商家名称 | 信用等级 | 购买信息 | 订购本书 |
VxWorks内核、设备驱动与BSP开发详解(第2版)(作者张杨) | |||
VxWorks内核、设备驱动与BSP开发详解(第2版)(作者张杨) |
《VxWorks内核、设备驱动与BSP开发详解(第2版)》是由人民邮电出版社出版的。
第1部分 VxWorks的开发环境
第1章 使用Tornado 2
1.1 概述 2
1.2 Tornado的安装目录 2
1.3 创建一个工程 4
1.3.1 可加载工程和可引导工程 4
1.3.2 实例:创建可加载工程 5
1.3.3 实例:创建可引导工程 7
1.4 更加有效率地工作 8
1.4.1 开发环境基本设置 8
1.4.2 实例:设置一个更熟悉的编辑器 10
1.4.3 使用Tcl语言定义工具 11
第2章 编译工程——Builder 13
2.1 编译工程及Boot Rom 13
2.1.1 编译工程 13
2.1.2 编译Boot Rom 15
2.1.3 实例:制作软盘引导盘 15
2.1.4 深入1:批处理文件mkboot 17
2.1.5 深入2:制作U盘引导盘 18
2.1.6 深入3:制作硬盘引导盘 21
2.1.7 深入4:制作一个引导ROM 21
2.1.8 实例:多系统并存 23
2.2 深入编译环境 24
2.2.1 创建的过程 24
2.2.2 抛弃IDE 25
2.2.3 使用Diab 26
2.3 了解MakeFile 26
2.3.1 MakeFile的作用 26
2.3.2 MakeFile格式 27
2.3.3 解决MakeFile所导致的错误 28
第3章 加载——FTP Server 29
3.1 FTP Server的设置 29
3.1.1 用户和权限 29
3.1.2 其他设置 30
3.1.3 实例:下载一个工程 30
3.2 从信息看状态 32
3.2.1 正常下载过程 32
3.2.2 下载失败的原因 33
3.3 从其他设备加载操作系统 35
第4章 管理工程——Work Space 36
4.1 管理文件 36
4.1.1 文件的位置 36
4.1.2 文件依赖关系 36
4.2 管理组件 37
4.2.1 VxWorks的各种组件 37
4.2.2 查找组件并修改属性 38
4.2.3 裁剪组件 39
4.3 编译选项 39
4.3.1 编译规则 40
4.3.2 宏定义 41
4.3.3 其他选项 42
第5章 连接目标机——Target Server 43
5.1 配置Target Server 43
5.1.1 基本配置内容 43
5.1.2 重要配置属性 44
5.2 实例:通过网络连接目标机 47
5.3 实例:配置串口连接主机 48
5.4 连接错误的解决办法 48
5.4.1 目标文件不正确 48
5.4.2 网络错误 49
5.4.3 目标机无响应 49
5.4.4 Target Server缓冲池不足 50
5.4.5 网络速度慢 50
第6章 交叉调试——Debugger 51
6.1 基本调试过程 51
6.1.1 运行Debugger 51
6.1.2 发起任务 52
6.1.3 连接任务 52
6.2 断点 53
6.2.1 设置断点 53
6.2.2 管理断点 54
6.3 独特的查看功能 55
6.3.1 源代码与汇编混合查看 55
6.3.2 调试命令行 56
6.3.3 其他功能 57
6.4 系统级调试设置 57
第7章 浏览目标机资源——Browser 58
7.1 Browser所提供的信息 58
7.1.1 Browser的设置 59
7.1.2 目标机信息 59
7.2 实例:透过现象看调试 60
7.2.1 查看内存泄露 60
7.2.2 分配任务优先级 60
7.2.3 确定任务堆栈 61
7.2.4 查看中断挂接情况 61
7.2.5 查看任务状况 62
第8章 与目标机的交互——Shell及其他 64
8.1 Shell 64
8.1.1 Shell的常用特性 64
8.1.2 Shell的快捷操作 64
8.1.3 Shell的常用命令 67
8.1.4 Shell的环境变量 69
8.1.5 执行脚本 69
8.2 WindView 70
8.2.1 设置WindView 70
8.2.2 分析任务时序图 72
8.3 Triggering 75
8.3.1 Triggering设置 75
8.3.2 Triggering的使用 77
第9章 软件硬件同时开发——VxSim 78
9.1 集成的VxSim 78
9.1.1 VxSim适用范围 78
9.1.2 VxSim的配置 79
9.1.3 VxSim的中断系统 80
9.2 功能更强的Full VxSim 81
9.2.1 Full VxSim所需的网络配置 81
9.2.2 创建支持网络连接的Full VxSim映像 82
9.2.3 启动Full VxSim 83
9.2.4 运行多个Full VxSim 85
9.3 实例:在VxSim上运行程序 85
第2部分 内核分析和应用程序开发
第10章 管理任务——任务的状态 90
10.1 任务概况 90
10.1.1 任务状态 90
10.1.2 任务调度 92
10.1.3 任务优先级 93
10.2 生成和管理任务 94
10.2.1 任务控制API 94
10.2.2 销毁任务 95
10.2.3 控制任务状态的切换 95
10.3 深入:任务切换的深层原因 96
10.3.1 时钟中断和时间片调度 96
10.3.2 优先级抢占调度机制 98
10.3.3 任务控制块 99
第11章 任务间的交互——同步与通信 103
11.1 任务之间的交流 103
11.1.1 共享内存 103
11.1.2 互斥 106
11.1.3 信号量 107
11.1.4 消息队列和管道 110
11.1.5 使用网络的任务间通信 114
11.1.6 信号 115
11.2 实例:任务间交流 116
11.2.1 通过信号量实现互斥 116
11.2.2 信号量实现同步 117
11.2.3 管道与消息队列 118
11.3 其他通信手段 119
第12章 控制时间——系统计时 121
12.1 系统时间 121
12.1.1 系统时间的来源 121
12.1.2 与现实时间相联系 121
12.2 系统计时控制 122
12.3 看门狗计时器 124
12.3.1 实例1:看门狗计时 125
12.3.2 实例2:看门狗定时 125
12.3.3 实例3:看门狗延时 126
12.4 其他的计时方法 127
12.4.1 使用CPU时间戳计时 127
12.4.2 实例:计算CPU频率 128
第13章 存储信息——访问文件系统 129
13.1 VxWorks中的文件系统 129
13.1.1 操作文件的办法 129
13.1.2 实例:文件操作 132
13.1.3 深入:打开文件的过程 134
13.1.4 深入:读取文件的过程 135
13.1.5 文件系统的作用 136
13.1.6 文件系统的特殊功能 138
13.1.7 文件系统的安装流程 138
13.2 文件系统分析 139
13.2.1 dosFs 139
13.2.2 rawFs 142
13.2.3 cdromFs 143
13.2.4 tapeFs 144
13.3 深入:如何提高访问效率 144
13.4 实例:支持多硬盘分区 145
第14章 与外界的交互——控制硬件 147
14.1 驱动程序管理 147
14.1.1 文件、设备、驱动程序 147
14.1.2 驱动管理3张表 148
14.1.3 驱动及设备的管理 152
14.2 访问硬件的手段 152
14.2.1 创建设备 152
14.2.2 操作设备 154
14.3 操作硬件 155
14.3.1 实例:测试用程序 155
14.3.2 多设备异步通信——select 161
14.4 VxWorks中的隐含设备 162
第15章 联通的世界——访问网络 164
15.1 VxWorks中的网络组件 164
15.1.1 层次结构 164
15.1.2 基本组件 166
15.1.3 实例:配置网络 167
15.1.4 操作路由表 171
15.1.5 Zbuf 173
15.1.6 使用标准I/O访问函数 174
15.2 实例:网络编程 175
15.2.1 建立TCP连接 175
15.2.2 建立UDP连接 178
15.2.3 使用Zbuf访问TCP 181
15.2.4 创建及使用FTP 183
第16章 VxWorks程序设计 186
16.1 资源 186
16.1.1 资源的有效利用 186
16.1.2 资源的保护 187
16.2 优先级安排 188
16.3 保证时间特性 189
第3部分 驱动开发与原理
第17章 硬件资源——操作硬件 192
17.1 硬件访问 192
17.1.1 内存访问 192
17.1.2 通用的内存映射程序 193
17.1.3 I/O端口访问 196
17.2 中断 197
17.2.1 轮询方式 197
17.2.2 中断 198
17.2.3 中断号与中断向量 201
17.2.4 中断复用 201
17.2.5 中断处理中的问题 202
17.3 访问特定硬件的API 203
17.3.1 访问PCI 203
17.3.2 中断相关的API 205
第18章 大道至简——字符设备 207
18.1 字符设备驱动程序 207
18.1.1 字符设备驱动程序的数据结构 207
18.1.2 字符设备驱动程序的接口 209
18.1.3 中断处理 215
18.1.4 安装驱动程序和创建设备 215
18.1.5 支持Select功能 217
18.2 实战字符设备开发 218
18.2.1 板卡介绍 219
18.2.2 程序实现 219
第19章 永久的记忆——块设备 232
19.1 块设备驱动程序的结构 232
19.2 块设备驱动程序的接口 234
19.3 安装块设备驱动程序 236
第20章 联通的基础——网络设备 237
20.1 网络设备的数据结构 237
20.2 网络数据传递 239
20.3 网络设备接口层 242
20.3.1 endLoad 243
20.3.2 endUnload 244
20.3.3 endSend 244
20.3.4 endMCastAddrAdd、endMCastAddrGet和endMCastAddrDel 245
20.3.5 endPollSend、endPollReceive 245
20.3.6 endStart 246
20.3.7 endStop 246
20.3.8 endAddressForm 246
20.3.9 endAddrGet 246
20.3.10 endPacketDataGet 247
20.3.11 endIoctl 247
20.4 中断模式下接收数据 248
20.5 网络设备驱动程序的安装 249
第21章 USB设备——USB 1.1支持 251
21.1 USB工作过程 251
21.2 USB外设端协议栈 252
21.2.1 USB外设端协议栈结构 252
21.2.2 USB外设端协议栈实现 253
21.2.3 USB外设端协议驱动层的使用 255
21.2.4 USB外设端控制器驱动程序 263
21.2.5 再看“回调函数” 267
21.3 USB主机端协议栈 268
21.3.1 USB主机端协议栈结构 268
21.3.2 USB主机端协议栈使用 269
21.3.3 USB主机端驱动程序 272
第22章 USB设备——USB 2.0支持 277
22.1 设备端协议栈 277
22.2 主机端协议栈 283
22.2.1 USBD与驱动程序 284
22.2.2 与已有程序的兼容 286
第4部分 板级支持包流程与移植
第23章 多样化的主板——板级支持包BSP 288
23.1 引导过程 288
23.2 BSP的流程 289
23.2.1 BSP的作用和结构 289
23.2.2 BSP初始化硬件 292
23.3 BSP移植 293
23.3.1 实现BSP所需要的工作 293
23.3.2 BSP中的系统接口 294
23.4 实例:BSP包移植 295
23.4.1 开始移植BSP前的准备 296
23.4.2 提供中断控制器接口 297
23.4.3 提供时钟接口 297
23.4.4 提供硬件访问接口 299
23.4.5 提供设备支持——实时钟、GPIO等 299
23.4.6 提供设备支持——串口 301
23.4.7 提供设备支持——网络 304
第24章 珠联璧合——BSP与开发环境的结合 306
24.1 配置工具与BSP的关系 306
24.1.1 CDF文件分析 306
24.1.2 Tornado下通过cdf文件对VxWorks进行配置的过程 312
24.2 自制BSP配置 313
24.2.1 实例:增加自定义文件夹结构 313
24.2.2 创建组件的一般步骤 316
附录 新的VxWorks 318
FL.1 新开发环境 318
FL.1.1 新的界面 318
FL.1.2 新的开发工具 319
FL.1.3 开发环境的扩展 320
FL.1.4 与Tornado的对比 320
FL.2 新特性 321
FL.2.1 实时进程RTP 321
FL.2.2 错误检测与报告 323
版权页:
插图:
1.3.1 可加载工程和可引导工程
在创建一个新的工程之前,首先需要分清Vx Works中两种工程的异同点。打个比方,Fomado中的可引导工程相当于PC上的Windows操作系统,而且这是一个可剪裁的操作系统。用户可以根据需要进行剪裁和配置,然后重新编译。当然,重新编译一个操作系统可能需要较长的时间,而且,要想重新加载新编译的操作系统,就必须重新引导计算机。可加载工程就相当于Windows中用户自己编写的应用程序或第三方应用程序。应用程序必须依赖操作系统才能运行,但是由于它只包含应用代码,因此代码量通常比较小,编译时间短。在操作系统已经启动的情况下,可以随时启动应用程序。
由上面的比喻可以看出,VxWorks将工程分为两种的目的有很多,其中之一就是开发上的方便。在开发过程中,没有必要花费大量的时间一遍一遍地编译、重新下载可引导的VxWorks映像,将可加载映像编译下载即可。使用可加载映像大大节省了编译内核所需要的时间。
可引导工程是带有VxWorks内核的工程。将这样的工程编译完成之后,即可通过引导程序下载到目标机上执行VxWorks。在生成这样的工程之后,Tomado会将BSP中的部分文件加入到工程中,同时通过usrApplnit.c文件提供用户程序入口。编译可引导工程能生成VxWorks操作系统映像,该映像包含了VxWorks内核以及用户的应用程序。通过Tomado 2.2所提供的工具,可以对可引导工程进行裁剪。每次加载可引导的VxWorks映像都需要重新引导。