图书详情

¥99.8

从零开始学ARM

作者:彭丹 周海涛

编辑:李强

浏览:711

推荐:0

收藏:0

详情

内容介绍

本书主要介绍ARM开发的相关知识,详细讲解常用的ARM指令及如何基于ARM架构的外设编写驱动程序,并分析了开源软件U-Boot的启动源代码和网络协议栈。 本书第1~4章为基础篇,主要介绍CPU与ARM、搭建环境、ARM编程、异常等;第5~13章为编程篇,主要介绍基于Exynos 4412的常用外设的工作原理及驱动程序编写等;第14~17章为应用篇,主要介绍开源软件U-Boot的使用及启动程序,并分析网卡DM9000AE的驱动和网络协议栈;以及关于汇编的两点补充。 本书适合从事嵌入式开发的工程师和有一定计算机基础和C语言编程经验的初学者学习参考。

相关信息

图书名称:从零开始学ARM
ISBN:978-7-115-60688-4
作者:彭丹 周海涛
编辑:李强
从书名:无
开本:16开
页数:340
印刷色数:单色
出版状态:已出版
出版日期:2023-06-01
作者简介:彭丹,硕士,“一口Linux”公众号创始人,南京六九零二科技有限公司高级嵌入式驱动工程师。从事嵌入式软件开发工作16年。精通计算机网络、ARM、基于Linux的驱动开发。 获得多项科技发明授权、多篇软件著作等。 周海涛,硕士,长期从事网络安全和信息化建设相关工作,著有多篇论文,江苏省第六期333高层次人才培养工程培养对象。

特别说明

从ARM基础篇、裸机编程篇到ARM应用篇详细讲解ARM技术知识,快速入门ARM,深入浅出学ARM

本书卖点

赠送学习资源,包括开发环境安装工具、源程序、电路原理图、PPT课件、芯片手册;
以 FS4412 开发板(基于 ARM Cortex-A9 架构)为例,讲解开发环境安装与配置及ARM指令编程;
结合硬件原理图、用户手册说明硬件功能原理,逐个分析9种硬件驱动编程方法;
详解开源项目 U-Boot 的使用及启动程序,实现网卡DM9000AE 的驱动和网络协议栈。

目录

目录

基础篇
第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

资源

申请样书

立即购买
1 2