锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

ARM芯片层相关术语和缩写汇总(一)

时间:2023-01-15 04:30:00 0aa33晶体管模块0aa31晶体管模块

以下相关术语及说明均为网络信息收集

1、ISA

Instruction set architecture.指令集或指令集系统, 它是计算机系统结构中与程序设计相关的部分,包括基本数据类型、指令集、寄存器、搜索模式、存储系统、中断、异常处理和外部I/O。指令集架构包含一系列opcode即操作码(机器语言)和由特定处理器执行的基本命令。

常见类型如下: 复杂指令集运算(Complex Instruction Set Computing,CISC);简化指令集运算(Reduced Instruction Set Computing,RISC)

2、RISC

Reduced instruction set computer,精简指令集计算机是执行较少类型计算机指令的微处理器.这样,它就可以更快地执行操作。因为计算机执行每种指令类型都需要额外的指令晶体电路计算机指令集越大,微处理器就越复杂,执行速度就越慢。

3、CISC

Complex instruction set computer,自计算机诞生以来,人们一直在使用复杂的指令系统计算机CISC指令集。早期的桌面软件是按照CISC设计,一直持续到现在。目前,桌面计算机很流行x使用86系统结构CISC。

4、AMBA

Advanced Microcontroller Bus Architecture,用于高级微控制器总线架构ARM架构系统芯片(SoC)一种设计总线架构,由安谋国际科技于1995年开发,经历了很多版本。

1995:AMBA1.0 定义了APB外设总线及ASB系统总线

1999: AMBA2.0 定义了AHB - Advanced High-performance Bus, APB总线升级为同步总线

2003: AMBA3.0 高性能互联互联协议AXI,以及APB总线扩展, AHB-Lite协议等

最常用的AMBA总线有三种:

AHB:Advanced High-performance Bus高级高性能总线

APB:Advanced Peripheral Bus,高级外设总线

AXI:Advanced eXtensible Interface, 高级可扩展接口。AXI 为AMBA3.0引入总线协议, 相比AHB有更多的优势, 故现在SOC取代设计AHB的趋势。

众所周知,AHB但是SOC大多数外设都挂在里面APB上,以AHB to APB bridge作为master,而bridge又作为slave接到AHB那为什么不把所有的外设都挂在上面呢?AHB为了获得最快的访问速度?

主要有四个原因:

1.片上存储器直接与CPU数据交互需要确保它们有足够快的访问速度,所以它们必须挂起来AHB上,DMA它负责不同存储器或外设之间的数据传输,因此它也挂在上面AHB上,而SOC其他外设大多挂在总线上CPU它们的寄存器可以通过总线读写,不会太频繁,也不会太快。

2.如果所有的外设都挂在上面AHB下,会导致bus matrix过多的负载(风扇)可能会显著恶化相关路径的时间顺序,降低时钟频率,但会降低CPU的性能。

3、APB总线及其上的设备因为对速度要求低,可以用频率较低的PCLK,甚至关掉它的电源,以节省功耗

4、APB协议是非装配线,可以减少SLAVE设计复杂,使设计复杂SLAVE易于复用

5、MPU

Memory Protection Unit,内存保护单元。它是 Cortex-M 处理器内部的一个模块(注意:并不是所有 Cortex-M 版本都支持 MPU,还有一些支持 MPU 的 Cortex-M 版本上,MPU 也是可选组件(取决于具体)MCU厂家是否实现)

MPU存储保护单元可以保护存储器(主要是内存和外部存储器),使软件更加强大和可靠。在使用前,必须根据需要进行编程。如果没有启用MPU,相当于系统中没有配置MPU。

MPU提高系统可靠性的能力如下:

1.防止用户应用程序破坏操作系统中使用的数据。

2.阻止任务访问其他任务的数据区,从而将任务分开。

3.关键数据区可以设置为只读,从根本上消除了被破坏的可能性。

4.检测意外的存储访问,如堆栈溢出和数组越界。

另外,还可以通过MPU设置存储器regions其他访问属性,如缓区、缓冲等

6、NVIC

Nested Vectored InterruptController,嵌套向量中断控制器

管理中断嵌套的核心任务是优先管理。NVIC先占优先级和次占优先级给每个中断。它们的关系描述如下:

1.先占优先级较高的中断可以打断先占优先级较低的中断(类似优先级)。

2.如果同时悬挂两个先占优先级中断,则优先执行次占优先级较高的中断。

3.如果两个悬挂中断优先级相同,则优先中断位于中断向量表中。

4.次占优先级不会在任何时候造成中间嵌套,即是说中断嵌套完全是由先占优先级决定的。

NVIC通过优先级分组来分配先占优先级和次占优先级的数量。

7、WIC

Wake-up interrupt controller,唤醒中断控制器。

cortex-m处理器处于sleep mode或deep sleep mode时,处理器需要外部中断信号来唤醒,才能继续执行指令。

在deep sleep mode下,处理器可能没有时钟,甚至已经被断电(具体行为取决于芯片设计者,arm并没有明确规定),并不能接收到外部中断信号,因此为了能够正确唤醒处理器,需要一个电路来接收外部中断信号,并通知片上PMU(Power Management Unit)给处理器提供时钟或电源,并在处理器可以接收中断后,将收到的中断信号送回给处理器,但这一功能是可选的。

WIC就是实现这一功能的电路。

8、NMI

Non maskable interrupt 不可屏蔽中断。

在ARM cortex M处理器中具有最高的优先级,通常被用于接收并处理一些威胁到芯片安全的事件。

NMI的三个常见用途:

1、watchdog的计数器因为系统出现故障没有及时清除计数器而导致溢出时,可以产生NMI请求(当然,更常见的做法是产生复位)

2、Brown-out detector(BOD),实时检查芯片的供电电压,如果低于警戒值,则产生NMI请求(也可以是产生复位,取决于芯片设计)

3、芯片上的其他安全事件,比如检测到某些信号线收到攻击而发生错误,或者发生了越界的存储空间访问(由MMU等模块监控)等,实际的情况由具体的芯片设计决定

9、SP、MSP、PSP

SP:Stack Pointer 栈指针, 指向最后一个被压入元素的地址

MSP:Main Stack Pointer,主栈指针

PSP:Process Stack Pointer,进程栈指针

Cortex-M架构的压栈和弹栈过程:

1、压栈:SP先自减4,然后将待压入的数据存放到SP所指的地址

2、弹栈:从SP指针所指的地址读出数据,然后SP指针自增4

Cortex-M内核何时使用MSP何时使用PSP?

Cortex-M双堆栈的意思是有两个堆栈,但是任何时刻只能使用其中之一。

那什么时候使用MSP,什么时候使用PSP呢?也就是说SP寄存器中的值在某一时刻到底是使用MSP的值还是PSP的值?

这是根据CONTROL寄存器的bit1来决定的。当CONTROL的bit1为0使用MSP(默认方式);当CONTROL的bit1为1使用PSP。

 根据以上分析:

1、CONTROL的bit1为0,SP = MSP

2、CONTROL的bit1为1,SP = PSP

3、Cortex-M芯片复位后处于线程模式特权级,默认使用MSP。

通过配置CONTROL寄存器的bit1位就可以决定SP使用MSP还是PSP。

在裸机开发中,CONTROL的bit1始终是0,也就是说裸机开发中全程使用程MSP,并没有使用PSP。在执行后台程序(大循环程序)SP使用的是MSP,在执行前台程序(中断服务程序)SP使用的是MSP。

在OS开发中,当运行中断服务程序的时候CONTROL的bit1是0,SP使用的是MSP;当运行线程程序的时候CONTROL的bit1是1,SP使用的是PSP

参考博客:

1、Cortex-M3双堆栈MSP和PSP_zhaodong_jack的博客-CSDN博客_msp和psp

2、NMI在芯片常见用途_硅农阿轩的博客-CSDN博客_cortex nmi

3、Cortex M3:MPU_WenLang_M的博客-CSDN博客

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章