书馨卡帮你省薪
欢迎光临中图网 请 | 注册
> >>
嵌入式LINUX与物联网软件开发:ARM处理器开发自学教程

嵌入式LINUX与物联网软件开发:ARM处理器开发自学教程

出版社:人民邮电出版社出版时间:2023-12-01
开本: 16开 页数: 364
中 图 价:¥62.9(7.0折) 定价  ¥89.8 登录后可看到会员价
加入购物车 收藏
运费6元,满39元免运费
?新疆、西藏除外
本类五星书更多>

嵌入式LINUX与物联网软件开发:ARM处理器开发自学教程 版权信息

嵌入式LINUX与物联网软件开发:ARM处理器开发自学教程 本书特色

系统全面

条分缕析、由浅入深地讲解ARM处理器内核知识及周边知识



精华原创

凝结作者多年研发及教学经验,帮助读者深度掌握ARM处理器编程



可学习性

内容丰富、编排合理,是为“萌新学员”准备的豪华“工具包”

嵌入式LINUX与物联网软件开发:ARM处理器开发自学教程 内容简介

本书基于ARM Cortex-A8 内核的三星 S5PV210 CPU,主要讲解 ARM CPU 开发的全套相关技术,包括ARM体系的背景知识、常规开发方式、ARM 体系结构和汇编指令集。本书还基于 X210 开发板讲解了开发板的原理图、芯片的数据手册,以及开发板的刷机流程等,讲解了 GPIO、LED、DDR、串口、定时器、看门狗、SD 卡、NAND Flash、iNAND、I2C 总线、LCD 屏、A/D 转换器、电阻式和电容式触摸屏等 ARM CPU 常见外设的原 理,并使用汇编和 C 语言编程进行了外设及代码重定位、时钟体系等的原理和功能的编程实践。本书*后还利用X210 平台结合部分外设写了一个裸机串口的 Shell 作为小项目,帮助读者理解什么是交互式 Shell,为下一阶段U-Boot 及 Linux 内核的学习打好基础。在具体讲解过程中,本书引用了产品的一部分原始英文图表,并有针对性地进行了适当的说明。 本书适合从事 CPU 开发等相关工作的人员和相关专业的学生阅读参考。

嵌入式LINUX与物联网软件开发:ARM处理器开发自学教程 目录

ARM那些你需要知道的事 01

1.1 ARM公司大事记 01

1.2 ARM公司的商业模式和生态系统 02

1.3 ARM处理器版本命名解析 03

1.3.1 如何描述ARM处理器的版本号 03

1.3.2 ARM处理器版本的发展历程 04

1.4 CPU和SoC的区别及外围设备的概念 05

1.4.1 CPU和SoC的区别 05

1.4.2 外围设备 06

1.5 学习平台的选择 06

1.5.1 学习平台的选择要求 06

1.5.2 为什么选择三星S5PV210 06

1.6 X210开发板介绍 07

1.7 基于单片机的嵌入式系统和基于复杂操作系统的

嵌入式系统的区别 07

1.7.1 芯片平台对比 08

1.7.2 片上资源、价格、应用领域上的对比 08

1.7.3 开发模式对比 08

1.7.4 技术特征对比 08

1.7.5 职业发展对比 09

1.8 嵌入式开发学习和编程语言、英语水平等的

关系 09

1.8.1 嵌入式开发学习和编程语言的关系 09

1.8.2 嵌入式开发学习和英语水平的关系 09

1.8.3 嵌入式开发学习和数电、模电的关系 09

1.8.4 嵌入式开发学习和专业的关系 09

1.8.5 嵌入式开发学习和个人性格的关系 10

1.9 嵌入式系统的构成、特点和发展方向 10

1.9.1 嵌入式系统的构成 10

1.9.2 嵌入式系统的特点 10

1.9.3 嵌入式系统的发展方向 11

1.10 交叉编译 12

1.10.1 软件开发的两种模式 12

1.10.2 交叉编译的特点 12

1.11 CPU的设计原理、地址总线/数据总线/控制

总线 13

1.11.1 CPU的设计原理 13

1.11.2 地址总线、数据总线和控制总线 13

1.12 嵌入式辅助开发工具 14

1.13 习题 14





ARM CPU的体系结构与汇编指令 15

2.1 可编程器件的编程原理 15

2.2 指令集对CPU的意义 16

2.3 CISC和RISC 16

2.4 统一编址和独立编址、冯·诺依曼结构和哈佛

结构 17

2.4.1 I/O与内存的统一编址和独立编址 17

2.4.2 冯·诺依曼结构和哈佛结构 18

2.5 软件编程控制硬件的关键——寄存器 19

2.5.1 寄存器的含义及查看方法 19

2.5.2 寄存器的分类 21

2.6 S5PV210的地址映射详解 21

2.7 CPU的外存储器和接口方式 24

2.7.1 SoC外存储器分类与介绍 25

2.7.2 S5PV210支持的外存储器 26

2.8 S5PV210的启动过程详解 27

2.8.1 不同计算机系统内存和外存配置的区别 27

2.8.2 S5PV210启动方式详解 28

2.8.3 X210开发板启动方式选择 30

2.9 ARM CPU的编程模式和7种工作模式 32

2.9.1 ARM CPU的编程模式 32

2.9.2 ARM CPU的7种工作模式 33

2.10 ARM CPU的37个寄存器详解 34

2.11 ARM CPU的异常处理方式简介 37

2.12 ARM汇编指令集详解 38

2.12.1 ARM汇编指令集总述 38

2.12.2 ARM汇编指令集中指令的分类及详细讲解 40

2.12.3 ARM汇编指令中的伪指令 46

2.13 习题 48





开发板、原理图和数据手册 49

3.1 开发板配置简介 49

3.2 资料导读 50

3.2.1 开发板硬件手册导读 50

3.2.2 X210核心板、底板原理图导读 51

3.2.3 S5PV210数据手册 55

3.3 开发板刷系统 56

3.3.1 刷机工具简介 56

3.3.2 开发板刷系统方法介绍 58

3.4 新开发板X210BV3S 65

3.5 习题 66





GPIO和LED 67

4.1 交叉编译工具链 67

4.2 Makefile 70

4.3 mkv210_image.c 73

4.3.1 mkv210_image.c的作用 73

4.3.2 mkv210_image.c代码解析 74

4.4 编写点亮LED程序前的相关准备工作 77

4.5 点亮LED 81

4.6 扩展:反汇编工具objdump 87

4.7 习题 89

SDRAM和重定位 90

5.1 关闭看门狗 90

5.2 设置栈和调用C程序 92

5.3 用汇编语言编写启动代码之开/关iCache 95

5.4 重定位引入与编程实现 96

5.4.1 重定位引入和链接脚本 96

5.4.2 重定位代码实现 99

5.5 SDRAM初始化 102

5.5.1 原理图中SDRAM相关部分分析 103

5.5.2 数据手册中SDRAM相关部分分析 104

5.5.3 代码实战 111

5.6 习题 117





时钟系统 118

6.1 SoC时钟系统简介 118

6.2 S5PV210的时钟系统 119

6.3 时钟设置的关键寄存器分析 126

6.4 实现时钟设置代码详解 126

6.4.1 S5PV210时钟设置的步骤分析 126

6.4.2 S5PV210时钟设置汇编语言代码分析 127

6.4.3 S5PV210时钟设置C语言代码分析 132

6.5 习题 134





串口通信 135

7.1 通信发展史及电子通信涉及的基础概念 135

7.1.1 通信发展史 135

7.1.2 电子通信中涉及的概念 136

7.2 串口通信的基本概念 138

7.3 串口通信的基本原理 140

7.4 S5PV210串口通信详解 142

7.4.1 原理框图与自动流控 142

7.4.2 3种扩展模式 144

7.4.3 串口通信中的中断与时钟 145

7.5 S5PV210串口通信编程实战 146

7.6 uart stdio的移植介绍 156

7.7 习题 164





按键和CPU中断系统 165

8.1 按键 165

8.2 S5PV210的中断体系介绍 167

8.3 异常向量表的编程处理 168

8.3.1 访问异常向量表 169

8.3.2 中断处理过程中汇编代码的使用 169

8.4 S5PV210中断处理的主要寄存器 170

8.5 中断处理的代码实现步骤 172

8.6 按键与外部中断 175

8.6.1 外部中断寄存器配置 175

8.6.2 外部中断实现按键 175

8.7 习题 176





定时器、看门狗和实时时钟等 177

9.1 定时器 177

9.2 S5PV210中的PWM定时器介绍 178

9.2.1 S5PV210的PWM定时器原理图简介 179

9.2.2 预分频器与分频器 180

9.2.3 TCNT、TCNTB、TCON和TCNTO寄存器

功能介绍 181

9.2.4 自动重载和双缓冲 183

9.3 PWM波形介绍 183

9.3.1 什么是PWM 183

9.3.2 PWM波形的生成原理 184

9.3.3 输出电平翻转器 185

9.3.4 死区生成器 185

9.4 蜂鸣器和PWM定时器编程实战 186

9.4.1 蜂鸣器的工作原理 186

9.4.2 原理图和硬件信息 187

9.4.3 驱动蜂鸣器的PWM定时器代码编写 188

9.4.4 编写C语言主函数、子函数 190

9.4.5 修改Makefile 191

9.5 看门狗 192

9.5.1 什么是看门狗及看门狗的作用 193

9.5.2 S5PV210看门狗的结构原理图 193

9.5.3 看门狗的主要寄存器 193

9.6 看门狗的编程实战 194

9.6.1 看门狗产生中断信号功能代码编写 194

9.6.2 看门狗产生复位信号功能代码编写 198

9.7 实时时钟介绍 200

9.7.1 S5PV210实时时钟的结构框图 200

9.7.2 S5PV210 RTC的主要寄存器 201

9.7.3 BCD码介绍 201

9.8 RTC编程实战 201

9.8.1 编程注意事项 201

9.8.2 实战步骤详解 202

9.8.3 示例程序详解 204

9.9 习题 208





SD卡启动 209

10.1 SD卡的特点和背景知识 209

10.2 SD卡的编程接口 210

10.2.1 物理接口 210

10.2.2 SD协议与SPI协议 210

10.3 S5PV210的SD卡启动详解 211

10.3.1 SoC为何要支持SD卡启动 211

10.3.2 SD卡启动的难点在哪里 211

10.3.3 SD卡启动流程 212

10.3.4 SoC支持SD卡启动的秘密 212

10.3.5 扇区和块的概念 213

10.3.6 用函数指针方式调用device copy

function 213

10.4 S5PV210的SD卡启动实战 214

10.4.1 任务:大于16KB的.bin文件使用SD卡

启动 214

10.4.2 代码划分为两部分(BL1和BL2)编写 214

10.4.3 BL1中的重定位 216

10.4.4 BL2远跳转 217

10.5 区别于将代码分为两部分的另一种启动方式 217

10.5.1 代码分为两部分启动的缺陷 217

10.5.2 U-Boot的SD卡启动 218

10.5.3 分析U-Boot的SD卡启动细节 218

10.6 习题 218





外存芯片NAND Flash和iNAND 219

11.1 NAND Flash的型号和命名 219

11.1.1 NAND Flash的数据位 219

11.1.2 NAND Flash的功能框图 219

11.2 NAND Flash的单元组织:Block和Page 221

11.2.1 带内数据和带外数据 221

11.2.2 NAND Flash的地址时序和命令码 222

11.3 NAND Flash的坏块检查 222

11.3.1 NAND Flash的页写操作 223

11.3.2 NAND Flash的擦除和页读操作 224

11.4 SoC的NAND Flash控制器 224

11.5 NAND Flash操作代码解析 225

11.6 iNAND介绍 228

11.7 SD卡/iNAND硬件接口 228

11.7.1 SD卡命令相应的操作模式 229

11.7.2 SD卡体系结构、内部寄存器 229

11.8 SD/iNAND代码分析 230

11.8.1 Hsmmc.h头文件CMD×和ACMD×命令码

分析 230

11.8.2 Hsmmc.c文件分析 233





I2C通信 238

12.1 I2C通信介绍 238

12.2 I2C通信的时序 239

12.2.1 I2C的空闲态/忙态、起始位/结束位 239

12.2.2 I2C数据传输格式(数据位和ACK) 240

12.2.3 数据在总线上的传输协议 240

12.3 S5PV210的I2C控制器 241

12.4 X210开发板的板载重力传感器介绍 243

12.4.1 原理图 243

12.4.2 重力传感器简介 244

12.4.3 I2C从设备地址 244

12.4.4 I2C从设备的通信速率 245

12.5 I2C的通信流程 245

12.5.1 I2C的通信流程寄存器分析 245

12.5.2 重力传感器读/写寄存器流程分析 247

12.6 I2C通信代码分析 248

12.7 习题 250





A/D转换器 251

13.1 A/D转换器的引入 251

13.1.1 模拟量和数字量 251

13.1.2 什么是A/D转换器 252

13.1.3 有A/D转换器自然就有D/A转换器 252

13.2 A/D转换器的主要相关概念 252

13.2.1 量程 252

13.2.2 精度 252

13.2.3 转换速率 253

13.2.4 A/D转换器的工作时钟框图 253

13.2.5 A/D转换器的通道数 254

13.2.6 A/D转换器和电阻式触摸屏的关系 255

13.3 S5PV210的A/D转换控制器 255

13.4 硬件设计分析 258

13.5 软件设计 258

13.6 程序烧录与调试 260

13.7 习题 262





LCD屏 263

14.1 LCD简介 263

14.1.1 什么是LCD 263

14.1.2 LCD的显示原理和特点 263

14.1.3 LCD屏的种类 264

14.1.4 其他类型的显示屏 264

14.2 LCD设备的接口技术 265

14.2.1 LCD设备通信接口中的电平转换 265

14.2.2 RGB接口详解 266

14.3 LCD的显像原理和相关概念 267

14.3.1 像素及相关概念 267

14.3.2 扫描 268

14.3.3 驱动器和控制器 269

14.3.4 显示内存(显存) 269

14.3.5 LCD屏的6个主要时序参数 270

14.4 颜色在计算机中的表示 272

14.4.1 计算机中的颜色是离散的 272

14.4.2 常见像素深度 272

14.5 S5PV210的LCD控制器 273

14.5.1 虚拟屏幕叠加 274

14.5.2 虚拟显示 275

14.6 LCD编程实战 276

14.6.1 LCD控制器初始化 276

14.6.2 显示像素、刷背景、横线竖线和画圆功能的

实现 287

14.6.3 写英文和中文字符 290

14.6.4 画图 292

14.7 习题 295





触摸屏 296

15.1 输入设备简介及触摸屏介绍 296

15.1.1 触摸屏的特点 296

15.1.2 触摸屏和显示屏的联系与区别 296

15.2 电阻式触摸屏的原理 297

15.3 S5PV210的电阻式触摸屏控制器 298

15.3.1 控制器框图介绍 298

15.3.2 控制器部件的工作模式选择 299

15.3.3 控制器的主要寄存器 300

15.4 电容式触摸屏的原理 301

15.4.1 人体感知电流 301

15.4.2 专用电路计算坐标 301

15.4.3 多个区块支持多点触摸 302

15.4.4 对外提供I2C的访问接口 302

15.5 FT5x06电容触摸IC简介 302

15.6 习题 303





Shell原理和问答机制引入 304

16.1 理解Shell 304

16.1.1 什么是Shell 304

16.1.2 Shell的运行原理 305

16.1.3 Shell应用举例 305

16.2 从零写*简单的Shell 306

16.2.1 使用printf和scanf函数做输入回显 306

16.2.2 定义简单命令集 306

16.3 将简易Shell移植到开发板中 308

16.3.1 工程选定、文件复制、Makefile编写 308

16.3.2 printf和scanf函数的移植 314

16.3.3 main.c和其余文件 317

16.3.4 编译下载和调试验证 319

16.4 定义标准命令集及解析 320

16.4.1 添加cmd_parser和cmd_exec函数 321

16.4.2 自己动手写strcmp和strcpy函数 322

16.4.3 定义命令集、添加shell.h头文件 322

16.4.4 修改代码 323

16.4.5 烧录与测试 324

16.5 添加第 一个命令 326

16.5.1 命令任务分析 326

16.5.2 命令解析与命令执行 327

16.5.3 修改代码 330

16.5.4 第 一个命令的测试 331

16.6 添加其他命令 332

16.6.1 添加pwm.c文件 332

16.6.2 添加adc.c命令文件 333

16.6.3 移植printf函数 334

16.6.4 添加lcd.c文件 335

16.6.5 修改代码 339

16.6.6 编译测试 345

16.7 实现开机倒计时自动执行命令 346

16.7.1 添加计时功能 347

16.7.2 修改代码 349

16.7.3 测试运行 352

16.7.4 构建BL1和BL2烧录 352

16.8 初步实现环境变量 354

16.8.1 添加env.c文件对环境变量进行设置、

修改 355

16.8.2 修改代码 357

16.8.3 测试代码 363

16.9 习题 364
展开全部

嵌入式LINUX与物联网软件开发:ARM处理器开发自学教程 作者简介

朱有鹏,先后从事电子工程师、单片机软件工程师、嵌入式Linux软件工程师、物联网软件工程师、架构师等工作,“朱老师物联网大讲堂”创始人。擅长U-Boot、Linux内核等嵌入式底层和系统层开发、架构设计。擅长汇编、C/C 、Java、C#等常用开发语言,2015年起录制的在线视频课程“朱有鹏老师嵌入式Linux核心课程”累计学习人数超300万。

商品评论(0条)
暂无评论……
书友推荐
本类畅销
编辑推荐
返回顶部
中图网
在线客服