第1章 嵌入式系统课程教学、实验与课程设计的关系 1
1.1 嵌入式系统课程的教学特点 1
1.2 嵌入式系统实验教学与课程设计的关系 2
1.3 嵌入式系统课程设计的主要内容 2
1.4 课程设计要求及评分标准 4
第2章 ARM体系结构与汇编程序源代码分析 7
2.1 课程设计目的 7
2.2 课程设计要求 7
2.3 ARM处理器系列简介 7
2.4 ARM处理器的模式和寄存器结构 9
2.5 ARM处理器的指令系统 11
2.5.1 数据操作指令 11
2.5.2 比较指令 12
2.5.3 转移指令 13
2.5.4 存储器访问指令 13
2.6 ARM的中断结构 14
2.7 Linux中ARM汇编语言程序段分析 16
2.7.1 set_bit函数源代码分析 16
2.7.2 保存和恢复用户现场 17
2.7.3 memzero源代码分析 19
2.8 总结与问题 24
第3章 嵌入式系统引导程序分析 25
3.1 课程设计目的 25
3.2 课程设计要求 25
3.3 嵌入式系统引导程序 25
3.4 引导程序分析 27
3.4.1 1O引脚初始化 28
3.4.2 配置PXA255系统运行时钟 32
3.4.3 配置静态存储器和CF卡接口 33
3.4.4 配置SDRAM接口 36
3.5 本章总结和问题 38
第4章 生产者-消费者问题 41
4.1 课程设计目的 41
4.2 课程设计要求 41
4.3 Linux操作系统中的多线程API原语 41
4.4 线程间同步机制 43
4.5 生产者-消费者实例 47
4.6 总结与改进 50
第5章 心跳检测 53
5.1 课程设计目的 53
5.2 课程设计要求 53
5.3 心跳检测的基本原理 53
5.4 Linux下的socket程序设计 54
5.5 心跳检测系统的设计与分析 55
5.5.1 外围节点的设计 55
5.5.2 主控节点的设计 56
5.5.3 报文格式 57
5.5.4 通信协议的时间分析 58
5.6 总结与改进 59
第6章 CAN总线控制器 61
6.1 课程设计目的 61
6.2 课程设计要求 61
6.3 CAN总线简介 61
6.3.1 CAN总线的电气特性 62
6.3.2 CAN通信协议格式 62
6.4 CAN总线控制器SJA1000 65
6.4.1 SJA1000硬件结构 65
6.4.2 SJA1000外部引脚定义 66
6.4.3 SJA1000内部寄存器定义 67
6.4.4 SJA1000的验收滤波机制 68
6.5 CAN总线节点硬件结构 70
6.6 CAN总线节点软件设计 71
6.6.1 SJA1000初始化 72
6.6.2 发送程序 73
6.6.3 接收程序 75
6.7 总结与改进 77
第7章 嵌入式系统开发环境和Linux内核的构建 79
7.1 课程设计目的 79
7.2 课程设计要求 79
7.3 嵌入式系统开发模式 79
7.4 创建交叉编译工具链 80
7.4.1 创建编译环境 81
7.4.2 创建binutils二进制开发工具集合 82
7.4.3 创建gcc交叉编译器 83
7.4.4 创建glibc 83
7.4.5 建立gccC++编译器 84
7.5 开发主机和嵌入式系统之间的通信 85
7.5.1 minicom终端 85
7.5.2 BOOTP协议 85
7.5.3 TFTP协议 86
7.5.4 NFS网络共享 87
7.6 嵌入式Linux操作系统配置与编译 88
7.6.1 Linux内核重编译命令 88
7.6.2 Linux内核配置选项 89
7.7 总结与练习 91
第8章 A/D转换器驱动程序分析 93
8.1 课程设计目的 93
8.2 课程设计要求 93
8.3 Linux下设备驱动程序简介 93
8.3.1 设备分类 94
8.3.2 设备文件和设备号 94
8.3.3 设备文件的操作数据结构 95
8.3.4 驱动程序的注册与注销 96
8.3.5 设备的轮询与中断 97
8.3.6 设备驱动程序的其他问题 97
8.4 A/D转换驱动程序的分析 97
8.4.1 驱动程序的结构 98
8.4.2 S3C2410嵌入式处理器中的A/D转换器 98
8.4.3 A/D转换器的设备注册和注销 100
8.4.4 A/D转换驱动程序的文件访问功能实现 102
8.4.5 驱动程序在嵌入式Linux系统中的安装和使用 107
8.5 总结与改进 108
第9章 功耗检测系统 111
9.1 课程设计目的 111
9.2 课程设计要求 111
9.3 功耗检测系统的基本构成 111
9.4 功耗检测的电流传感器 112
9.5 A/D转换的软件操作 113
9.6 功耗检测设备和控制主机之间的通信协议 114
9.7 嵌入式检测设备的软件结构 117
9.8 控制主机的软件结构 119
9.9 总结与改进 123
第10章 网络门禁系统 125
10.1 课程设计目的 125
10.2 课程设计要求 125
10.3 网络门禁系统的需求分析 125
10.4 磁条读写器原理与使用 127
10.4.1 磁卡基本原理 127
10.4.2 磁条读写器的原理 128
10.4.3 磁条读写器的编程接口 129
10.5 嵌入式门禁控制器 129
10.5.1 主控CPU的硬件结构 129
10.5.2 网络接口 131
10.5.3 门禁控制器软件结构 134
10.6 网络安全机制 136
10.6.1 网络安全技术简介 136
10.6.2 门禁系统中的网络安全方案 138
10.7 数据传输通信协议设计 140
10.8 控制主机软件结构 144
10.8.1 控制主机软件总体结构 144
10.8.2 在线部分软件结构 145
10.8.3 控制主机数据库系统设计 146
10.9 总结与改进 147
第11章 数字相框 149
11.1 课程设计目的 149
11.2 课程设计要求 149
11.3 数字相框的需求分析 149
11.3.1 数字相框产品的主要特点和设计要求 149
11.3.2 半导体存储卡的选择 150
11.3.3 数字相框软硬件平台的选择 151
11.4 数字相框的软件总体设计 153
11.5 基于Qt的图形界面程序设计 155
11.5.1 Qt简介和信号/槽机制 155
11.5.2 数字相框中的对象通信机制 157
11.5.3 浏览界面的实现方案 158
11.6 CF卡的连接 160
11.6.1 CF卡的基本原理 160
11.6.2 CF卡的加载 161
11.7 控制按钮的实现 162
11.8 测试 164
11.8.1 软件测试的基本原理 164
11.8.2 数字相框的测试计划 165
11.9 总结与改进 167
附录A 第2章参考答案 169
附录B PXA255中若干寄存器的说明 173
附录C 生产者、消费者源代码 183
附录D 心跳检测系统源代码 187
附录E SJA1000的寄存器说明 201
附录F Linux的命令和配置内容 209
附录G Linux内核中常用的内部函数接口 219
附录H 功耗检测终端源代码 227
参考文献 234