《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 活动 > 免费送书|好书推荐第三弹——从零开始学ARM

免费送书|好书推荐第三弹——从零开始学ARM

0001-01-01
0001-01-01


电子技术应用网的朋友们大家好,好书推荐活动第三弹来啦!


本次给大家带来的是电子技术应用专栏作家 一口Linux公众号号主彭丹老师最新书籍

640.jpg

( 彭老师亲笔签名版  本次活动仅此一本 先到先得)


本期送书规则:


       1.将本活动转发至朋友圈,截止至5月19号中午12点,朋友圈获得点赞数目最多的用户可免费获得本书。


      2.收到书一个月之内需要在电子技术应用技术专栏发布一篇该书的读书心得体会,不少于500字。

 

 注:心得体会中至少要回答以下问题中的任意四个。

1.ARM有哪些工作模式?

2.各设备驱动使用的寄存器有哪些?功能是什么?

3.系统上电后,执行的第一条指令是什么?

4.在C语言环境下调用函数时,参数是如何传递的?

5.当实现同样的功能时,为什么有些C语言程序的执行效率比汇编语言的高?

6.异常源有哪些?

7.什么是异常向量表?

8.如何使能关闭中断?

9.中断发生后CPU是如何处理的?

10.CPU 如何操作LED、按键、蜂鸣器、滑动变阻器、RTC、看门狗、MPU6050等常见外设并使它们有条不紊地工作?

11.U-Boot的启动流程是什么?如何实现程序自搬移?

12.U-Boot是如何实现一个简单的网络协议栈的?




请将朋友圈点赞截图发给电子技术应用网站小编,微信如下


123.png


书籍介绍:


从零开始学ARM》 彭丹 周海涛 著   官方售价:99.8元

彭丹:公众号『一口Linux』号主彭老师,拥有15年嵌入式开发经验和培训经验。曾任职ZTE,某研究所,华清远见教学总监。拥有多篇网络协议相关专利和软件著作。精通计算机网络、Linux系统编程、ARM、Linux驱动、龙芯、物联网。

本书主要介绍ARM开发的相关知识,详细讲解常用的ARM指令及如何基于ARM架构的外设编写驱动程序,并分析了开源软件U-Boot的启动程序和网络协议栈。

本书第1~4章为基础篇,主要介绍CPU与ARM、搭建环境、ARM编程、异常等;

第5~13章为编程篇,主要介绍基于Exynos 4412的常用外设的工作原理及驱动程序等;

第14~17章为应用篇,主要介绍开源软件U-Boot的使用及启动程序、网卡DM9000AE的驱动和网络协议栈,以及关于汇编的两点补充。

本书适合从事嵌入式开发的工程师和有一定计算机基础和C语言编程经验的初学者学习参考。

640.png

本书推荐语


本书特点


一是循序渐进,由浅入深。本书针对零基础的初学者,以FS4412开发板(基于ARMCortex-A9架构)为例,首先从开发环境的安装和配置及ARM基本指令等相关基础知识开始讲解,然后详细说明常见硬件的功能原理,进而结合硬件原理图、用户手册逐个分析这些硬件的驱动编程方法,最后介绍开源项目U-Boot的使用及启动程序,使读者将ARM相关知识点融会贯通。

二是实例丰富,内容翔实。本书中包含大量汇编实例,且所有汇编指令都在KEIL软件中测试过;硬件裸机驱动源程序均在开发板上调试过,并有详细的分析注解;U-Boot的启动源程序和U-Boot中的网络协议栈也有详细的程序注解,使读者能够复现实例,学以致用。 

三是提供配套电子资源。本书的配套资源包含安装工具、源程序、PPT课件等。


面向人群


本书主要面向想学习ARM开发技术、嵌入式底层开发的初学者,

大部分内容是从事单片机、Linux驱动开发工程师甚至硬件工程师备知识。

内容的组织由浅入深,关键知识点均有源码实例,资料详尽

配合B站视频学习效果更佳。



资料获取


本书涉及的开发环境,和文中所有资料、源代码,均无偿提供。

一口Linux 公众号后台回复:arm

微信截图_20230517165500.png

微信图片_20220701092006.jpg

(电子技术应用专栏作家  一口Linux微信公众号二维码)



配套视频


为了更好的让各位读者学习本书内容,彭老师正在录制本书配套的视频,并免费发布在B站(全网同名:一口Linux


https://space.bilibili.com/661326452


目前已经录制了第一期视频,第二期视频对应ppt已经制作完毕,后续会陆续更新。




本书目录:


第1章 CPU与ARM 2

1.1 CPU 2

1.1.1 CPU概述 2

1.1.2 计算机结构 4

1.1.3 CPU的组成 5

1.1.4 指令的运行 9

1.2 ARM 10

1.2.1 ARM的发展史 10

1.2.2 ARM架构 11

1.2.3 ARM处理器 13

1.3 SoC 26

第2章 搭建环境 30

2.1 KEIL软件安装 30

2.1.1 KEIL、µVision、MDK之间的关系 30

2.1.2 安装KEIL 31

2.1.3 创建工程 32

2.1.4 编译程序 34

2.1.5 如何debug程序 34

2.2 编译环境搭建 36

2.2.1 安装VMware Workstation 37

2.2.2 安装ubuntu 38

2.3 交叉编译工具安装 41

第3章 ARM编程 44

3.1 ARM指令格式 44

3.2 数据处理指令 45

3.2.1 mov指令 45

3.2.2 移位操作 47

3.2.3 cmp比较指令 49

3.2.4 tst条件指令 49

3.2.5 运算指令 50

3.3 跳转指令 52

3.4 访问程序状态寄存器指令 55

3.4.1 mrs指令 55

3.4.2 msr指令 55

3.4.3 综合实例 56

3.5 访问外部寄存器指令 60

3.5.1 ldr指令 60

3.5.2 str指令 60

3.5.3 ldrb指令 61

3.5.4 ldrh指令 62

3.6 ARM寻址方式 62

3.7 GNU书写风格 69

3.7.1 MDK书写风格与GNU书写风格 69

3.7.2 标号symbol(或label)70

3.7.3 语句格式 71

3.7.4 分段 72

3.8 伪操作 73

3.8.1 数据定义伪操作 74

3.8.2 汇编控制伪操作 75

3.8.3 .if.else.end if 75

3.8.4 杂项伪操作 76

3.9 GNU程序的编译 77

3.9.1 交叉编译工具 77

3.9.2 交叉编译工具命名规则 77

3.9.3 程序编译过程 77

3.9.4 编译选项 79

3.9.5 elf与bin文件 82

3.9.6 编译举例 83

3.10 ATPCS和AAPCS 87

3.11 内联汇编 89

3.12 C语言和汇编语言相互调用举例 91

第4章 异常 93

4.1 异常基础知识 93

4.2 异常处理 95

4.2.1 异常发生后硬件操作 95

4.2.2 异常向量表 95

4.2.3 保存执行现场 97

4.2.4 异常处理的返回 97

4.2.5 异常恢复 98

4.3 中断异常 99

4.3.1 中断概念 99

4.3.2 中断处理流程 99

4.4 软中断 100

4.4.1 swi指令 100

4.4.2 bkpt指令 101

4.4.3 举例 101

4.4.4 同时执行跳转指令并切换模式 103

4.4.5 获取中断号 103

编程篇

第5章 GPIO及LED 106

5.1 GPIO 106

5.1.1 Exynos 4412 GPIO的特性 107

5.1.2 LED电路图 108

5.1.3 如何操作GPIO 108

5.2  LED驱动程序编写 110

5.2.1 汇编程序 110

5.2.2 C语言程序实现 111

5.2.3 烧写程序 113

第6章 PWM 114

6.1 Exynos 4412 PWM 114

6.1.1 PWM基础知识 114

6.1.2 Exynos 4412 PWM的特性 115

6.1.3 PWM的工作步骤 116

6.2 蜂鸣器驱动程序编写 117

6.2.1 参考电路 117

6.2.2 寄存器 118

6.2.3 程序实现 120

第7章 中断 122

7.1 GIC 122

7.1.1 分发器 123

7.1.2 CPU接口 124

7.1.3 中断处理 125

7.2 按键驱动程序编写 125

7.2.1 电路图 125

7.2.2 配置按键为中断触发方式 126

7.2.3 寄存器 127

7.2.4 程序实现 131

7.3 轮询方式 133

第8章 UART 135

8.1 UART概述 135

8.1.1 UART通信方式 135

8.1.2 UART数据帧格式 137

8.2 Exynos 4412 UART控制器 138

8.2.1 UART的特性 138

8.2.2 UART内部功能模块 139

8.2.3 时钟源 140

8.3 UART的操作 141

8.3.1 参考电路 141

8.3.2 寄存器 142

8.3.3 程序实现 145

8.3.4 移植printf 148

第9章 RTC 149

9.1 Exynos 4412 RTC 149

9.1.1 Exynos 4412 RTC的特性 149

9.1.2 RTC模块 149

9.1.3 备用电池 150

9.1.4 晶体振荡器 150

9.2 RTC寄存器 151

9.3 RTC的操作 153

9.4 程序实现 157

第10章 看门狗 160

10.1 Exynos 4412 看门狗 160

10.1.1 看门狗模块图 160

10.1.2 工作原理 161

10.2 驱动编写 161

10.2.1 看门狗软件程序设计流程 161

10.2.2 看门狗寄存器设置 161

10.2.3 程序实现 163

第11章 ADC 165

11.1 信号基础知识 165

11.1.1 信号分类 165

11.1.2 脉冲编码调制(PCM)166

11.2 Exynos 4412 ADC控制器 166

11.2.1 Exynos 4412 ADC控制器的特性 166

11.2.2 ADC控制器寄存器 167

11.2.3 中断组合器 169

11.2.4 A/D转换时间计算 171

11.3 程序实现 171

11.3.1 参考电路 171

11.3.2 程序实现 172

第12章 I2C 175

12.1 I2C总线 175

12.1.1 开始条件和停止条件 175

12.1.2 数据有效性 176

12.1.3 数据传输格式 176

12.2 Exynos 4412 I2C控制器 177

12.2.1 Exynos 4412 I2C控制器概述 177

12.2.2 Exynos 4412 I2C总线接口的特点 178

12.2.3 数据读写格式 178

12.2.4 数据读写流程 179

12.2.5 I2C总线控制器寄存器 181

12.3 MPU6050及驱动程序编写 184

12.3.1 MPU6050 184

12.3.2 MPU6050参考电路 186

12.3.3 MPU6050内部寄存器 187

12.3.4 程序实现 188

第13章 SPI 192

13.1 SPI基础知识 192

13.1.1 SPI的特点 192

13.1.2 极性和相位 194

13.1.3 数据交换 196

13.2 Exynos 4412 SPI控制器 197

13.3 SPI的操作 198

13.3.1 参考电路 198

13.3.2 寄存器 200

13.3.3 初始化流程 202

13.3.4 收发数据流程 205

13.4 MCP2515 206

13.4.1 MCP2515简介 207

13.4.2 MCP2515的特点 207

13.4.3 结构框图 207

13.4.4 SPI 协议模块 208

13.4.5 SPI 指令集 208

13.4.6 MCP2515初始化 211

13.4.7 数据发送 217

13.4.8 数据接收 219

13.4.9 MCP2515驱动程序实现 221

应用篇

第14章 U-Boot 226

14.1 U-Boot概述 226

14.1.1 U-Boot的特性 227

14.1.2 工作模式 227

14.1.3 U-Boot常用命令228

14.1.4 配置举例 230

14.2 U-Boot源程序 231

14.2.1 U-Boot源程序简介 231

14.2.2 U-Boot源程序配置 234

14.2.3 U-Boot源程序编译 236

14.3 移植硬件驱动 238

14.3.1 实现串口输出 238

14.3.2 移植网卡驱动 239

14.3.3 移植Flash 241

14.4 制作SD卡 246

14.4.1 烧写脚本 246

14.4.2 制作SD卡的步骤 247

14.4.3 通过SD卡启动烧写U-Boot 248

14.4.4 网络烧写U-Boot 250

第15章 U-Boot程序启动分析 251

15.1 内核启动流程概述251

15.1.1 U-Boot启动Linux内核一般流程 251

15.1.2 Exynos 4412内存映射 252

15.1.3 启动顺序 252

15.1.4 SD卡镜像布局 254

15.1.5 lds文件 255

15.2 U-Boot启动流程程序详解 256

15.2.1 U-Boot启动程序流程 256

15.2.2 U-Boot启动详解 257

第16章 网卡DM9000AE 273

16.1 网卡概述 273

16.2 DM9000AE 274

16.2.1 DM9000AE概述 274

16.2.2 引脚说明 275

16.2.3 DM9000AE内部寄存器 279

16.3 SROM 控制器 284

16.3.1 SROM控制器概述 284

16.3.2 寄存器SROM_BW和SROM_BC 284

16.3.3 配置SROM功能 288

16.3.4 SROM初始化 293

16.4 DM9000AE驱动分析 297

16.4.1 网卡注册 297

16.4.2 相关结构体 298

16.4.3 网卡的初始化 301

16.4.4 数据的发送 305

16.4.5 数据的接收 306

16.4.6 网卡注销 309

16.5 U-Boot中的网络协议栈 309

第17章 关于汇编的两点补充 321

17.1 为什么使用结构体效率会高 321

17.1.1 定义多个全局变量 321

17.1.2 使用结构体 323

17.1.3 文字池 325

17.1.4 继续优化 325

17.2  位置无关码 326

17.2.1 为什么需要位置无关码 326

17.2.2 如何编写位置无关码 326

17.2.3 举例 327



本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。