1. S3C2440基础知识——一条指令四个字节
1.1 定义
S3C2440 是三星(Samsung)公司设计的一款基于 ARM920T 核心的微处理器,广泛应用于嵌入式系统中,属于三星的 S3C24xx 系列。
1.2 处理器核心
- ARM920T:基于 ARM v5T 架构,32 位 RISC 处理器。
- 主频:最高可以达到 400 MHz。
- 内存管理单元 (MMU):支持虚拟内存管理。
(1)RISC的全称是“精简指令集计算”(Reduced Instruction Set Computing)
复杂指令集计算(CISC)
(2)指令集:ARMv4、ARMv5、ARMv7
1.3 存储器
- 内部 SRAM:4 KB。
- 外部存储器接口:支持 SDRAM、SRAM、NAND Flash 和 NOR Flash。
- 内存控制器:支持 16 位和 32 位的外部总线。
(1)ram——(随机存储器、掉电丢失数据、存储临时程序和数据)
(2)rom——(只读存储器、掉电不丢失、存储固定数据和程序)
nor flash可被寻址(支持随机访问)
nand flash不可被寻址(支持顺序访问)
1.3 外设接口
- UART(通用异步收发器)):3 个通用异步收发器,支持全双工通信。
- I2C:支持主从模式。
- SPI:支持主从模式。
- I2S:用于音频接口。
- USB:2 个主机控制器,1 个设备控制器。
- SD/MMC:支持 SD 卡和 MMC 卡接口。
DB9(九针数据通用连接器)
- 定义:DB9是一种常见的连接器接口,通常有9个针脚排列成一个D形接头,用于连接串行设备。
- 功能:DB9连接器可以用于连接不同类型的串行设备,如串口(串行口),它可以支持UART通信。
1.4 GPIO
- 引脚数:具有丰富的通用输入输出(GPIO)引脚,可以配置为多种功能。
- 中断控制器:支持多达 60 个外部中断。
1.5 显示控制器
- LCD 控制器:支持多种显示模式,包括 STN 和 TFT LCD。
1.6 音频
- AC97:支持音频编解码器接口。
1.7 DMA(多总线结构)——单片机是单总线结构
- 通道数:具有 4 个 DMA 通道,用于高效数据传输。
1.8 定时器
- PWM:支持脉宽调制(PWM)输出。
- 看门狗定时器:用于系统复位。
1.9 应用
- 工业控制:如 PLC、HMI 等工业设备。
- 消费电子:如 MP3 播放器、便携式媒体播放器。
- 嵌入式系统:如嵌入式 Linux 设备、开发板等。
- 自动售货机:用于各种自动售货系统中。
- 医疗设备:用于便携式医疗检测设备中。
2. CPU:中央处理器
MCU:微处理器
GPU:图形处理器
FPU:浮点运算单元
Kernal
ALU:逻辑运算单元
MMU:内存管理单元
R0~R12:通用寄存器
i.cache:指令缓存(Instruction Cache)
d.cache:数据缓存(Data Cache)
(1)冯·诺依曼结构(Von Neumann Architecture)
- 单一存储器系统:指令和数据存储在同一个存储器中,共享同一个存储空间。
- 单一总线系统:使用同一条总线来传输指令和数据。
- 顺序执行:程序指令按顺序存储,并且按顺序执行(可以有跳转指令改变执行顺序)。
- 通用性强:适用于广泛的应用场景,设计简单,成本较低。
(2)哈佛结构(Harvard Architecture)
- 分离存储器系统:指令存储器和数据存储器是分开的,分别存储指令和数据。
- 独立总线系统:有独立的总线用于传输指令和数据,可以同时进行指令和数据的读取或写入。
- 并行处理:由于指令和数据的独立存储和传输,可以实现更高效的并行处理。
AHB(Advanced High-performance Bus)
- 定义:AHB是一种高性能总线协议,通常用于连接高速设备,如处理器和内存。
- 特点:AHB支持高带宽和低延迟的数据传输,适用于需要快速数据访问的设备和模块。
- 应用:常用于连接高速处理器、内存控制器以及其他高性能外设,如高速ADC(模数转换器)或DMA(直接内存访问)控制器等。
APB(Advanced Peripheral Bus)
- 定义:APB是一种低功耗、低速率的总线协议,设计用于连接较慢的外围设备。
- 特点:APB相对于AHB而言速度较慢,但在控制低速外设和传感器等场景下非常适用,同时能够有效降低功耗。
- 应用:常用于连接各种低速外设,如GPIO(通用输入输出)、定时器、UART(通用异步收发器)等。
RISC(Reduced Instruction Set Computing)精简指令集计算
CISC(Complex Instruction Set Computer) 复杂指令集计算
PC(Program Counter)
- 程序计数器,也称为指令计数器,是一个专门的寄存器,用于存储CPU当前执行的指令地址。PC在执行每条指令时会自动递增以指向下一条指令的地址,是指令执行过程中的关键组成部分。
LR(Link Register)
- 链接寄存器,用于存储函数调用时的返回地址。当函数调用另一个函数时,LR会存储调用点的地址,以便在函数执行结束后返回到正确的位置。
SP(Stack Pointer)
- 栈指针,用于指向当前程序栈的顶部。栈在计算机中用于存储临时数据和函数调用的上下文信息。SP指示了当前栈顶的位置,随着栈的推入(push)和弹出(pop)操作而变化。
3. 大小端存储
3.1 大端存储:低地址处存放低数据位——51单片机
小端存储:低地址处存放地数据位——ARM
***************重点部分***************
4. ARM的七种工作模式——软中断和异常向量表实现工作模式的切换
5. ARM系列通用寄存器数量
6. 异常向量表
存储异常处理程序的入口地址,处理器根据异常类型跳转到对应地址执行。
-
复位(Reset):
- 地址:0x00
- 描述:处理器复位时的处理程序入口,初始化处理器状态。
-
未定义指令(Undefined Instruction):
- 地址:0x04
- 描述:执行未定义指令时的处理程序入口。
-
软件中断(SWI, Software Interrupt):
- 地址:0x08
- 描述:处理软件中断,通常用于系统调用。
-
预取中止(Prefetch Abort):
- 地址:0x0C
- 描述:指令预取过程中遇到的异常。
-
数据中止(Data Abort):
- 地址:0x10
- 描述:数据访问过程中遇到的异常。
-
保留(Reserved):
- 地址:0x14
- 描述:未使用的异常向量(在某些处理器中用于调试或未来扩展)。
-
IRQ(普通中断请求):
- 地址:0x18
- 描述:处理普通中断请求。
-
FIQ(快速中断请求):
- 地址:0x1C
- 描述:处理快速中断请求,通常用于紧急和高优先级的中断。
地址 | 向量表条目
--------|-------------------
0x00 | 复位处理程序地址
0x04 | 未定义指令处理程序地址
0x08 | SWI处理程序地址
0x0C | 预取中止处理程序地址
0x10 | 数据中止处理程序地址
0x14 | 保留
0x18 | IRQ处理程序地址
0x1C | FIQ处理程序地址
7. 如何判断12位立即数imm12
8. 汇编启动文件编程
8.1
8.2