嵌入式学习——硬件(ARM体系架构)——day51

  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 设备、开发板等。
  • 自动售货机:用于各种自动售货系统中。
  • 医疗设备:用于便携式医疗检测设备中。
  1. CPU:中央处理器

MCU:微处理器

GPU:图形处理器

FPU:浮点运算单元

Kernal

ALU:逻辑运算单元

MMU:内存管理单元

R0~R12:通用寄存器

i.cache:指令缓存(Instruction Cache)

d.cache:数据缓存(Data Cache)

(1)冯·诺依曼结构(Von Neumann Architecture)

  1. 单一存储器系统:指令和数据存储在同一个存储器中,共享同一个存储空间。
  2. 单一总线系统:使用同一条总线来传输指令和数据。
  3. 顺序执行:程序指令按顺序存储,并且按顺序执行(可以有跳转指令改变执行顺序)。
  4. 通用性强:适用于广泛的应用场景,设计简单,成本较低。

(2)哈佛结构(Harvard Architecture)

  1. 分离存储器系统:指令存储器和数据存储器是分开的,分别存储指令和数据。
  2. 独立总线系统:有独立的总线用于传输指令和数据,可以同时进行指令和数据的读取或写入。
  3. 并行处理:由于指令和数据的独立存储和传输,可以实现更高效的并行处理。

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)操作而变化。
  1. 大小端存储

3.1 大端存储:低地址处存放低数据位------51单片机

小端存储:低地址处存放地数据位------ARM

***************重点部分***************

  1. ARM的七种工作模式------软中断和异常向量表实现工作模式的切换
  1. ARM系列通用寄存器数量
  1. 异常向量表

存储异常处理程序的入口地址,处理器根据异常类型跳转到对应地址执行。

  1. 复位(Reset)

    • 地址:0x00
    • 描述:处理器复位时的处理程序入口,初始化处理器状态。
  2. 未定义指令(Undefined Instruction)

    • 地址:0x04
    • 描述:执行未定义指令时的处理程序入口。
  3. 软件中断(SWI, Software Interrupt)

    • 地址:0x08
    • 描述:处理软件中断,通常用于系统调用。
  4. 预取中止(Prefetch Abort)

    • 地址:0x0C
    • 描述:指令预取过程中遇到的异常。
  5. 数据中止(Data Abort)

    • 地址:0x10
    • 描述:数据访问过程中遇到的异常。
  6. 保留(Reserved)

    • 地址:0x14
    • 描述:未使用的异常向量(在某些处理器中用于调试或未来扩展)。
  7. IRQ(普通中断请求)

    • 地址:0x18
    • 描述:处理普通中断请求。
  8. FIQ(快速中断请求)

    • 地址:0x1C
    • 描述:处理快速中断请求,通常用于紧急和高优先级的中断。
cpp 复制代码
地址     | 向量表条目
--------|-------------------
0x00    | 复位处理程序地址
0x04    | 未定义指令处理程序地址
0x08    | SWI处理程序地址
0x0C    | 预取中止处理程序地址
0x10    | 数据中止处理程序地址
0x14    | 保留
0x18    | IRQ处理程序地址
0x1C    | FIQ处理程序地址
  1. 如何判断12位立即数imm12
  1. 汇编启动文件编程

8.1

8.2

相关推荐
西岸行者10 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
我在人间贩卖青春10 天前
汇编之伪指令
汇编·伪指令
悠哉悠哉愿意10 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码10 天前
嵌入式学习路线
学习
毛小茛10 天前
计算机系统概论——校验码
学习
babe小鑫10 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms10 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下10 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。10 天前
2026.2.25监控学习
学习
im_AMBER10 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode