嵌入式学习——硬件(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

相关推荐
南宫生3 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
sanguine__3 小时前
Web APIs学习 (操作DOM BOM)
学习
数据的世界015 小时前
.NET开发人员学习书籍推荐
学习·.net
四口鲸鱼爱吃盐5 小时前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习
OopspoO8 小时前
qcow2镜像大小压缩
学习·性能优化
A懿轩A8 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
居居飒8 小时前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
kkflash39 小时前
提升专业素养的实用指南
学习·职场和发展
1 9 J9 小时前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法
6.9411 小时前
Scala——身份证号码查询籍贯
学习·scala