第1章 嵌入式Linux系统简介 1
1.1嵌入式系统 1
概述 1
嵌入式系统的发展历史 2
嵌入式Linux的特性 3
1.2嵌入式Linux操作系统简介 3
Linux系统 3
从Linux到嵌入式Linux 4
常用嵌入式Linux系统简介 6
1.3常见嵌入式处理器简介 7
ARM处理 7
Motorola公司处理器 8
IBM Power PC处理器 8
Intel x86系列处理器 9
MIPS 9
1.4选择开发平台 9
硬件平台的选择 10
软件平台的选择 11
集成开发环境考虑的因素 12
硬件调试工具的选择 13
软件组件的选择 13
第2章 Linux编程基础 14
2.1 Shell编程 14
2.2 Makefile写法 17
为什么要使用makefile 17
基本makefile结构 18
编写make规则 20
一个比较有效的makefile 23
使用autotools建立makefile 24
2.3开发工具 28
Vi工具简介 28
GCC工具 32
GDB调试 36
GDB调试嵌入式系统 37
第3章 Linux操作系统实践 42
3.1 Linux操作系统分析 42
Linux源码文件系统目录 42
Linux在x86 PC机上的启动分析 43
3.2 Linux内核分析 45
Linux进程线程调度 45
内存管理 49
嵌入式Linux实时性解决方案 52
3.3 Linux操作系统的安装 56
3.4内核编译实践 68
编译步骤 68
内核选项 69
第4章 嵌入式Linux系统交叉编译环境的安装与配置 80
4.1交叉编译环境的安装 80
相关软件包的下载 80
Linux头文件的安装 82
编译安装binutils 83
编译安装gcc的c编译器 83
编译安装glibc 84
4.2交叉编译环境的配置 84
B ootloader概述 84
常见的Linux bootloader的介绍 86
三星SMDK2410开发板上的bootloader分析 87
μ-Boot在s3c2410上的移植分析 101
第5章 Linux系统的进程与线程管理 104
5.1进程/线程的概念 104
进程的概念 104
线程的概念 108
进程状态及转换 110
5.2进程的基本操作 110
进程信息获取函数 110
设置进程的属性 112
创建进程 114
执行进程 115
退出进程 120
跟踪进程 125
5.3进程通信与同步 129
5.4线程基本操作与相关函数 145
线程的执行层次和流程 145
线程相关函数 146
第6章 Linux驱动开发基础 151
6.1引言 151
6.2模块编程 152
模块编程简介 152
helloworld模块 153
程序编译及注意事项 154
从2.4到2.6驱动开发的变化 155
第7章 嵌入式Linux的网络体系结构和网卡驱动 165
7.1嵌入式Linux的网络协议栈结构 165
网络协议栈结构 165
嵌入式系统中实现网络协议 165
Linux TCP/IP网络协议栈 166
Linux网络设备驱动程序分析 167
网络设备驱动程序的加载 174
7.2 DM9000网卡驱动程序的编写 176
DM9000网卡功能简介 176
DM9000相关寄存器 176
DM9000以太网控制器的内存结构 180
DM9000网卡驱动程序分析 180
7.3 FTP应用程序在嵌入式Linux下的应用 184
FTP协议的描述 184
嵌入式FTP服务程序原理 185
第8章 嵌入式Linux中Socket套接口开发 188
8.1引言 188
8.2 Socket编程简介 188
基本概念简介 189
服务方式 190
客户机/服务器模式 191
套接字分类 192
8.3 TCP Socket案例分析 192
常用函数介绍 192
代码分析 195
运行结果分析 198
8.4 UDP Socket案例分析 199
UDP Socket简介 199
代码分析 200
程序运行结果分析 203
8.5 raw socket案例分析 204
raw socket简介 204
一个简单的例子 209
程序运行结果分析 211
8.6总结与提高 212
一个综合实验 212
运行结果分析 230
第9章 Linux字符设备驱动程序 232
9.1 Linux字符设备驱动程序简介 232
字符设备驱动相关函数和结构体简介 232
一个简单的字符设备驱动程序例子 236
9.2 Linux系统中断、异常和系统调用的分析 238
Linux系统中断的分析 238
ARM嵌入式设备对中断的处理 239
Linux系统异常的分析 240
ARM嵌入式设备对异常的处理 241
Linux系统调用的分析 242
Linux处理中断的相关函数 243
中断与异常的简单测试 247
9.3 Linux的LED驱动程序编写 248
LED显示输出的原理和结构 248
简单的三色LED驱动程序的编写 249
第10章 嵌入式USB设备的驱动开发 252
10.1 USB技术介绍 252
USB技术的发展历史 252
USB技术概述 253
10.2 USB系统构成 254
USB应用系统设计的组成 255
USB嵌入式系统的数据传输模式 256
USB应用系统的设备初始化和数据传输 258
10.3 USB主机驱动结构和相关函数 259
USB主机驱动结构 259
主要的通用数据结构和接口函数 261
针对特定芯片组的USB Host驱动程序 265
10.4 USB设备驱动结构和相关函数 268
数据结构usb_driver 268
USB数据传输相关函数 268
USB驱动程序注册函数 271
USB驱动程序卸载函数 272
10.5设备类驱动与相关函数 273
Linux内核中USB鼠标实现层次 273
相关结构体和主要函数功能 274
10.6设备端USB驱动 278
10.7 S3C2410 USB控制器 279
第11章 嵌入式Linux Qt程序的开发 282
11.1图形用户界面的发展现状 282
11.2 Qt简介 283
Qt/Embeded体系结构 283
Qt编程的特点 283
QMake简介 288
11.3建立Qt/Embedded开发环境 288
建立QTE开发环境 290
建立QTE程序的PC机仿真环境 291
Qt测试:编写运行Qt环境下的测试程序 291
11.4一个简单的Qt程序 293
第12章 Java与嵌入式开发 301
12.1 Java简介 301
Java语言简介 301
Java语言的特点 302
Java程序的运行过程 302
Java与嵌入式的结合 303
12.2 Linux下的Java开发简介 304
Java开发环境设置 304
一个简单的Java程序 307
12.3 J2ME 307
J2ME概述 307
J2ME的体系结构 308
J2ME配置简介 309
J2ME简表 311
其他J2ME规范 318
12.4使用Java语言在Palom OS上进行开发 320
Sun的解决方案:KVM、 Configuration和Profile 321
Kawt的解决方案 322
IBM解决方案 323
Waba/SuperWaba解决方案 324
12.5 Java虚拟机 325
Java虚拟机简介 325
Java虚拟机的体系结构 326
虚拟机移植案例 330
第13章 嵌入式数据库的开发 333
13.1嵌入式数据库介绍 333
嵌入式数据库简介 333
嵌入式实时数据库应用现状 334
常用嵌入式数据库介绍 335
13.2 mSQL数据库 338
mSQL构成 338
mSQL安装 339
mSQL的配置 342
13.3 mSQL数据库的使用 344
mSQL目录结构 344
mSQL服务器的标准命令 344
mSQL支持的SQL语句 347
mSQL数据库应用实例 351
13.4利用mSQL提供的API进行二次开发 353
mSQL提供的API函数 354
案例分析 361
第14章 基于ARM9的嵌入式远程视频采集系统的实现 365
14.1视频采集系统体系结构设计 365
视频采集系统的硬件结构 365
视频采集系统的软件结构 366
14.2视频采集系统的系统程序配置 366
JFFS2文件系统的建立 366
摄像头驱动的加载 369
14.3视频采集系统的应用程序配置 369
视频采集应用程序的设计 369
视频编码程序的设计 373
视频数据网络传输程序的设计 378
14.4 测试结果 383
第15章 综合实验 385
15.1嵌入式开发流程简介 385
嵌入式开发的硬件结构简介 385
嵌入式开发的软件结构简介 386
嵌入式开发模式 386
嵌入式开发流程 387
15.2项目背景简介 389
MIPv6基本操作简介 389
新IPv6协议,报文类型和目的选项 390
移动IPv6安全概述 402
15.3实现代码分析 408
数据更新维护模块 410
解析和构造报文 411
移动检测模块 421
移动报文收发与路由优化 423
绑定模块 425
15.4嵌入式开发环境搭建 430
拓扑环境的介绍 430
宿主机的安装及配置 431
μ-Boot的启动 435
MIPv6-1.1的移植 437
15.5代码的调试 439
在宿主机生成目标板能够利用的FS(文件系统) 439
minicom的使用 440
镜像的下载 440
查看启动信息并修改bug 440
15.6系统测试 443
软件测试简介 443
嵌入式系统测试简介 445
协议一致性测试 447
参考文献 451