第1章 嵌入式系统基础1
1.1 嵌入式系统简介1
1.1.1 嵌入式系统的概述1
1.1.2 嵌入式系统的组成2
1.1.3 嵌入式系统的应用领域3
1.1.4 嵌入式系统的发展趋势5
1.2 嵌入式处理器6
1.2.1 嵌入式处理器的分类6
1.2.2 嵌入式处理器的现状6
1.2.3 ARM处理器8
1.3 嵌入式系统开发过程9
1.3.1 嵌入式系统的总体结构9
1.3.2 嵌入式系统的开发特点10
1.3.3 嵌入式系统的开发流程11
1.3.4 调试嵌入式系统12
练习题14
第2章 嵌入式Linux的开发环境及工具软件15
2.1 嵌入式Linux的开发环境15
2.1.1 嵌入式Linux开发环境建立15
2.1.2 嵌入式Linux开发的一般过程16
2.2 Linux开发工具的使用17
2.2.1 Linux开发工具GNU gcc的使用17
2.2.2 gdb调试器简介27
2.3 GNU make命令和Makefile 文件31
2.3.1 Makefile文件的规则 31
2.3.2 Makefile文件中隐含规则34
2.3.3 Makefile文件的命令 37
2.3.4 Makefile文件的变量38
2.3.5 Makefile文件的条件判断41
2.3.6 Makefile文件中常用函数43
2.3.7 子目录Makefile45
嵌入式Linux C语言应用程序设计与实践目 录 2.4 嵌入式Linux编辑器vi的使用46
2.4.1 vi的基本模式46
2.4.2 vi的基本操作47
2.5 Emacs综合编辑器48
2.5.1 Emacs的启动与退出48
2.5.2 Emacs的基本编辑49
2.5.3 Emacs的C模式51
2.5.4 Emacs的Shell模式52
练习题52
第3章 嵌入式C语言程序设计基础54
3.1 嵌入式C语言预处理伪指令54
3.2 嵌入式C语言的基本数据类型 58
3.2.1 数据类型与表达式58
3.2.2 常量60
3.2.3 变量 63
3.2.4 运算符 67
3.3 嵌入式Linux C语言程序结构和控制语句70
3.3.1 嵌入式Linux C语言3种程序结构70
3.3.2 嵌入式Linux C语言基本语句70
3.4 选择语句72
3.4.1 if语句72
3.4.2 switch语句73
3.5 循环语句74
3.5.1 while和do-while语句74
3.5.2 for循环语句74
3.5.3 break语句和continue语句75
3.5.4 ARM Linux循环语句应用实例76
3.6 goto语句77
3.6.1 goto语句语法77
3.6.2 ARM Linux中goto语句应用实例77
3.7 函数78
3.7.1 C语言函数概述78
3.7.2 函数定义与声明79
3.7.3 函数的参数、值和基本调用81
3.7.4 函数的嵌套、递归调用87
3.8 数组89
3.9 指针93
3.10 结构体与联合98
练习题107
第4章 嵌入式Linux C高级编程及调试举例109
4.1 内嵌汇编指令109
4.2 汇编语言与C/C++的混合编程113
4.3 从汇编程序中访问C程序变量113
4.4 汇编程序与C/C++程序的相互调用规则--ATPCS114
4.5 汇编程序与C/C++程序的相互调用116
4.6 嵌入式Linux 静态链接库与动态链接库120
4.6.1 Linux静态链接库及创建120
4.6.2 Linux动态链接库及创建121
4.7 嵌入式Linux 下程序调试应用举例128
4.7.1 Linux宿主机下的应用程序调试128
4.7.2 目标机下的应用程序调试139
练习题142
第5章 嵌入式Linux下文件的操作145
5.1 ARM Linux文件I/O系统概述145
5.1.1 虚拟文件系统145
5.1.2 通用文件模型146
5.2 不带缓存的文件I/O操作156
5.2.1 文件的创建和读写157
5.2.2 移动文件的读写位置161
5.2.3 文件的各个属性162
5.2.4 目录文件的操作163
5.3 Linux标准I/O流164
5.4 嵌入式Linux的文件操作应用举例177
5.4.1 文件锁的应用177
5.4.2 嵌入式Linux串行口通信设计182
练习题192
第6章 ARM Linux进程与进程调度193
6.1 ARM Linux进程管理193
6.1.1 进程描述符及任务结构193
6.1.2 进程的调度198
6.2 ARM Linux进程控制相关API201
6.3 ARM Linux进程间通信API212
6.3.1 Linux中进程间通信212
6.3.2 管道213
6.3.3 命名管道216
6.3.4 信号通信221
6.3.5 共享内存236
6.3.6 消息队列238
6.4 Linux守护进程245
6.4.1 守护进程概述245
6.4.2 编写规则245
6.4.3 守护进程实例247
练习题248
第7章 ARM Linux多线程开发实例250
7.1 Linux多线程相关API251
7.1.1 线程的创建252
7.1.2 线程的终止253
7.1.3 线程的标识256
7.1.4 线程的一次性初始化256
7.1.5 线程的私有数据258
7.2 信号灯259
7.2.1 POSIX有名信号灯的API函数259
7.2.2 POSIX基于内存的信号灯的API函数264
7.3 互斥量266
7.4 条件变量274
练习题279
第8章 ARM Linux网络编程实例280
8.1 TCP/IP协议简介280
8.1.1 TCP/IP的分层模型280
8.1.2 TCP/IP分层模型特点281
8.1.3 Internet层中的协议283
8.1.4 传输层的协议286
8.2 网络基础编程289
8.2.1 Socket概述289
8.2.2 Socket基础290
8.2.3 Socket网络编程295
练习题318
第9章 嵌入式Linux设备驱动程序开发319
9.1 嵌入式Linux的设备管理319
9.1.1 设备驱动和文件系统的关系320
9.1.2 设备类型322
9.1.3 设备号323
9.1.4 设备驱动中关键数据结构323
9.1.5 设备驱动开发中基本函数327
9.2 设备驱动模块化编程329
9.2.1 设备驱动程序的开发流程329
9.2.2 内核空间和用户空间329
9.2.3 设备注册和初始化330
9.2.4 中断管理331
9.2.5 加载和卸载驱动程序332
9.3 GPIO字符设备驱动程序设计333
9.3.1 GPIO接口设计333
9.3.2 LED驱动程序代码分析336
9.3.3 LED驱动程序加载及测试338
9.4 A/D转换器驱动程序设计339
9.4.1 S3C2410X中断控制器339
9.4.2 S3C2410X中断接口函数及宏定义342
9.4.3 S3C2410X A/D转换器345
9.4.4 A/D转换驱动程序设计347
9.4.5 A/D转换驱动程序的测试351
练习题353
参考文献354