嵌入式知识点总结 ARM体系与架构 专题提升(二)-ARM处理器
针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。
目录
9.ARM系统中,在函数调用的时候,参数是通过哪种方式传递的?
1.什么是哈佛结构和冯诺依曼结构?
定义
冯诺依曼结构采用指令和数据统一编址,使用同条总线传输,CPU读取指令和数据的操作无法重叠哈佛结构采用指令和数据独立编址,使用两条独立的总线传输,CPU读取指令和数据的操作可以重叠.
利弊
冯诺依曼结构主要用于通用计算机领域,需要对存储器中的代码和数据频繁的进行修改,统一编址有利于节约资源。
哈佛结构主要用于嵌入式计算机,程序固化在硬件中,有较高的可靠性、运算速度和较大的吞吐。
结构类型 | 优点 | 缺点 |
---|---|---|
冯诺依曼结构 | - 资源节约:指令和数据共享同一存储器,硬件设计简单,成本低。 | - 总线瓶颈:指令和数据通过同一总线传输,导致总线竞争和性能瓶颈(称为“冯诺依曼瓶颈”)。 |
- 灵活性强:适合通用计算任务,尤其是需要动态修改代码或数据的场景。 | - 速度限制:指令和数据不能并行传输,处理速度较慢。 | |
哈佛结构 | - 高效传输:指令和数据各自独立传输,可实现并行操作,提高性能。 | - 硬件复杂:需要两套存储器和总线设计,硬件成本较高。 |
- 高可靠性:指令和数据独立存储,程序固化在硬件中,适合嵌入式系统。 | - 灵活性低:数据和指令存储空间固定,动态调整较为困难。 |
2.什么是ARM流水线技术?
流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一。ARM7处理器核使用了典型三级流水线的冯·诺伊曼结构,ARM9系列则采用了基于五级流水线的哈佛结构。通过增加流水线级数简化了流水线各级的逻辑,进一步提高了处理器的性能。
PC代表程序计数器,流水线使用三个阶段,因此指令分为三个阶段执行:1.取指(从存储器装载一条指令);2.译码(识别将要被执行的指令);3.执行(处理指令并将结果写回寄存器)。而R15(PC)总是指向“正在取指"的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序执行位置+8;
ARM指令是三级流水线,取指,译指,执行,同时执行的,现在PC指向的是正在取指的地址(下一条指令),那么cpu正在译指的指令地址是PC-4(假设在ARM状态下,一个指令占4个字节),cpu正在执行的指令地址是PC-8,也就是说PC所指向的地址和现在所执行的指令地址相差8。
当突然发生中断的时候,保存的是PC的地址(PC-8+4=PC-4 下一条指令的地址)
ARM流水线的基本原理
- 分阶段执行:指令的执行被划分为多个独立的步骤(如取指、译码、执行等),每个阶段由硬件模块专门负责。
- 并行处理:不同指令可以同时在不同的阶段上处理,从而实现指令的并行执行。
- 吞吐量优化:流水线的目标是每个时钟周期都能完成一条指令,从而增加处理器的指令吞吐量。
ARM流水线的基本阶段
ARM经典三阶段流水线:
- 取指阶段 (Fetch, F)
从存储器中取出一条指令,并将其放入指令寄存器。 - 译码阶段 (Decode, D)
对取出的指令进行译码,识别操作类型和操作数地址。 - 执行阶段 (Execute, E)
执行指令,包括算术运算、逻辑运算、内存访问等操作。
ARM增强型流水线可能包括更多阶段,例如:
- 访存阶段 (Memory, M):访问数据存储器。
- 写回阶段 (Write Back, WB):将计算结果写回寄存器。
3.ARM有几种工作模式?
ARM处理器的工作模式主要分为 用户模式 (User Mode) 和 特权模式 (Privileged Modes),总共有7到9种模式(具体数量取决于ARM架构版本,例如ARMv4、ARMv7等)。以下是主要工作模式:
1. 用户模式 (User Mode)
特点:
用于运行普通用户程序。
访问受限,无法直接操作系统资源或硬件。
只能切换到特权模式通过异常(如中断)。
用途:运行普通应用程序。
2. 系统模式 (System Mode)
特点:
特权模式,允许访问全部系统资源。
与用户模式共享寄存器,但拥有特权访问权限。
用途:用于操作系统任务,运行内核代码。
3. 中断模式 (IRQ Mode)
特点:
特权模式,用于处理快速中断请求(IRQ)。
拥有一组专用的寄存器(R13、R14)。
用途:处理外部硬件中断,响应高优先级事件。
4. 快速中断模式 (FIQ Mode)
特点:
特权模式,用于处理快速中断请求(FIQ)。
有更多的专用寄存器(R8到R14),减少保存和恢复上下文的开销。
优先级高于IRQ模式。
用途:处理对实时性要求高的任务(如音频或视频数据流处理)。
5. 管理模式 (Supervisor Mode, SVC)
特点:
特权模式,用于进入操作系统内核或执行系统调用。
常在系统启动或异常处理时进入该模式。
用途:执行系统级操作,如初始化、管理资源。
6. 数据访问中止模式 (Abort Mode)
特点:
特权模式,当程序尝试访问非法内存时触发。
用于处理内存保护机制。
用途:处理数据访问异常或保护内存资源。
7. 未定义指令模式 (Undefined Mode)
特点:
特权模式,当处理器遇到未定义或不支持的指令时进入。
用途:用于模拟未定义指令或扩展功能的异常处理。
8. 系统掉电模式 (Monitor Mode)
特点:
主要用于支持ARM TrustZone安全架构。
特权模式,用于管理安全切换和安全任务。
用途:处理安全相关操作(仅ARMv6及以上支持)。
9. 恒定模式 (Hyp Mode)
特点:
特权模式,用于虚拟化环境(ARMv7及以上支持)。
允许一个虚拟机管理程序(Hypervisor)运行多个操作系统。
用途:支持虚拟化的运行环境。
模式切换
ARM通过以下方式切换工作模式:
异常触发:如中断、系统调用、未定义指令等。
手动设置:通过修改CPSR(Current Program Status Register)中的模式位。
模式名称 | 描述 | 应用场景 |
---|---|---|
用户模式 (User) | 运行普通应用程序。 | 普通用户程序 |
系统模式 (System) | 特权模式,支持内核任务。 | 操作系统内核 |
中断模式 (IRQ) | 处理外部硬件中断。 | 响应中断 |
快速中断 (FIQ) | 处理高优先级快速中断。 | 实时任务 |
管理模式 (SVC) | 系统调用或初始化。 | 系统启动、管理资源 |
数据中止 (Abort) | 内存访问异常处理。 | 内存保护 |
未定义模式 | 处理未定义指令异常。 | 调试或扩展功能 |
监控模式 (Monitor) | 安全模式(TrustZone)。 | 安全任务 |
虚拟化模式 (Hyp) | 虚拟机环境。 | 多操作系统虚拟化 |
4.Arm有多少32位寄存器?
ARM处理器共有37个寄存器。它包含31个通用寄存器和6个状态寄存器。
寄存器 | 用户模式 | FIQ模式 | IRQ模式 | 异常模式 | Supervisor模式 | 系统模式 |
---|---|---|---|---|---|---|
R0 ~ R7 | 共用 | 共用 | 共用 | 共用 | 共用 | 共用 |
R8 ~ R12 | 共用 | 专用 | 共用 | 共用 | 共用 | 共用 |
R13 (SP) | 共用 | 专用 | 专用 | 专用 | 专用 | 专用 |
R14 (LR) | 共用 | 专用 | 专用 | 专用 | 专用 | 专用 |
R15 (PC) | 共用 | 共用 | 共用 | 共用 | 共用 | 共用 |
CPSR | 共用 | 共用 | 共用 | 共用 | 共用 | 共用 |
SPSR | 无 | 有 | 有 | 有 | 有 | 无 |
5.Arm2440和6410有什么区别?
1.主频不同。2440是400M的。6410是533/667M的;
2.处理器版本不一样:2440是arm920T内核,6410是arm1176ZJF内核;
3.6410在视频处理方面比2440要强很多。内部视频解码器,包括MPEG4等视频格式。
4.6410支持WMV9、xvid、mpeg4、h264等格式的硬解码和编码;
5.6410多和很多扩展接口比如:tv-out、CF卡和S-Video输出等
6.spi、串口、sd接口也比那两个要丰富;
7.6410采用的是DDR内存控制器;2440采用的是SDRam内存控制器
8.6410为双总线架构,一路用于内存总线、一路用于Flash总线;
9.6410的启动方式更加灵活:主要包括SD、Nand Flash、Nor Flash和OneFlash等设备启动;
10.6410的Nand Flash支持SLC和MLC两种架构,从而大大扩大存储空间;
11.6410为双总线架构,一路用于内存总线、一路用于Flash总线;
12.6410具备8路DMA通道,包括LCD、UART、Camera等专用DMA通道
13.6410还支持2D和3D的图形加速;
6.ARM指令集分为几类?
2类,分别为Thumb指令集,ARM指令集。ARM指令长度为32位,Thumb指令长度为16位。这种特点使得ARM既能执行16位指令,又能执行32位指令,从而增强了ARM内核的功能。
7.通用寄存器包括R0~R15,可以分为具体哪三类?
1. 数据寄存器
范围:R0 ~ R12
用途:
用于一般数据的存储和操作。
作为函数的参数传递寄存器(前四个寄存器 R0 ~ R3,通常传递前四个参数)。
用于临时存储计算过程中的中间结果。
特点:
这些寄存器是通用的,可在任何模式下被大多数指令直接访问。
2. 特殊用途寄存器
范围:R13 ~ R15
用途:
R13(SP,Stack Pointer,堆栈指针):
指向当前堆栈顶部。
负责函数调用和任务切换中的数据保存与恢复。
不同模式下有独立的堆栈指针,以支持异常和中断。
R14(LR,Link Register,链接寄存器):
存储函数调用的返回地址。
在异常或中断处理时,保存被打断的指令地址。
R15(PC,Program Counter,程序计数器):
存储当前指令的地址。
每次指令执行后自动递增以指向下一条指令。
3. 特权模式下的专用寄存器
范围:R8 ~ R12(在FIQ模式下)
用途:
在快速中断(FIQ)模式下,这些寄存器具有专用的版本,避免了寄存器共享的上下文切换开销。
提高FIQ处理的速度和效率。
8.Arm处理器有几种工作状态?
从编程的角度来看,ARM微处理器的工作状态一般ARM和Thumb有两种,并可在两种状态之间切换。
1.ARM状态:此时处理器执行32位的字对齐ARM指令,绝大部分工作在此状态。
2.Thumb状态:此时处理器执行16位的半字对齐的Thumb指令。
9.ARM系统中,在函数调用的时候,参数是通过哪种方式传递的?
当参数小于等于4的时候是通过r0-r3寄存器来进行传递的,当参数大于4的时候是通过压栈的方式进行传递。
超过4个参数的部分通过 堆栈 传递。
按照参数列表的顺序,额外的参数从右到左压入堆栈。
调用函数时,从堆栈中读取额外参数。
10.为什么2440的内存起始地址是0x30000000?
S3C2440处理器有八个固定的内存块,只有两个是可以作为ROM,SRAM和SDRAM等存储器bank。具体
如下图所示。
11.ARM协处理器指令包括哪3类,请描述它们的功能。
ARM协处理器指令包括以下3类:
1.用于ARM处理器初始化ARM协处理器的数据处理操作。
2.用于ARM处理器的寄存器和ARM协处理器的寄存器间的数据传送操作。
3.用于在ARM协处理器的寄存器和内存单元之间传送数据。
12.什么是PLL(锁相环)?
简单来说,输入时钟的存在是作为“参考源"。锁相环不是为了单纯产生同频同相信号,而是一般集成进某种“频率综合电路”,产生一个不同频,但锁相的信号。
有点绕,打个比方:某参考晶振10Mhz,频率综合器A使用该参考源产生了900Mhz时钟,而频率综合器B产生了1Ghz时钟。虽然两路频率不同,但由于使用的通一个参考源,他们俩仍然是同源信号。相反,如果不同源,那么即便同频他们也不可能一致,因为世界上没有两个钟能做到完全一样,总有微弱的频差,导致相位飘移。在很多现实应用中有要求同源时钟的场合,所以,锁相环被广泛应用。锁相环的另外一项衍生应用是相干解调,可以自己查查相关资料。
- 锁定:能够将输出信号的相位和频率锁定到输入信号上。
- 宽范围:通过调整VCO的范围,支持多种频率的输入信号。
- 实时调节:对输入信号的变化做出快速反应。
原文地址:https://blog.csdn.net/weixin_64593595/article/details/145281239
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!