第1章嵌入式Linux简介 2
1.1为什么Linux广受欢迎 2
目录 2
1.2什么是嵌入式系统 3
1.3什么是实时 3
1.4开放源代码的含意 4
1.5小结 5
补充读物 5
2.1开拓者项目简介 6
第2章 系统体系结构 6
2.2 Silverjack度假胜地的布局 7
2.3开拓者项目的需求 8
2.3.1安全需求 8
2.3.2运营需求 9
2.3.3供应商需求 10
2.4开拓者项目的系统体系结构 10
2.5小结 11
3.1信息来源 12
第3章 选择平台和安装工具集 12
3.2开拓者项目的战略方向 13
3.3构建tbdev1—嵌入式Linux开发工作站 14
3.3.1开始 15
3.3.2安装Linux操作系统 16
3.3.3安装本机GNU工具链和其他应用程序 20
3.3.4创建用于交叉编译的GNU工具链 20
3.4小结 44
补充读物 44
4.1 目标机的平台引导需求 45
第4章 引导Linux 45
4.2Linux的引导过程 46
4.3 Linux的根文件系统 47
4.3.1 init所需的文件 48
4.3.2 bash所需的文件 49
4.3.3根文件系统的二进制文件:编译还是下载 50
4.4创建根文件系统 61
4.4.1决定要使用的包 61
4.4.2创建根文件系统的过程 62
4.4.3运行buildrootfilesystem 63
4.5 安装TFTP服务器 66
4.6安装minicom 67
4.7 引导Embedded Planet RPX-CLLF 67
4.7.1 Embedded PlanetRPX-CLLF的目标PBR回顾 71
4.8引导Brightstar Engineering MediaEngine 73
4.8.1 Brightstar EngineeringMediaEngine的目标PBR回顾 76
4.9引导Tri-M MZ104和带闪存IDE驱动器的COTSPC 78
4.9.1闪存IDE技术 78
4.9.2准备Tri-M MZ104和COTS PC 79
4.9.3引导Tri-M MZ104目标系统 82
4.9.4 Tri-M MZ104的目标PBR回顾 83
4.10不同引导方式之间的比较 85
4.11小结 86
补充读物 86
第5章调试 87
5.1 gdb简介 87
5.2本机调试 88
5.3远程调试 91
5.4通过网络挂装根文件系统 94
5.4.1配置NFS服务器 95
5.4.2配置目标内核 96
5.5小结 99
补充读物 99
第6章 异步串行通信接口 102
6.1开拓者项目的异步串行硬件开发环境 102
6.1.1目标EIA/TIA-232-E兼容性 103
6.2Linux串行通信 103
6.2.1使用setSerialSignal设置串口控制信号 104
6.2.2使用getSerialSignal读入串口控制信号 107
6.2.3文件open系统调用如何影响DTR和RTS信号 109
6.2.4使用querySerial为bash脚本提供串行通信功能 110
6.3小结 114
6.4补充读物 115
第7章 并行接口 116
7.1使用并口进行控制 117
7.2使用端口I/O控制标准并口 120
7.2.1使用端口I/O监测缆车运行状况 120
7.2.2使用端口I/O控制造雪设备 123
7.3使用ppdev控制标准并口 125
7.4开发定制的设备驱动程序 128
7.4.1理解helloworld_proc_module 129
7.4.2在MediaEngine上编译、插入模块并测试helloworld_proc_module 134
7.5使用定制设备驱动程序liftmon_snowcon控制标准并口 135
7.5.1增强helloworld_proc_module以创建liftmon_snowcon 136
7.5.2在MZl04上编译、插入和测试liftmon_snowcon 146
7.6小结 149
7.7补充读物 149
8.1什么是USB 150
第8章 USB接口 150
8.2开拓者项目的USB硬件 152
8.2.1 USB音频:Yamaha YST-MS35D USB扬声器 152
8.2.2 USB视频捕捉:Kensington VideoCAM super-VGA PC摄像头 156
8.2.3 USB存储:SanDisk USB SmartMedia读卡器 160
8.3小结 164
8.4补充读物 164
第9章 内存I/O接口 165
9.1硬件设计过程 165
9.2.1设计MediaEngine的外部接口硬件 166
9.2为MediaEngine开发缆车监测和造雪设备控制功能 166
9.2.2 MediaEngine的内存映射空间寻址 168
9.2.3 MediaEngine的寄存器基址寻址 169
9.2.4为MediaEngine配置内存控制器 169
9.2.5为MediaEngine分配输出模块启用信号 169
9.2.6为MediaEngine配置I/O端口控制器 169
9.2.7为MediaEngine编写helloworldbit测试驱动程序 170
9.2.8为MediaEngine编写liftmon_snowcon设备驱动程序 174
9.3为RPX-CLLF开发缆车监测和造雪设备控制功能 184
9.3.2为RPX-CLLF寻找内存映射空间 185
9.3.1为RPC-CLLF设计外部硬件接口 185
9.3.3为RPX-CLLF寻找寄存器基址 187
9.3.4为RPX-CLLF配置内存控制器 187
9.3.5为RPX-CLLF分配输出模块启用信号 188
9.3.6为RPX-CLLF配置I/O端口控制器 188
9.3.7为RPX-CLLF编写helloworldbit测试设备驱动程序 188
9.3.8为RPX-CLLF编写liftmon_snowcon设备驱动程序 192
9.4小结 202
9.5补充读物 202
10.1温度测量和显示 203
第10章 同步串行通信接口 203
10.2 SPI通信与LM70 204
10.2.1将LM70连接到x86的并行打印口 205
10.2.2将LM70连接到MediaEngine 212
10.3与飞利浦SAA1064进行12C通信 219
10.3.1将SAA1064连接到x86并行打印端口上 219
10.3.2将SAA1064连接到RPX…CLLF 224
10.4小结 234
10.5补充读物 235
11.1 Linux计时源 236
第1 1章 使用中断计时 236
11.2测量中断响应时间 237
11.2.1在MZ104上测量中断响应时间 238
11.2.2在MediaEngine目标机上测量中断响应时间 243
11.2.3在RPX-CLLF目标机上测量中断响应时间 250
11.2.4对中断响应时间测量的总结 255
11.3比赛计时器的实现 256
11.3.1使用任务队列处理比赛计时器的中断 257
11.3.2使用系统定时器进行比赛计时状态的显示 258
补充读物 269
11.4小结 269
第12章 系统集成 270
12.1系统集成概述 270
12.2安装系统集成应用程序 271
12.3创建并测试开拓者项目的数据库 275
12.4开发目标机和CGI集成脚本 278
12.4.1采集和发布温度数据 278
12.4.2采集并发布图像数据 284
12.4.3采集游客标识信息并允许乘坐 289
12.5小结 292
12.6补充读物 293
第13章最后的思考 294
13.1 GUI开发 294
13.2实时能力 294
13.3嵌入式厂商简介 295
13.4开拓者项目的硬件 296
13.5小结 297
13.6补充读物 297