第1部分VxWorks的开发环境 2
第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目标机无响应 449
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部分 内核分析和应用程序开发 90
第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部分 驱动开发与原理 192
第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外设端协议栈结构 2252
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设备——USB2.0支持 277
22.1设备端协议栈 277
22.2主机端协议栈 283
22.2.1 USBD与驱动程序 284
22.2.2与已有程序的兼容 286
第4部分 板级支持包流程与移植 288
第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