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

相关推荐
今天我又学废了4 分钟前
Scala学习记录,List
学习
王俊山IT27 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
Mephisto.java1 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
南宫生2 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
武子康3 小时前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘
使者大牙3 小时前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
As977_3 小时前
前端学习Day12 CSS盒子的定位(相对定位篇“附练习”)
前端·css·学习
ajsbxi3 小时前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
Rattenking3 小时前
React 源码学习01 ---- React.Children.map 的实现与应用
javascript·学习·react.js
TeYiToKu4 小时前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm