《VxWorks程序员指南》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)Wind River著;王金刚等译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2003
  • ISBN:7302068534
  • 页数:403 页
图书介绍:本书根据WindRiver公司的技术文档VxWorks Network Programmer's Guide翻译而成。

第1章 引言 1

1.1 概要 1

1.2 相关的文件资源 1

1.3 VxWorks配置和建立 2

1.4 Wind River代码约定 2

1.5 文档约定 2

第2章 基本操作系统 5

2.1 简介 5

2.2 VxWorks任务 5

2.2.1 多任务 5

2.2.2 任务状态转变 6

2.2.3 Wind任务调度 7

2.2.4 任务控制 10

2.2.5 任务扩展函数 15

2.2.6 任务的错误状态:errno 16

2.2.7 任务异常处理 18

2.2.8 共享代码和重入 18

2.2.9 VxWorks操作系统任务 22

2.3 任务间通信 23

2.3.1 共享数据结构 24

2.3.2 互斥 24

2.3.3 信号量 25

2.3.4 消息队列 35

2.3.5 管道 39

2.3.6 任务间网络通信 40

2.3.7 信号 41

2.4 VxWorks事件 42

2.4.1 pSOS事件 43

2.4.2 VxWorks事件 44

2.4.3 API比较 47

2.5 看门狗定时器 47

2.6 中断服务代码:中断服务程序 48

2.6.1 中断处理连接程序 49

2.6.2 中断堆栈 50

2.6.3 编写和调试中断服务程序 50

2.6.4 中断服务程序的特殊限制 50

2.6.5 中断级异常 52

2.6.6 保留高中断级 52

2.6.7 在高中断级上中断服务程序的附加限制 52

2.6.8 中断与任务通信 53

第3章 POSIX标准接口 54

3.1 简介 54

3.2 POSIX时钟和计时器 54

3.3 POSIX内存上锁接口 55

3.4 POSIX线程 56

3.4.1 POSIX线程属性 56

3.4.2 线程私用数据 59

3.4.3 线程取消 59

3.5 POSIX调度接口 60

3.5.1 POSIX和Wind调度方法比较 61

3.5.2 获得和设置POSIX任务优先级 61

3.5.3 获得并显示当前调度策略 63

3.5.4 获得调度参数:优先级限制和时间片 63

3.6 POSIX信号量 64

3.6.1 POSIX和Wind信号量比较 65

3.6.2 未命名信号量使用 66

3.6.3 命名信号量的使用 68

3.7 POSIX互斥体(Mutexes)和条件变量 71

3.8 POSIX消息队列 72

3.8.1 POSIX和Wind消息队列比较 73

3.8.2 POSIX消息队列属性 73

3.8.3 显示消息队列属性 76

3.8.4 用消息队列通信 77

3.8.5 通知任务有消息在等待 80

3.9 POSIX队列信号 84

第4章 输入/输出系统 86

4.1 简介 86

4.2 文件、设备和驱动程序 87

4.2.1 文件名称和默认设备类型 88

4.3 基本I/O接口 89

4.3.1 文件描述符 89

4.3.2 标准输入设备、标准输出设备和标准错误输出设备 90

4.3.3 打开和关闭文件操作 91

4.3.4 新建和删除文件操作 92

4.3.5 读操作和写操作 92

4.3.6 文件截取操作 93

4.3.7 I/O控制操作 93

4.3.8 基于多文件描述符的挂起操作:选择功能 94

4.4 缓冲型I/O设备:stdio 97

4.4.1 使用stdio设备 97

4.4.2 标准输入设备、标准输出设备和标准错误输出设备 98

4.5 其他格式化I/O操作 98

4.5.1 特例:printf(),sprintf()和sscanf()函数 98

4.5.2 其他函数:printErr()和fdprintf()函数 99

4.5.3 信息记录 99

4.6 异步输入/输出操作 99

4.6.1 POSIX标准的异步输入/输出程序 100

4.6.2 异步输入/输出操作控制块 101

4.6.3 使用异步输入/输出操作 102

4.7 VxWorks操作系统中的设备 107

4.7.1 串行I/O设备(终端和伪终端设备) 108

4.7.2 管道设备 111

4.7.3 伪存储设备 112

4.7.4 网络文件系统(NFS)设备 113

4.7.5 非NFS网络设备 114

4.7.6 CBIO接口 115

4.7.7 块存取设备 118

4.7.8 套接字 128

4.8 VxWorks操作系统与主机操作系统中I/O系统的区别 128

4.9 内部结构 129

4.9.1 驱动程序 132

4.9.2 驱动设备 133

4.9.3 文件描述符 135

4.9.4 块存取设备 146

4.9.5 驱动程序支持库 159

4.10 PCMCIA接口 159

4.11 外部设备互连接口:PCI 160

第5章 本地文件系统 161

5.1 简介 161

5.2 与MS-DOS兼容的文件系统:dosFs文件系统 161

5.2.1 建立dosFs文件系统 162

5.2.2 配置用户系统 164

5.2.3 初始化dosFs文件系统 165

5.2.4 创建块存取设备 165

5.2.5 创建磁盘高速缓冲区 165

5.2.6 创建和使用磁盘分区 165

5.2.7 创建dosFs文件系统设备 168

5.2.8 格式化磁盘卷 168

5.2.9 安装磁盘卷 170

5.2.10 例子 170

5.2.11 对磁盘和磁盘卷进行操作 178

5.2.12 目录操作 179

5.2.13 文件操作 180

5.2.14 分配磁盘空间的方法 182

5.2.15 灾难恢复和磁盘卷的一致性问题 185

5.2.16 dosFsLib文件支持的I/O控制功能 185

5.3 使用SCSI设备从本地dosFs文件系统启动 186

5.4 原始文件系统:rawFs文件系统 188

5.4.1 磁盘组织形式 189

5.4.2 初始化rawFs文件系统 189

5.4.3 将设备初始化成使用rawFs文件系统 189

5.4.4 安装磁盘卷 190

5.4.5 文件I/O操作 190

5.4.6 更换磁盘 191

5.4.7 rawFsLib文件支持的I/O控制功能 192

5.5 磁带文件系统:tapeFs文件系统 193

5.5.1 磁带中的组织结构 193

5.5.2 初始化tapeFs文件系统 193

5.5.3 安装磁带卷 196

5.5.4 文件I/O操作 196

5.5.5 更换磁盘 196

5.5.6 tapeFsLib文件支持的I/O控制功能 197

5.6 CD-ROM文件系统:cdromFs 198

5.7 目标服务器文件系统:TSFS 201

第6章 目标机工具 204

6.1 简介 204

6.2 基于目标机的shell 204

6.2.1 主机和目标机shell的不同 204

6.2.2 用目标机shell配置VxWorks 206

6.2.3 使用目标机shell的帮助和控制字符 206

6.2.4 从目标机shell加载和卸载目标模块 207

6.2.5 调试目标机shell 208

6.2.6 终止目标机shell正在执行的程序 208

6.2.7 使用远程登录进入目标机shell 209

6.2.8 分配Demangler 210

6.3 基于目标机的加载器 210

6.3.1 配置VxWorks加载器 211

6.3.2 目标机-加载器API 212

6.3.3 加载器选项总结 213

6.3.4 加载C++模块 214

6.3.5 指定加载模块的内存分配 214

6.3.6 影响加载器行为的限制 215

6.4 基于目标机的符号表 219

6.4.1 配置VxWorks系统符号表 219

6.4.2 生成一个内部系统符号表 221

6.4.3 生成一个可下载的系统符号表 222

6.4.4 使用VxWorks系统符号表 222

6.4.5 基于主机和目标机的符号表同步化 223

6.4.6 生成用户符号表 224

6.5 显示函数 224

6.6 常见问题 225

第7章 C++语言开发 229

7.1 简介 229

7.2 在VxWorks系统下使用C++语言 229

7.2.1 实现C++语言访问的C语言代码 229

7.2.2 加入支持组件 230

7.2.3 C++组合器 231

7.3 初始化和确定静态目标 231

7.3.1 细化(munch)C++应用模块 231

7.3.2 交互式调用静态构造体和析构体 233

7.4 使用GNUC++编程 234

7.4.1 模板实例化 234

7.4.2 异常处理 237

7.4.3 Run-Time类型信息 238

7.4.4 命名空间(Namespaces) 239

7.5 使用Diab C++编程 240

7.5.1 模板实例化 241

7.5.2 异常处理 241

7.5.3 Run-Time类型信息 242

7.6 使用C++库 242

7.7 运行事例演示 243

第8章 闪存块设备驱动程序 245

8.1 简介 245

8.1.1 选择TrueFFS作为媒质 245

8.1.2 TrueFFS层 246

8.2 构建支持TrueFFS的系统 247

8.3 选择MTD组件 248

8.4 确定Socket驱动程序 249

8.5 配置和建立项目 249

8.5.1 包含文件系统组件 250

8.5.2 包含核心组件 250

8.5.3 包含应用程序组件 250

8.5.4 包含MTD组件 252

8.5.5 包含转换层 252

8.5.6 加入Socket驱动程序 253

8.5.7 建立系统项目 253

8.6 设备格式化 254

8.6.1 规定驱动器号 254

8.6.2 对设备进行格式化 254

8.7 创建用于编写启动镜像的区域 256

8.7.1 写保护闪存 256

8.7.2 创建启动镜像区域 256

8.7.3 在闪存中编写启动镜像 258

8.8 安装驱动器 258

8.9 运行shell命令 259

8.10 编写Socket驱动程序 261

8.10.1 传送Socket驱动程序存根文件 261

8.10.2 理解Socket驱动程序功能 264

8.11 使用MTD支持的闪存设备 267

8.11.1 支持常用闪存接口(CFI) 267

8.11.2 支持其他的MTD 269

8.11.3 获得片上磁盘的支持 270

8.12 编写MTD组件 270

8.12.1 编写MTD识别函数 271

8.12.2 编写MTD映射函数 273

8.12.3 编写MTD读、写和擦除函数 274

8.12.4 定义MTD为组件 277

8.12.5 注册识别函数 278

8.13 闪存功能 279

8.13.1 块分配以及数据串 279

8.13.2 读和写操作 280

8.13.3 擦除循环和碎片收集 280

8.13.4 优化方式 281

8.13.5 TrueFFS中的故障恢复 283

第9章 VxDCOM应用 285

9.1 简介 285

9.2 COM技术概述 286

9.2.1 COM组件和软件可重用性 286

9.2.2 VxDCOM和实时分布式技术 287

9.3 使用Wind目标模板库 288

9.3.1 WOTL模板类的分类 289

9.3.2 CoClass真模板类 289

9.3.3 Lightweight对象类模板 291

9.3.4 单一实例类宏 291

9.4 阅读WOTL-生成的代码 292

9.4.1 WOTL CoClass定义 292

9.4.2 生成文件中使用的宏定义 293

9.4.3 接口映射 294

9.5 配置DCOM性能参数 295

9.6 使用Wind IDL编译器 297

9.6.1 命令行格式 297

9.6.2 已生成代码 298

9.6.3 数据类型 298

9.7 阅读IDL文件 302

9.7.1 IDL文件结构 302

9.7.2 定义属性 306

9.8 增加实时扩展 308

9.8.1 使用VxWorks上的优先级方案 308

9.8.2 在Windows上配置客户端优先级传送 309

9.8.3 使用线程集合Threadpools 310

9.9 使用OPC接口 310

9.10 编写VxDCOM服务器和客户端应用 311

9.10.1 编程 311

9.10.2 编写服务程序 311

9.10.3 编写客户端代码 313

9.10.4 询问服务器 316

9.10.5 执行客户端代码 319

9.11 比较VxDCOM和ATL执行 319

9.11.1 CcomObjectRoot 320

9.11.2 CcomClassFactory 320

9.11.3 CcomCoClass 321

9.11.4 CcomObject 322

9.11.5 CComPtr 323

9.11.6 CComBSTR 324

9.11.7 VxComBSTR 325

9.11.8 CcomVariant 326

第10章 分布式信息队列 329

10.1 简介 329

10.2 用VxFusion配置VxWorks 330

10.3 使用VxFusion 330

10.3.1 VxFusion的系统结构 330

10.3.2 VxFusion的初始化 333

10.3.3 配置VxFusion 333

10.3.4 分布式名称数据库 336

10.3.5 操作分布式信息队列 339

10.3.6 操作组信息队列 344

10.3.7 操作适配器 346

10.4 系统局限性 347

10.5 节点启动 347

10.6 报文和消息 349

10.6.1 报文与消息比较 349

10.6.2 报文缓冲器 350

10.7 设计适配器 351

10.7.1 设计网络报头 351

10.7.2 写一个初始化程序 352

10.7.3 写一个启动程序 355

10.7.4 写一个发送程序 355

10.7.5 写一个输入程序 356

10.7.6 写一个I/O控制程序 357

第11章 共享内存对象 358

11.1 简介 358

11.2 使用共享内存对象 358

11.2.1 名称数据库 359

11.2.2 共享信号量 361

11.2.3 共享消息队列 364

11.2.4 共享内存分配器 369

11.3 内部需注意的事项 377

11.3.1 系统要求 377

11.3.2 旋转上锁机制 378

11.3.3 中断延迟 378

11.3.4 约束 379

11.3.5 高速缓存一致性 379

11.4 配置 379

11.4.1 共享内存对象和共享内存网络驱动 380

11.4.2 共享内存区 380

11.4.3 初始化共享内存对象包 381

11.4.4 配置举例 384

11.4.5 初始化步骤 385

11.5 发现故障及解决措施 385

11.5.1 配置问题 385

11.5.2 发现并解决故障的技巧 386

第12章 虚拟内存接口 387

12.1 简介 387

12.2 基本虚拟内存支持 387

12.3 虚拟内存配置 388

12.4 普通应用 389

12.5 使用程序化的MMU 390

12.5.1 虚拟内存上下文 390

12.5.2 私有虚拟内存 391

12.5.3 非高速缓存存储区 399

12.5.4 非可写存储器 400

12.5.5 故障检验 402

12.5.6 需警惕的问题 403