




《嵌入式Linux与物联网软件开发:ARM处理器开发自学教程》适读人群 :从事 CPU 开发等相关工作的人员和相关专业的学生。
◎编辑推荐:
◆系统全面:条分缕析、由浅入深地讲解ARM处理器内核知识及周边知识。
◆精华原创:凝结作者多年研发及教学经验,帮助读者深度掌握ARM处理器编程。
◆可学习性:内容丰富、编排合理,是为“萌新学员”准备的豪华“工具包”。
◎内容简介:
本书基于 X210 开发板讲解了开发板的原理图、芯片的数据手册,以及开发板的刷机流程等,讲解了 GPIO、LED、DDR、串口、定时器、看门狗、SD 卡、NAND Flash、iNAND、I2C 总线、LCD 屏、A/D 转换器、电阻式和电容式触摸屏等 ARM CPU 常见外设的原理,并使用汇编和 C 语言编程进行了外设及代码重定位、时钟体系等的原理和功能的编程实践。
本书还基于ARM Cortex-A8 内核的三星 S5PV210 CPU,主要讲解 ARM CPU 开发的全套相关技术,包括ARM体系的背景知识、常规开发方式、ARM 体系结构和汇编指令集。
本书最后还利用X210 平台结合部分外设写了一个裸机串口的 Shell 作为小项目,帮助读者理解什么是交互式 Shell,为下一阶段U-Boot 及 Linux 内核的学习打好基础。在具体讲解过程中,本书引用了产品的一部分原始英文图表,并有针对性地进行了适当的说明。
作者简介:
朱有鹏,先后从事电子工程师、单片机软件工程师、嵌入式Linux软件工程师、物联网软件工程师、架构师等工作,“朱老师物联网大讲堂”创始人。擅长U-Boot、Linux内核等嵌入式底层和系统层开发、架构设计。擅长汇编、C/C++、Java、C#等常用开发语言,2015年起录制的在线视频课程“朱有鹏老师嵌入式Linux核心课程”累计学习人数超300万。
目录:
第1章 ARM那些你需要知道的事 01
1.1 ARM公司大事记 01
1.2 ARM公司的商业模式和生态系统 02
1.3 ARM处理器版本命名解析 03
1.4 CPU和SoC的区别及外围设备的概念 05
1.5 学习平台的选择 06
1.6 X210开发板介绍 07
1.7 基于单片机的嵌入式系统和基于复杂操作系统的嵌入式系统的区别 07
1.8 嵌入式开发学习和编程语言、英语水平等的关系 09
1.9 嵌入式系统的构成、特点和发展方向 10
1.10 交叉编译 12
1.11 CPU的设计原理、地址总线/数据总线/控制总线 13
1.12 嵌入式辅助开发工具 14
1.13 习题 14
第2章 ARM CPU的体系结构与汇编指令 15
2.1 可编程器件的编程原理 15
2.2 指令集对CPU的意义 16
2.3 CISC和RISC 16
2.4 统一编址和独立编址、冯·诺依曼结构和哈佛结构 17
2.5 软件编程控制硬件的关键——寄存器 19
2.6 S5PV210的地址映射详解 21
2.7 CPU的外存储器和接口方式 24
2.8 S5PV210的启动过程详解 27
2.9 ARM CPU的编程模式和7种工作模式 32
2.10 ARM CPU的37个寄存器详解 34
2.11 ARM CPU的异常处理方式简介 37
2.12 ARM汇编指令集详解 38
2.13 习题 48
第3章 开发板、原理图和数据手册 49
3.1 开发板配置简介 49
3.2 资料导读 50
3.3 开发板刷系统 56
3.4 新开发板X210BV3S 65
3.5 习题 66
第4章 GPIO和LED 67
4.1 交叉编译工具链 67
4.2 Makefile 70
4.3 mkv210_image.c 73
4.4 编写点亮LED程序前的相关准备工作 77
4.5 点亮LED 81
4.6 扩展:反汇编工具objdump 87
4.7 习题 89
第5章 SDRAM和重定位 90
5.1 关闭看门狗 90
5.2 设置栈和调用C程序 92
5.3 用汇编语言编写启动代码之开/关iCache 95
5.4 重定位引入与编程实现 96
5.5 SDRAM初始化 102
5.6 习题 117
第6章 时钟系统 118
6.1 SoC时钟系统简介 118
6.2 S5PV210的时钟系统 119
6.3 时钟设置的关键寄存器分析 126
6.4 实现时钟设置代码详解 126
6.5 习题 134
第7章 串口通信 135
7.1 通信发展史及电子通信涉及的基础概念 135
7.2 串口通信的基本概念 138
7.3 串口通信的基本原理 140
7.4 S5PV210串口通信详解 142
7.5 S5PV210串口通信编程实战 146
7.6 uart stdio的移植介绍 156
7.7 习题 164
第8章 按键和CPU中断系统 165
8.1 按键 165
8.2 S5PV210的中断体系介绍 167
8.3 异常向量表的编程处理 168
8.4 S5PV210中断处理的主要寄存器 170
8.5 中断处理的代码实现步骤 172
8.6 按键与外部中断 175
8.7 习题 176
第9章 定时器、看门狗和实时时钟等 177
9.1 定时器 177
9.2 S5PV210中的PWM定时器介绍 178
9.3 PWM波形介绍 183
9.4 蜂鸣器和PWM定时器编程实战 186
9.5 看门狗 192
9.6 看门狗的编程实战 194
9.7 实时时钟介绍 200
9.8 RTC编程实战 201
9.9 习题 208
第10章 SD卡启动 209
10.1 SD卡的特点和背景知识 209
10.2 SD卡的编程接口 210
10.3 S5PV210的SD卡启动详解 211
10.4 S5PV210的SD卡启动实战 214
10.5 区别于将代码分为两部分的另一种启动方式 217
10.6 习题 218
第11章 外存芯片NAND Flash和iNAND 219
11.1 NAND Flash的型号和命名 219
11.2 NAND Flash的单元组织:Block和Page 221
11.3 NAND Flash的坏块检查 222
11.4 SoC的NAND Flash控制器 224
11.5 NAND Flash操作代码解析 225
11.6 iNAND介绍 228
11.7 SD卡/iNAND硬件接口 228
11.8 SD/iNAND代码分析 230
第12章 I2C通信 238
12.1 I2C通信介绍 238
12.2 I2C通信的时序 239
12.3 S5PV210的I2C控制器 241
12.4 X210开发板的板载重力传感器介绍 243
12.5 I2C的通信流程 245
12.6 I2C通信代码分析 248
12.7 习题 250
第13章 A/D转换器 251
13.1 A/D转换器的引入 251
13.2 A/D转换器的主要相关概念 252
13.3 S5PV210的A/D转换控制器 255
13.4 硬件设计分析 258
13.5 软件设计 258
13.6 程序烧录与调试 260
13.7 习题 262
第14章 LCD屏 263
14.1 LCD简介 263
14.2 LCD设备的接口技术 265
14.3 LCD的显像原理和相关概念 267
14.4 颜色在计算机中的表示 272
14.5 S5PV210的LCD控制器 273
14.6 LCD编程实战 276
14.7 习题 295
第15章 触摸屏 296
15.1 输入设备简介及触摸屏介绍 296
15.2 电阻式触摸屏的原理 297
15.3 S5PV210的电阻式触摸屏控制器 298
15.4 电容式触摸屏的原理 301
15.5 FT5x06电容触摸IC简介 302
15.6 习题 303
第16章 Shell原理和问答机制引入 304
16.1 理解Shell 304
16.2 从零写最简单的Shell 306
16.3 将简易Shell移植到开发板中 308
16.4 定义标准命令集及解析 320
16.5 添加第一个命令 326
16.6 添加其他命令 332
16.7 实现开机倒计时自动执行命令 346
16.8 初步实现环境变量 354
16.9 习题 364
点击下载