目录 1
第1章 概述 1
1.1什么是eCos 1
1.1.1起源与历史 2
1.1.2功能与特性 3
1.1.3eCos核心组件 4
1.1.4对硬件的支持 5
1.1.5eCos资源 5
1.2eCos的可配置性 6
1.2.1配置的必要性 7
1.2.2配置方法 7
1.3eCos的组织结构 8
1.3.1eCos的层次结构 9
1.3.2eCos源码结构 11
1.4.3组件 12
1.4.2配置选项 12
1.4eCos的一些基本概念 12
1.4.1组件框架 12
1.4.4包 13
1.4.5组件仓库 13
1.4.6配置 13
1.4.7目标系统 14
1.4.8模板 14
1.4.9属性 14
1.4.12组件定义语言CDL 15
1.4.10约束条件 15
1.4.11冲突 15
第2章 eCos开发环境的建立 16
2.1系统需求 16
2.1.1主机系统需求 16
2.1.2目标系统需求 16
2.2开发工具 17
2.2.2交叉编译工具 18
2.2.1Cygwin 18
2.2.3eCos配置工具 19
2.3Cygwin的安装与设置 19
2.4GNU交叉编译工具的编译与配置 22
2.5eCos源码与配置工具的安装 25
2.5.1eCos的安装 26
2.5.2eCos配置工具 28
2.6建立eCos开发环境 30
2.6.1基于x86的eCos开发平台 30
2.6.2建立RedBoot引导环境 31
第3章 eCos配置工具与编程实例 34
3.1eCos图形配置工具 34
3.2图形配置工具的使用 35
3.2.1组件仓库位置 35
3.2.2配置文件的管理 36
3.2.3模板选择 36
3.2.4选项配置 37
3.2.5冲突的解决 39
3.2.6配置选项的查找 40
3.2.7编译 40
3.2.8执行 42
3.3命令行配置工具 44
3.3.1ecosconfig配置工具 44
3.3.2使用ecosoonfig配置eCos 45
3.4eCos应用程序 46
3.4.1使用编译工具 46
3.4.2简单的hello程序 47
3.4.3多线程编程例子 49
3.4.4时钟和告警处理程序 51
第4章 RedBoot 55
4.1功能与应用 55
4.1.1RedBoot的安装 55
4.1.3RedBoot环境配置 56
4.1.2RedBoot用户界面 56
4.2RedBoot命令 58
4.2.1基本命令格式 58
4.2.2RedBoot普通命令 60
4.2.3Fash映像系统(FIS) 63
4.2.4Flash内配置信息的管理 66
4.2.5RedBoot程序执行控制 68
4.3RedBoot的配置与编译 68
4.3.1RedBoot软件结构 68
4.3.2使用eCos图形配置工具 69
4.3.3使用命令行配置工具ecosconfig 72
4.4RedBoot的更新与运行 73
第5章 系统内核 76
5.1系统内核结构 76
5.2内核调度机制 77
5.2.2多级队列调度器 78
5.2.1位图调度器 78
5.2.3调度器操作及API函数 79
5.3内存分配 80
5.3.1内存分配机制 81
5.3.2固定长度内存分配API 82
5.3.3可变长度内存分配API 84
5.4中断处理 86
5.4.1线程与中断处理程序 86
5.4.2中断的处理 87
5.4.3内核中断处理API函数 88
5.5例外处理 91
5.5.1例外处理程序 92
5.5.2例外处理内核API函数 93
5.6SMP支持 93
5.6.1SMP系统的启动 94
5.6.2SMP系统的调度 94
5.7计数器与时钟 95
5.6.3SMP系统的中断处理 95
5.7.1计数器 96
5.7.2时钟 98
5.7.3告警器 100
5.8应用程序入口 102
5.8.1调用环境 102
5.8.2应用程序编程要求 103
5.8.3应用程序的启动 104
第6章 线程与同步 106
6.1线程的创建 106
6.1.1创建新线程 106
6.1.2线程入口函数 107
6.1.3线程优先级 108
6.1.4堆栈和堆栈大小 108
6.1.5线程创建例子程序 109
6.2线程信息的获取 110
6.3线程的控制 111
6.4线程的终止和消除 112
6.4.1线程终止函数 112
6.4.2线程消除函数 113
6.5线程优先级操作 113
6.6per-thread数据 114
6.7同步原语 116
6.8互斥体 117
6.8.1互斥体的实现与操作 118
6.8.2互斥体API函数 118
6.8.3优先级倒置 120
6.9条件变量 122
6.9.1条件变量的使用 122
6.9.2条件变量API函数 124
6.10信号量 125
6.10.1信号量的使用 126
6.10.2信号量API函数 126
6.11.1信箱的使用 128
6.11信箱 128
6.11.2信箱API函数 129
6.12事件标志 131
6.12.1事件标志的使用 132
6.12.2事件标志API函数 133
6.13Spinlock 135
6.13.1Spinlock的使用 135
6.13.2Spinlock内核API函数 136
第7章 标准C与数学库 138
7.1标准C与数学库的配置 138
7.2非ISO标准函数 139
7.3数学库兼容方式 140
7.4一些实现细节 141
7.5线程安全性 143
7.6C库启动函数 144
8.1设备驱动程序用户API 145
第8章 设备驱动程序与PCI库 145
8.1.1设备的查找 146
8.1.2向设备传送数据 146
8.1.3读取设备数据 146
8.1.4读取设备配置信息 146
8.1.5对设备的配置 147
8.2驱动程序与内核及HAL的接口 147
8.2.1eCos中断模块 147
8.2.2同步 148
8.2.3SMP支持 150
8.2.4驱动程序模式 150
8.2.5驱动程序与内核及HAL的接口API函数 151
8.3eCos驱动程序设计 163
8.3.1设备驱动程序的基本结构 163
8.3.2串口驱动程序设计 165
8.4.1串口(rawserial)驱动程序 168
8.4串口驱动程序 168
8.4.2TTY驱动程序 173
8.5PCI库 175
8.5.1PCI总线操作 175
8.5.2PCI库API 181
第9章 文件系统 188
9.1文件系统表格 188
9.1.1文件系统表(FileSystemTable) 188
9.1.2安装表(MountTable) 190
9.1.3文件表 192
9.2文件目录 194
9.3同步 194
9.4初始化和安装 195
9.5文件操作 196
9.5.1文件系统的安装mount与卸载umount 197
9.5.3read、write和lseek函数 198
9.5.2open、creat和close函数 198
9.5.4fcntl函数 199
9.5.5dup和dup2函数 200
9.5.6stat和fstat函数 201
9.5.7access函数 202
9.5.8link,unlink,remove和rename函数 202
9.5.9mkdir和rmdir函数 203
9.5.10opendir、readdir、rewinddir和closedir函数 203
9.5.12Socket操作 204
9.5.11chdir和getcwd函数 204
9.6创建文件系统 205
9.7RAM文件系统 209
9.7.1文件和目录节点 209
9.7.2目录 211
9.7.3数据存储机制 211
9.8ROM文件系统 213
9.9文件操作实例 214
10.1eCos网络配置 222
第10章 网络支持与编程 222
10.2以太网驱动程序设计 223
10.2.1底层驱动程序基本框架 224
10.2.2驱动程序内部函数的实现 227
10.2.3高层驱动程序函数 231
10.2.4数据的发送和接收过程 231
10.3TCP/IP协议栈支持 232
10.3.1特性支持与配置 233
10.3.2API函数 234
10.4FTP客户端 236
10.5DNS客户端 237
10.6eCos网络编程实例 238
10.6.1网络通信测试程序 238
10.6.2编程实例——ping程序 239
第11章 硬件抽象层与eCos移植 245
11.1硬件抽象层HAL 245
11.2.1HAL的类型 247
11.2硬件抽象层的结构 247
11.2.2硬件抽象层文件描述 248
11.3硬件抽象层接口 250
11.3.1基本定义 250
11.3.2体系结构描述 251
11.3.3中断处理 255
11.3.4I/O操作 258
11.3.5Cache控制 259
11.3.6SMP支持 261
11.3.7诊断支持 264
11.3.8链接脚本 265
11.4例外处理 266
11.4.1HAL的启动处理 266
11.4.2同步例外与异步中断的处理 267
11.5虚拟向量 269
11.6eCos的移植 270
11.6.1平台抽象层的移植 271
11.6.2变体抽象层的移植 279
11.6.3体系结构抽象层的移植 282
第12章 组件结构与CDL 290
12.1eCos的配置机制 290
12.2eCos组织结构及编译过程 291
12.2.1软件包与组件仓库 291
12.2.2软件包的内容与格式 292
12.2.3编译过程 293
12.3组件定义语言CDL 294
12.3.1CDL命令 295
12.3.2CDL属性 298
12.4选项命名约定 305
12.5Tcl简介 307
12.5.1基本语法 307
12.5.3命令替换 308
12.5.4引号和花括弧的使用 308
12.5.2变量 308
125.5反斜杠和注释 309
12.6表达式和值 310
12.6.1选项的值 310
12.6.2普通表达式 312
12.6.3目标表达式 313
12.6.4列表表达式 314
12.7接口 314
12.8更新ecos.db数据库 316
第13章 eCos嵌入式Web服务器 318
13.1嵌入式Web服务器LibHTTPD 318
13.2配置和建造eCos 320
13.3Web服务器编程 321
13.4运行Web服务器 328
附录 335
附录A eCos硬件支持情况 335
附录B eCos实时特性 341
参考文献 359