目 录
— 第一部分 –
常用的Linux开发工具
第1章 ARM技术概述 3
1.1 ARM处理器简介 3
1.1.1 ARM体系结构的发展 3
1.1.2 ARM体系结构的存储器格式 8
1.2 ARM技术应用领域的现状及发展趋势 9
1.3 习题 11
第2章 Linux开发基础 13
2.1 vi文本编辑器 13
2.1.1 vi的模式 13
2.1.2 vi的基本流程 14
2.1.3 vi各模式的功能键 15
2.2 GCC 编译器 16
2.3 GNU Make 17
2.3.1 基本结构 18
2.3.2 Makefile的规则 21
2.3.3 Makefile管理器的使用 22
2.3.4 Makefile管理器的实验 23
2.4 Linux常用命令 24
2.5 习题 31
第3章 shell编程 33
3.1 Linux常用的shell 33
3.2 shell 编程实例 34
3.2.1 实例程序 34
3.2.2 变量和运算符 35
3.2.3 表达式求值 40
3.2.4 脚本执行命令和控制语句 41
3.2.5 条件测试 45
3.3 循环结构 52
3.4 读取用户输入 57
3.5 脚本执行命令 58
3.6 创建命令表 60
3.7 其他shell编程工具 61
3.8 安全的delete命令 66
3.9 shell定制 67
3.9.1 修改环境变量 67
3.9.2 设置别名 69
3.9.3 个性化设置:修改.bashrc 文件 70
3.10 总结 71
3.11 习题 71
第4章 Exynos4412资源 73
4.1 Exynos4412基本功能 74
4.2 Exynos4412处理器引脚 74
4.3 Exynos4412软件资源 81
4.4 Exynos4412存储器结构 81
4.5 Exynos4412开发板资源 82
4.6 习题 83
— 第二部分 –
ARM Cortex-A9芯片Exynos4412的硬件及软件编程
第5章 Exynos4412的I/O端口和端口操作 87
5.1 Exynos4412的I/O端口寄存器分类 88
5.1.1 Exynos4412的I/O端口分组 88
5.1.2 Exynos4412的I/O端口寄存器 88
5.1.3 常用的Exynos4412的I/O端口控制寄存器 89
5.1.4 Exynos 4412的I/O端口数据寄存器 90
5.1.5 Exynos 4412的I/O端口编程 91
5.2 习题 92
第6章 Exynos4412的中断系统 93
6.1 中断程序硬件电路设计 94
6.2 中断控制寄存器设置 97
6.3 中断程序设计 100
6.4 习题 102
第7章 Exynos4412串口UART 103
7.1 Exynos4412串口UART概述 104
7.1.1 设置I/O引脚复用功能 104
7.1.2 设置UART数据帧格式 104
7.2 Exynos4412 UART实验电路 107
7.3 Exynos4412 UART实验程序 107
7.4 习题 109
第8章 Exynos4412的A/D转换控制 111
8.1 Exynos4412的A/D转换控制概述 112
8.1.1 A/D转换控制寄存器(ADCCON) 112
8.1.2 A/D转换控制程序的编写步骤 113
8.2 参考程序 113
8.3 习题 116
第9章 DMAC驱动控制 117
9.1 DMA工作过程 118
9.2 DMA传送的方式 118
9.3 PL330指令集 119
9.4 DMA编程 121
9.4.1 DMA驱动程序的编写 121
9.4.2 DMA驱动程序 122
9.5 习题 127
第10章 Exynos4412的PWM控制 129
10.1 PWM定时器概述 129
10.1.1 什么是脉宽调制 129
10.1.2 Exynos4412的PWM及其控制 130
10.1.3 Exynos4412定时器的特性 131
10.1.4 定时器操作示例 132
10.1.5 死区生成器 133
10.2 PWM输出电平控制 133
10.2.1 PWM的工作原理 134
10.2.2 PWM输出控制 134
10.3 PWM定时器控制寄存器 135
10.3.1 定时器配置寄存器0 135
10.3.2 定时器配置寄存器1 135
10.3.3 减法缓冲寄存器和比较缓冲寄存器 136
10.3.4 定时器控制寄存器 136
10.3.5 减法计数器观察寄存器 137
10.4 PWM实验 138
10.5 习题 139
第11章 Exynos4412的看门狗电路控制 141
11.1 看门狗电路的功能及工作原理 141
11.1.1 Exynos4412的看门狗控制 141
11.1.2 看门狗定时器的寄存器 142
11.2 参考程序 143
11.3 习题 145
第12章 Exynos4412的实时时钟 147
12.1 实时时钟在嵌入式系统中的作用 147
12.1.1 Exynos4412的实时时钟单元 147
12.1.2 Exynos4412的实时时钟寄存器 148
12.2 实验程序 149
12.3 习题 151
第13章 Exynos4412 I2C总线控制 153
13.1 I2C总线的工作原理 153
13.2 Exynos4412 I2C接口简介 156
13.3 Exynos4412 I2C控制寄存器 157
13.4 使用Exynos4412 I2C总线进行读/写的方法 158
13.5 I2C实验程序 159
13.6 习题 162
第14章 串行外设接口(SPI)介绍 163
14.1 SPI及操作 163
14.1.1 SPI的原理 163
14.1.2 SPI的特性 165
14.2 SPI寄存器 165
14.2.1 SPI状态寄存器 165
14.2.2 SPI时钟分频寄存器 166
14.2.3 SPI传输配置寄存器 167
14.2.4 SPI发送数据寄存器 167
14.2.5 SPI接收数据寄存器 167
14.2.6 SPI操作 168
14.2.7 SPI的传输格式 168
14.2.8 SPI通信模式 169
14.3 MCP2515芯片介绍 170
14.4 硬件实验电路 170
14.5 SPI2实验程序 171
14.6 习题 172
第15章 ADC驱动程序开发 173
15.1 硬件原理 173
15.2 ADC驱动程序 174
15.3 ADC make文件 178
15.4 ADC测试程序 179
15.5 习题 180
第16章 LED驱动程序设计 181
16.1 Linux设备分类 181
16.2 Linux设备驱动程序结构 182
16.3 Linux LED驱动程序 183
16.4 Linux LED驱动程序有关函数 183
16.5 Linux LED驱动程序设计 184
16.5.1 LED驱动电路 185
16.5.2 LED驱动程序 185
16.5.3 LED驱动程序测试 193
16.6 习题 194
第17章 PWM驱动程序开发设计 195
17.1 硬件连接 195
17.2 驱动程序源代码和头文件 196
17.3 PWM测试 205
17.4 习题 206
第18章 多线程程序设计 207
18.1 任务、进程和线程 207
18.1.1 任务 207
18.1.2 多线程编程常用函数 208
18.1.3 多线程编程实例 210
18.2 Linux进程间通信 215
18.2.1 进程间通信方法概述 215
18.2.2 进程间相关函数介绍 216
18.2.3 进程间通信编程实例 219
18.3 Linux进程管理 226
18.4 习题 227
第19章 Linux网络程序设计 229
19.1 TCP/IP的分层模型 230
19.2 UDP (用户数据报协议) 231
19.3 套接字(socket)概述 232
19.3.1 套接字定义 232
19.3.2 套接字类型 232
19.3.3 地址及顺序处理 232
19.4 套接字(socket)编程 237
19.5 Linux系统UDP网络协议编程 241
19.5.1 Ubuntu系统运行UDP网络协议程序 241
19.5.2 Ubuntu系统运行UDP网络协议代码 242
19.6 习题 244
— 第三部分 –
嵌入式开发的方法
第20章 嵌入式Linux程序开发 247
20.1 嵌入式Linux开发环境的搭建 247
20.1.1 嵌入式Linux系统
BootLoader(Uboot)移植 248
20.1.2 嵌入式Linux系统内核移植 252
20.1.3 嵌入式Linux系统文件系统移植 254
20.2 Linux系统配置TFTP 258
20.3 Linux系统配置NFS 259
20.4 习题 260
第21章 嵌入式Linux编译环境 261
21.1 配置开发环境网络 261
21.2 配置交叉工具链 262
21.2.1 将共享目录中需要下载的文件复制到 tftp目录中 264
21.2.2 解压文件系统 264
21.3 习题 265
第22章 嵌入式Linux联机试验 267
22.1 嵌入式Linux系统与开发板硬件连接 268
22.2 设置串口调试工具 268
22.3 修改开发板环境变量 270
22.4 烧写Uboot 271
22.5 习题 272
第23章 Exynos4412的启动 273
23.1 eMMC方式启动 273
23.2 Exynos4412 SD 卡的启动和制作 275
23.3 Exynos4412 NFS挂载方式启动 279
23.4 习题 282
第24章 嵌入式Linux程序的运行 283
24.1 复制代码、建立相关目录 283
24.2 编译代码 284
24.3 执行代码 284
24.4 习题 286
参考文献 287