标题：Linux嵌入式设计
版权信息
书 名: Linux嵌入式设计 
作　者：(美国)(BobSmith)史密斯 (美国)BillPierce (美国)GrahamPhillips
出版社： 人民邮电出版社
出版时间： 2008
ISBN: 9787115187475
开本： 16
定价: 49.00 元
内容简介
《Linux嵌入式设计》主要内容有：产品架构；如何与正在运行的守护进程对话；如何创建和保护守护进程；范例产品Laddie；日志和事件处理；基于Web的用户界面；命令行界面(CLI)；前端面板界面；帧缓存界面，包括红外遥控；SNMP界面，包括工具、MIB和代理。
《Linux嵌入式设计》适用于Linux产品的开发人员，有兴趣的读者可以以《Linux嵌入式设计》中所包含的原型产品为基础设计自己的Linux产品。对于那些打算尽快将守护进程的用户界面移植到不同的操作系统或不同的编程语言上的读者，《Linux嵌入式设计》也有一定参考价值。
编辑推荐
现代嵌入式产品是包括处理器、操作系统和应用软件的复杂设备。有些书讲述如何在嵌入式硬件上运行Linux。还有一些书讲述如何创建Linux应用程序，而《Linux嵌入式设计》是第一本描述如何结合两者开发Linux嵌入式产品的图书。您将亲身体会到为何LiNUX能够成为低成本和快速开发的最佳选择。
《Linux嵌入式设计》介绍了如何开发良好的嵌入式产品——具有更多类型的界面和更多动态界面更好的已调试界面。您将学会如何创建后端程序、如何处理异步事件。以及如何将各种用户界面（包括网络、帧缓存、红外控制、SNMP和前端面板）连接到这些进程。从而实现远程配置和操作。书中同时也介绍了运行时访问库（Run—timeAccessLibrary），该库为用户界面提供了一种与守护进程通信的统一机制。
从《Linux嵌入式设计》能够学到：
将用户界面从守护进程中分离出来；
让用户界面在运行时可以访问配置、状态和统计数据；
为应用程序添加网络管理功能；
使用SNMP和创建MlB：
创建基于网络的产品界面；
创建命令行界面；
创建以红外控制为输入的帧缓存界面：
命令行界面（CLI）；
管理产品中的日志和警报信息。
目录
第1章　产品体系结构　1
1.1　用户界面和守护进程　2
1.1.1　守护进程　2
1.1.2　用户界面　3
1.1.3　进程间通信　4
1.2　Laddie产品的体系结构　4
小结　5
第2章　管理守护进程　6
2.1　管理守护进程的通用方法　7
2.1.1　基于文件的管理　7
2.1.2　基于守护进程的Web界面　8
2.1.3　全能方法　8
2.2　控制和状态协议　9
2.2.1　控制和状态协议的要求　11
2.2.2　通用控制和状态协议　11
小结　15
第3章　使用实时访问　17
3.1　RTA产品体系结构　17
3.2　RTA守护进程体系结构　18
3.3　将列和表告知RTA　19
3.3.1　列　19
3.3.2　表　22
3.4　创建第一个RTA程序　23
3.4.1　问题描述　23
3.4.2　回顾代码　23
3.4.3　安装RTA　28
3.4.4　编译和连接　29
3.4.5　测试　29
3.5　一些SQL命令　31
3.5.1　SELECT　31
3.5.2　UPDATE　32
3.5.3　WHERE　32
3.5.4　LIMIT　32
3.6　RTA内置表介绍　33
3.6.1　rta_dbg　33
3.6.2　rta_stat　34
3.6.3　rta_tables　34
3.6.4　rta_columns　34
3.7　RTA表编辑器　35
小结　37
第4章　创建守护进程和保证守护进程安全　39
4.1　如何创建守护进程　39
4.1.1　加载守护进程配置数据　40
4.1.2　进入后台　40
4.1.3　成为进程和会话头(sessionleader)　41
4.1.4　设置工作目录　43
4.1.5　重定向stdin、stdout和stderr　43
4.1.6　创建日志　44
4.1.7　设置组ID和用户ID　44
4.1.8　检查pidfile　45
4.1.9　设置umask　48
4.1.10　创建信号处理器　48
4.2　如何保证守护进程安全　49
4.2.1　设计安全的守护进程　49
4.2.2　编写安全的守护进程　50
4.2.3　降低攻击的破坏程度　52
4.3　原型守护进程　54
小结　54
更多参考书目　55
第5章　范例产品：LADDIE报警系统　56
5.1　报警系统简介　57
传感器　57
5.2　Laddie功能特征　59
5.2.1　ladd的配置和状态　59
5.2.2　ladd的警报处理　61
5.3　Laddie硬件设计　62
5.4　Laddie软件设计　64
5.4.1　appInit()回调子程序　64
5.4.2　poll_timeout()回调子程序　65
5.4.3　user_update()回调子程序　67
5.5　创建和测试ladd　68
小结　69
第6章　日志　71
6.1　是否需要日志　71
6.2　日志系统的体系结构　72
6.2.1　信息源　73
6.2.2　信息路由　73
6.2.3　信息目的地　74
6.3　syslog　76
6.3.1　syslog体系结构　76
6.3.2　使用syslog　76
6.3.3　syslog协议　78
6.3.4　使用syslogd守护进程　79
6.3.5　局限、优点和syslogd的替代程序　80
6.4　按需定制的日志　81
小结　82
第7章　Laddie事件处理　84
7.1　新事件处理系统的基本原理　85
7.2　logmuxd的特性和功能　86
7.3　配置logmuxd　87
7.3.1　logmuxd源　87
7.3.2　logmuxd过滤器和重写　88
7.3.3　logmuxd目的地　90
7.4　使用logmuxd的范例　90
7.4.1　范例1：logmuxd示范　90
7.4.2　范例2：logmuxd和已接受TCP连接　91
7.4.3　范例3：logmuxd和SNMP陷阱　94
小结　96
第8章　设计Web界面　97
8.1　Web基础知识　98
8.1.1　DNS和TCP　98
8.1.2　webserver　99
8.1.3　CGI　99
8.1.4　JavaScript　99
8.1.5　发展中的技术　99
8.2　确定产品Web界面的需求　99
8.3　选择webserver　100
8.3.1　选择　100
8.3.2　使用PHP　100
8.3.3　个案研究：LinksysWRT54G无线路由器　101
8.3.4　个案研究：TUXwebserver　101
8.3.5　webserver比较　101
8.4　UI设计　105
8.4.1　菜单系统　105
8.4.2　对话框　106
8.4.3　错误信息　107
8.4.4　使用Ajax提高响应速度　109
8.5　实现　109
8.5.1　与守护进程交互　110
8.5.2　报警状态网页　112
8.5.3　报警设置网页　113
8.5.4　网页版面设计和菜单系统　114
8.5.5　webserver无关性　115
8.5.6　使用Ajax进行异步更新　116
8.6　改进我们的设计　121
8.7　资源　122
小结　122
第9章　设计命令行界面　124
9.1　为什么需要CLI　124
9.1.1　安全性　125
9.1.2　实用性　125
9.1.3　带宽　125
9.1.4　脚本化能力　125
9.1.5　配置备份和恢复　126
9.2　CLI的类型　126
9.2.1　句子　127
9.2.2　向导　127
9.2.3　菜单　128
9.2.4　有状态的　128
9.2.5　字符界面与线界面的比较　129
9.3　让用户可以访问CLI　129
9.4　LaddieCLI　129
9.4.1　Laddie命令汇总　130
9.4.2　setlogson　130
9.4.3　dump　131
9.4.4　help　131
9.5　测试命令的代码研究　132
9.5.1　CLI词汇表：token.l　132
9.5.2　CLI语法：syntax.y　133
9.5.3　C代码　133
9.5.4　代码研究注解　134
小结　134
第10章　创建前端面板界面　135
10.1　按钮、LED和LCD　135
10.1.1　按钮　136
10.1.2　LED　138
10.1.3　LCD　138
10.2　设计前端面板UI　139
10.2.1　简单化　140
10.2.2　尝试、失败、再次尝试　140
10.2.3　使用LCD菜单和模式　141
10.2.4　快速响应　142
10.3　Laddie前端面板　144
10.3.1　Laddie的LCD菜单系统　145
10.3.2　Laddie前端面板硬件　146
10.3.3　Laddie前端面板UI　149
10.4　改进我们的设计　152
小结　152
第11章　设计帧缓存界面　154
11.1　视频内存的工作原理　155
11.1.1　视频内存中的字节是如何被解释的　155
11.1.2　视频内存是如何被映射到显示屏上的　157
11.2　Linux帧缓存设备驱动程序　158
11.2.1　使用open、read、write和close操作帧缓存　158
11.2.2　使用ioctl命令配置帧缓存　159
11.2.3　一个简单帧缓存图形程序　161
11.3　图形库　165
11.4　使用SDL创建“Hello,world!”范例　166
11.4.1　初始化库　167
11.4.2　初始化帧缓存　167
11.4.3　创建一个surface　168
11.4.4　显示surface　168
11.4.5　处理事件　168
11.5　图形UI工具包　169
11.5.1　使用STBmenu创建简单UI　170
11.5.2　使用STBmenu创建“Hello,world!”范例　173
11.6　Laddie帧缓存UI　176
小结　178
第12章　红外遥控器　180
12.1　使用红外线进行通信　180
12.1.1　编码遥控命令的协议　181
12.1.2　通过调制减少对红外线信号的干扰　182
12.1.3　使用红外线控制产品　183
12.2　遥控接收器的硬件　183
12.2.1　探测和解调红外线信号　183
12.2.2　解码遥控波形　184
12.2.3　Laddie产品的红外线遥控硬件　186
12.3　为Laddie产品安装和配置LIRC　189
12.3.1　安装LIRC软件　190
12.3.2　配置lirc_serial内核设备驱动程序　191
12.3.3　测试lirc_serial驱动程序　193
12.3.4　配置lircd守护进程　195
12.3.5　测试lircd守护进程　197
12.3.6　配置应用程序的LIRC工具　198
12.3.7　控制Laddie产品　199
小结　200
第13章　SNMP实践概述　202
13.1　快速浏览术语　203
13.2　软件　204
13.3　安装SNMP　204
13.3.1　下载和安装　204
13.3.2　检查安装　205
13.3.3　配置代理　205
13.3.4　启动代理　206
13.4　探索SNMP　206
13.4.1　可读性强的MIB文件名　208
13.4.2　联网打印机　209
13.4.3　snmptable命令　209
13.4.4　MIB-2：TCP连接表　210
13.4.5　MIB-2：UDP表　211
13.4.6　MIB-2内容　212
13.5　使用SNMP写入值　213
13.5.1　设置sysContact　213
13.5.2　设置sysName　215
13.6　SNMP陷阱　216
13.6.1　使用snmptrapd接收陷阱　216
13.6.2　携带数据的陷阱：linkUp和linkDown　218
小结　220
第14章　设计SNMPMIB　221
14.1　我们的目标　221
14.2　企业编号　222
14.3　MIB文件　223
14.4　LADDIE-GROUP-SMI　224
14.5　创建LAD-MIB　227
14.5.1　模块定义　228
14.5.2　版本号和防区数　230
14.5.3　警报表　232
14.5.4　陷阱　234
14.6　验证MIB　235
小结　236
第15章　实现你的SNMPMIB　237
15.1　Net-SNMP代理　238
15.2　MIB框架——mib2c　241
15.3　头文件——ladProject.h　242
15.4　代码文件——ladProject.c　243
15.4.1　包含　243
15.4.2　基准OID　244
15.4.3　MIB对象定义　244
15.4.4　RTA访问函数　247
15.4.5　初始化函数　249
15.4.6　标量　250
15.4.7　读警报表　252
15.4.8　写警报表　255
15.5　重访Makefile　258
15.6　调试　259
15.7　陷阱　260
小结　260
附录A　RTA参考资料　262
A.1　RTA概述　263
A.2　RTA常量　264
A.3　数据结构　264
A.4　API子程序　268
A.4.1　dbcommand()子程序　268
A.4.2　rta_add_table()子程序　269
A.4.3　SQL_string()子程序　270
A.4.4　rta_config_dir()子程序　270
A.4.5　rta_save()子程序　271
A.4.6　rta_load()子程序　271
A.5　SELECT和UPDATE语法　272
A.5.1　SELECT命令　272
A.5.2　UPDATE命令　273
A.6　内部RTA表　274
A.6.1　rta_tables表　274
A.6.2　rta_columns表　275
A.7　调试配置　275
A.8　错误信息　276
A.8.1　SQL请求信息　276
A.8.2　内部调试信息　277
A.9　回调函数　278
A.9.1　读回调函数　278
A.9.2　写回调函数　279
附录B　SNMP综述　280
B.1　为什么使用SNMP　280
B.2　代理和管理器　281
B.3　名字空间、语法和协议　281
B.4　MIB　281
B.5　OID　282
B.6　MIB-2　283
B.7　SMI　285
B.8　SNMP协议　286
B.8.1　基本命令：GET、SET和GETNEXT　286
B.8.2　使用GETNEXT遍历MIB　286
B.8.3　陷阱和通告　287
B.8.4　命令行工具：范例　287
B.9　SNMPv1、SNMPv2和SNMPv3　288
B.10　SNMP数据类型　289
B.11　SNMP表　290
B.12　定义新类型　291
B.13　MIB文件的结构　292
小结　294
附录C　安装帧缓存设备驱动程序　295
C.1　为你的视频卡寻找帧缓存设备驱动程序　295
C.1.1　vesafb驱动程序　296
C.1.2　硬件相关驱动程序　296
C.1.3　没有包含在Laddie光盘中的驱动程序　297
C.2　配置帧缓存设备驱动程序　297
C.2.1　vesafb驱动程序　298
C.2.2　硬件相关驱动程序　299
附录D　DB-To-File工具　301
D.1　概述　301
D.2　表定义　302
D.2.1　tbl2file表　302
D.2.2　tbl2field表　303
D.3　tbl2filed范例　304
D.4　安全注意事项　305
附录E　Laddie产品可启动光盘　306
E.1　运行Laddie产品　306
E.1.1　启动光盘　307
E.1.2　操作帧缓存用户界面　307
E.1.3　访问Web界面　307
E.1.4　体验Linuxshell和其他用户界面　308
E.1.5　关闭Laddie产品　308
E.2　了解光盘内容　308
E.2.1　Laddie产品源代码　309
E.2.2　Laddie产品库　310
E.2.3　启动脚本　310
E.2.4　LinuxFrom-Scratch发行版及附加软件包　310
E.3　重新编译Laddie产品　311
……