封面
版权信息
内容提要
前言
基础篇
第1章 CPU与ARM
1.1 CPU
1.1.1 CPU概述
1.1.2 计算机结构
1.1.3 CPU的组成
1.1.4 指令的运行
1.2 ARM
1.2.1 ARM的发展史
1.2.2 ARM架构
1.2.3 ARM处理器
1.3 SoC
第2章 搭建环境
2.1 KEIL软件安装
2.1.1 KEIL、µVision、MDK之间的关系
2.1.2 安装KEIL
2.1.3 创建工程
2.1.4 编译程序
2.1.5 如何debug程序
2.2 编译环境搭建
2.2.1 安装VMware Workstation
2.2.2 安装ubuntu
2.3 交叉编译工具安装
第3章ARM编程
3.1 ARM指令格式
3.2 数据处理指令
3.2.1 mov指令
3.2.2 移位操作
3.2.3 cmp比较指令
3.2.4 tst条件指令
3.2.5 运算指令
3.3 跳转指令
3.4 访问程序状态寄存器指令
3.4.1 mrs指令
3.4.2 msr指令
3.4.3 综合实例
3.5 访问外部寄存器指令
3.5.1 ldr指令
3.5.2 str指令
3.5.3 ldrb指令
3.5.4 ldrh指令
3.6 ARM寻址方式
3.7 GNU书写风格
3.7.1 MDK书写风格与GNU书写风格
3.7.2 标号symbol(或label)
3.7.3 语句格式
3.7.4 分段
3.8 伪操作
3.8.1 数据定义伪操作
3.8.2 汇编控制伪操作
3.8.3 .if.else.end if
3.8.4 杂项伪操作
3.9 GNU程序的编译
3.9.1 交叉编译工具
3.9.2 交叉编译工具命名规则
3.9.3 程序编译过程
3.9.4 编译选项
3.9.5 elf与bin文件
3.9.6 编译举例
3.10 ATPCS和AAPCS
3.11 内联汇编
3.12 C语言和汇编语言相互调用举例
第4章 异常
4.1 异常基础知识
4.2 异常处理
4.2.1 异常发生后硬件操作
4.2.2 异常向量表
4.2.3 保存执行现场
4.2.4 异常处理的返回
4.2.5 异常恢复
4.3 中断异常
4.3.1 中断概念
4.3.2 中断处理流程
4.4 软中断
4.4.1 swi指令
4.4.2 bkpt指令
4.4.3 举例
4.4.4 同时执行跳转指令并切换模式
4.4.5 获取中断号
编程篇
第5章 GPIO及LED
5.1 GPIO
5.1.1 Exynos 4412 GPIO的特性
5.1.2 LED电路图
5.1.3 如何操作GPIO
5.2 LED驱动程序编写
5.2.1 汇编程序
5.2.2 C语言程序实现
5.2.3 烧写程序
第6章 PWM
6.1 Exynos 4412 PWM
6.1.1 PWM基础知识
6.1.2 Exynos 4412 PWM的特性
6.1.3 PWM的工作步骤
6.2 蜂鸣器驱动程序编写
6.2.1 参考电路
6.2.2 寄存器
6.2.3 程序实现
第7章 中断
7.1 GIC
7.1.1 分发器
7.1.2 CPU接口
7.1.3 中断处理
7.2 按键驱动程序编写
7.2.1 电路图
7.2.2 配置按键为中断触发方式
7.2.3 寄存器
7.2.4 程序实现
7.3 轮询方式
第8章 UART
8.1 UART概述
8.1.1 UART通信方式
8.1.2 UART数据帧格式
8.2 Exynos 4412 UART控制器
8.2.1 UART的特性
8.2.2 UART内部功能模块
8.2.3 时钟源
8.3 UART的操作
8.3.1 参考电路
8.3.2 寄存器
8.3.3 程序实现
8.3.4 移植printf
第9章 RTC
9.1 Exynos 4412 RTC
9.1.1 Exynos 4412 RTC的特性
9.1.2 RTC模块
9.1.3 备用电池
9.1.4 晶体振荡器
9.2 RTC寄存器
9.3 RTC的操作
9.4 程序实现
第10章 看门狗
10.1 Exynos 4412 看门狗
10.1.1 看门狗模块图
10.1.2 工作原理
10.2 驱动编写
10.2.1 看门狗软件程序设计流程
10.2.2 看门狗寄存器设置
10.2.3 程序实现
第11章 ADC
11.1 信号基础知识
11.1.1 信号分类
11.1.2 脉冲编码调制(PCM)
11.2 Exynos 4412 ADC控制器
11.2.1 Exynos 4412 ADC控制器的特性
11.2.2 ADC控制器寄存器
11.2.3 中断组合器
11.2.4 A/D转换时间计算
11.3 程序实现
11.3.1 参考电路
11.3.2 程序实现
第12章 I2C
12.1 I2C总线
12.1.1 开始条件和停止条件
12.1.2 数据有效性
12.1.3 数据传输格式
12.2 Exynos 4412 I2C控制器
12.2.1 Exynos 4412 I2C控制器概述
12.2.2 Exynos 4412 I2C总线接口的特点
12.2.3 数据读写格式
12.2.4 数据读写流程
12.2.5 I2C总线控制器寄存器
12.3 MPU6050及驱动程序编写
12.3.1 MPU6050
12.3.2 MPU6050参考电路
12.3.3 MPU6050内部寄存器
12.3.4 程序实现
第13章 SPI
13.1 SPI基础知识
13.1.1 SPI的特点
13.1.2 极性和相位
13.1.3 数据交换
13.2 Exynos 4412 SPI控制器
13.3 SPI的操作
13.3.1 参考电路
13.3.2 寄存器
13.3.3 初始化流程
13.3.4 收发数据流程
13.4 MCP2515
13.4.1 MCP2515简介
13.4.2 MCP2515的特点
13.4.3 结构框图
13.4.4 SPI 协议模块
13.4.5 SPI 指令集
13.4.6 MCP2515初始化
13.4.7 数据发送
13.4.8 数据接收
13.4.9 MCP2515驱动程序实现
应用篇
第14章 U-Boot
14.1 U-Boot概述
14.1.1 U-Boot的特性
14.1.2 工作模式
14.1.3 U-Boot常用命令
14.1.4 配置举例
14.2 U-Boot源程序
14.2.1 U-Boot源程序简介
14.2.2 U-Boot源程序配置
14.2.3 U-Boot源程序编译
14.3 移植硬件驱动
14.3.1 实现串口输出
14.3.2 移植网卡驱动
14.3.3 移植Flash
14.4 制作SD卡
14.4.1 烧写脚本
14.4.2 制作SD卡的步骤
14.4.3 通过SD卡启动烧写U-Boot
14.4.4 网络烧写U-Boot
第15章 U-Boot程序启动分析
15.1 内核启动流程概述
15.1.1 U-Boot启动Linux内核一般流程
15.1.2 Exynos 4412内存映射
15.1.3 启动顺序
15.1.4 SD卡镜像布局
15.1.5 Ids文件
15.2 U-Boot启动流程程序详解
15.2.1 U-Boot启动程序流程
15.2.2 U-Boot启动详解
第16章 网卡DM9000AE
16.1 网卡概述
16.2 DM9000AE
16.2.1 DM9000AE概述
16.2.2 引脚说明
16.2.3 DM9000AE内部寄存器
16.3 SROM 控制器
16.3.1 SROM控制器概述
16.3.2 寄存器SROM_BW和SROM_BC
16.3.3 配置SROM功能
16.3.4 SROM初始化
16.4 DM9000AE驱动分析
16.4.1 网卡注册
16.4.2 相关结构体
16.4.3 网卡的初始化
16.4.4 数据的发送
16.4.5 数据的接收
16.4.6 网卡注销
16.5 U-Boot中的网络协议栈
第17章 关于汇编的两点补充
17.1 为什么使用结构体效率会高
17.1.1 定义多个全局变量
17.1.2 使用结构体
17.1.3 文字池
17.1.4 继续优化
17.2 位置无关码
17.2.1 为什么需要位置无关码
17.2.2 如何编写位置无关码
17.2.3 举例
更新时间:2025-01-16 18:00:17