第1章 我们的目标——嵌入式网络控制系统 1
1.1嵌入式系统的现状和发展趋势 1
1.2网络技术在嵌入式Linux系统中的应用 2
1.3本书的目标——嵌入式网络控制系统 3
1.3.1系统的体系结构和目标功能 3
1.3.2系统开发涉及的硬件知识 5
1.3.3系统开发涉及的软件知识 5
1.3.4系统实现的意义及学习收获 6
1.4开发步骤及本书的内容安排 7
第2章 嵌入式Web服务器的硬件设计 8
2.1嵌入式Web服务器硬件功能分析及电路组成 8
2.2 CPU芯片选型 9
2.2.1 CPU性能需求 9
2.2.2 ARM系列CPU选型及性能比较 10
2.2.3 Atmel AT91SAM9G20芯片简介 12
2.3网络芯片选型 13
2.3.1网络芯片功能需求及选型 13
2.3.2 DAVICOM DM9161BIEP芯片特点介绍 14
2.3.3 DAVICOM DM9000CIEP芯片特点介绍 15
2.4电源电路设计 16
2.5 RTC电源电路设计 18
2.6时钟电路设计 18
2.7存储电路设计 19
2.7.1 SDRAM、Flash简介 19
2.7.2存储器芯片选型 21
2.7.3 SDRAM电路设计 22
2.7.4 Nand Flash电路设计 23
2.8 DM9161BIEP网络接口电路设计 24
2.9 DM9000CIEP网络接口电路设计 26
2.10 USB接口电路设计 28
2.11 DEBUG调试串口电路设计 29
2.12 JTAG-ICE仿真接口电路设计 29
2.13复位电路设计 30
2.14 PCB设计技巧 31
2.15本章小结 34
第3章 搭建嵌入式Linux开发平台 35
3.1嵌入式Linux简介 35
3.2嵌入式Linux的结构组成和启动流程 36
3.2.1嵌入式Linux的结构组成 36
3.2.2嵌入式Linux启动流程分析 37
3.3嵌入式Linux交叉编译环境的建立 39
3.3.1嵌入式系统开发的一般方法 39
3.3.2建立交叉编译工具 39
3.4 AT91Bootstrap移植 43
3.4.1编译AT91Bootstrap 43
3.4.2下载AT91Bootstrap 47
3.5 U-Boot移植及烧写 51
3.5.1 U-Boot启动过程简介 51
3.5.2 U-Boot的移植 52
3.5.3 U-Boot烧写 61
3.6 Linux内核移植及烧写 62
3.6.1 Linux内核源码结构 62
3.6.2 Linux内核配置及编译 63
3.6.3 Linux内核烧写 75
3.7根文件系统移植及烧写 76
3.7.1常见根文件系统简介 76
3.7.2构建Yaffs2根文件系统 77
3.7.3 Yaffs2烧写 88
3.8 NFS配置及使用 93
3.9 PC宿主机开发环境的建立 97
3.9.1集成开发环境Eclipse简介 97
3.9.2获取Eclipse 98
3.9.3利用Eclipse编译Helloworld工程 100
3.9.4利用Eclipse、GDB调试H elloworld工程 105
3.10本章小结 111
第4章 嵌入式Linux多任务编程 112
4.1程序、进程、线程及多任务 112
4.1.1程序和进程 112
4.1.2进程和线程 113
4.1.3多任务处理 113
4.2进程 114
4.2.1 Linux进程描述符、控制块 114
4.2.2进程创建函数fork() 115
4.2.3 exec()函数族 117
4.2.4 wait()和waitpid()函数 119
4.2.5 system()函数 121
4.2.6进程终止函数exit() 122
4.3线程 123
4.3.1线程的创建 123
4.3.2线程的终止 125
4.3.3线程的属性 126
4.3.4修改线程属性 127
4.3.5线程例程 129
4.4多任务间的通信和同步 131
4.4.1管道 131
4.4.2信号 135
4.4.3消息队列 141
4.4.4共享内存 146
4.4.5信号量 152
4.4.6互斥锁 158
4.5线程池 163
4.5.1线程池的实现原理 164
4.5.2线程池的数据类型和函数 165
4.5.3线程池实现例程 168
4.6本章小结 173
第5章 基于Java技术的动态网页监控界面的设计 174
5.1 Web界面简介 174
5.1.1 Web界面的优势 174
5.1.2 Web界面的工作原理 175
5.2确定产品Web界面的需求 175
5.2.1 Web用户界面的设计需求 176
5.2.2 Web用户界面的设计方案选择 176
5.3 HTML语言 178
5.3.1 HTML语言概述 178
5.3.2 HTML的文本组织结构 179
5.3.3 HTML与CGI 181
5.4 Java Applet实现图形界面 184
5.4.1面向对象Java程序设计基础 184
5.4.2 Java Applet的工作原理 185
5.4.3 Java开发环境的建立 186
5.4.4 Java Applet与HTML 194
5.4.5 Java图形设计——AWT构件 195
5.4.6 Java输入/输出流 217
5.4.7 Java网络通信 220
5.4.8 Java多线程编程 223
5.5嵌入式网络控制系统动态监控界面的实现 228
5.5.1 Web监控界面功能分析 228
5.5.2技术方案 229
5.5.3 HTML的实现 229
5.5.4 Java Applet程序的实现 230
5.5.5 CGI程序的实现 250
5.6本章小结 251
第6章BOA服务器的移植与应用 252
6.1 Web服务器简介 252
6.2嵌入式Web服务器功能分析 253
6.3选择Web服务器 254
6.3.1常见Web服务器软件 255
6.3.2我们的选择 258
6.4通用网关接口CGI 260
6.5嵌入式Web服务器BOA的移植及测试 262
6.6 CGI程序测试 274
6.7常见问题及解决方法 276
6.8本章小结 277
第7章 嵌入式数据库SQLite的移植和应用 279
7.1数据库基础知识 279
7.1.1数据库的含义 279
7.1.2嵌入式数据库的含义 280
7.2嵌入式数据库选型 280
7.2.1嵌入式数据库的选用原则 281
7.2.2常用的嵌入式数据库简介 281
7.2.3嵌入式数据库的性能比较 283
7.3 SQLite简介 284
7.3.1 SQLite的发展 284
7.3.2 SQLite应用场合 285
7.3.3 SQLite的数据类型 285
7.4 SQLite移植 287
7.5 SQLite命令及应用测试 288
7.5.1创建数据库 288
7.5.2表格的基本操作 290
7.5.3设置表格输出显示 291
7.5.4显示系统时间 294
7.5.5数据的导入、导出及备份 294
7.5.6显示数据库信息 296
7.6 SQLite和C语言编程 297
7.6.1 SQLite常量的定义 297
7.6.2 SQLite数据库API接口函数 298
7.6.3数据库操作实例 299
7.7 SQLite在嵌入式Web服务器中的应用 303
7.8本章小结 303
第8章 嵌入式Linux网络编程 305
8.1 OSI网络模型 305
8.1.1 OSI网络分层参考模型简介 305
8.1.2 OSI模型的数据传输 306
8.2 TCP IP协议栈 307
8.2.1 TCP IP协议参考模型简介 308
8.2.2网络接口协议及数据规则 309
8.2.3 IP协议 310
8.2.4 ICMP协议 312
8.2.5 ARP协议 316
8.2.6 TCP协议 317
8.2.7 UDP协议 322
8.3 Linux网络基础知识 324
8.3.1套接字基础知识 324
8.3.2网络字节顺序转换 326
8.3.3 IP地址格式转换 328
8.3.4 IP地址分类 330
8.3.5子网掩码 331
8.3.6端口 332
8.4 TCP网络编程 333
8.4.1 TCP网络编程流程 333
8.4.2创建网络套接字函数socket() 335
8.4.3绑定一个网络端口函数bind() 337
8.4.4监听网络端口函数listen() 339
8.4.5接收网络请求函数accept() 340
8.4.6连接网络服务器函数connect () 342
8.4.7发送网络数据函数send() 344
8.4.8读取网络数据函数recv() 346
8.4.9关闭网络套接字函数close() 348
8.5 TCP服务器/客户端实例 348
8.5.1 TCP服务器端网络编程 348
8.5.2 TCP客户端网络编程 351
8.6 UDP网络编程 353
8.6.1 UDP网络编程流程 354
8.6.2 UDP协议编程主要函数 355
8.7 UDP服务器/客户端实例 359
8.7.1 UDP服务器端网络编程 359
8.7.2 UDP客户端网络编程 361
8.8本章小结 364
第9章 服务器模型的建立 365
9.1循环服务器模型 365
9.1.1 TCP协议循环服务器 365
9.1.2 UDP协议循环服务器 371
9.2并发服务器模型 371
9.2.1 TCP协议并发服务器 372
9.2.2 UDP协议并发服务器 379
9.3 I/O多路复用并发服务器模型 382
9.4本章小结 390
第10章 嵌入式网络节点设计 391
10.1网络节点功能分析 391
10.2网络节点硬件设计 392
10.2.1关键器件选型 392
10.2.2 AT91SAM7x256基本电路设计 394
10.2.3网络部分电路设计 398
10.2.4 AT91SAM7x256引脚接口电路 399
10.2.5网络数据采集节点的电路设计 400
10.2.6网络远程控制节点的电路设计 404
10.3移植嵌入式操作系统μC/OS-II 406
10.3.1嵌入式操作系统的优点 406
10.3.2 μC/OS-II简介 407
10.3.3 μC/OS-II的特点 408
10.3.4移植μC/OS-II到AT91SAM7x256 410
10.4移植嵌入式TCP/IP协议栈LwIP 417
10.4.1 LwIP简介 417
10.4.2 LwIP移植浅析 418
10.5网络节点应用程序代码 422
10.5.1网络协议转换模块应用程序设计 422
10.5.2模拟量电流采集节点应用程序设计 429
10.5.3数字量输出远程控制节点应用程序设计 433
10.6本章小结 438
第11章 嵌入式Linux系统Web服务器的软件实现 439
11.1嵌入式Web服务器软件结构分析 439
11.1.1实时数据采集网络节点 439
11.1.2远程控制网络节点 440
11.1.3 Web浏览器用户配置、动态采集与显示 441
11.1.4数据库存储 441
11.2嵌入式Web服务器功能模块分析 442
11.2.1主函数的分析与设计 442
11.2.2网络数据采集模块的分析与设计 444
11.2.3服务器与Web界面通信模块分析与设计 446
11.2.4控制远程网络节点模块分析与设计 447
11.3嵌入式Web服务器功能模块代码实现 448
11.3.1主函数的实现 449
11.3.2网络数据采集代码的实现 454
11.3.3服务器与Web界面通信代码的实现 462
11.3.4控制远程网络节点代码的实现 466
11.4 CGI代码的实现 470
11.5嵌入式Web服务器代码的编译、调试和运行 473
11.5.1创建代码源文件 473
11.5.2用Eclipse创建一个工程 473
11.5.3设置工程编译及调试环境 476
11.5.4 server_ web代码测试运行 481
11.6本章小结 485
第12章 总结 486
12.1嵌入式Web服务器平台的改进 486
12.2网络节点的改进 487
参考文献 488