×
单片机 > 单片机程序设计 > 详情

arm体系架构知识汇总

发布时间:2022-08-18 发布时间:
|

主板——核心板+扩展电路+接口


核心板——cpu+外围电路+接口




arm体系结构知识点:


核心(内核)编程方法


接口(外围模块)技术




芯片价格:摩尔定律,十八个月翻一倍。十八个月之后价格降一半。


现在芯片电路:用硬件描述语言设计。


芯片生产商:买的arm公司的芯片的硬件描述语言的程序设计的内核,加一些外围模块。


内核是统一的,外围是各自为战。




arm:Advanced RISC Machines




arm公司网址:/zixunimg/eeworldimg/www.arm.com




arm不仅是一家公司还是一类微处理器的统称,基于arm内核的芯片统称为arm芯片。


------------------------------------------------------------------------------------------------------------------


arm体系结构




------------------------------------------------------


arm体系结构特点:


arm指令都是32位定长的;


大量的寄存器(37个寄存器);


Load/Store体系结构;


多寄存器的Load/Store指令;


指令的条件执行;


在单时钟周期执行的单条指令中完成数据移位操作和ALU操作;


通过变种和协处理来扩展ARM处理器的功能;


扩展了16位的Thumb指令来提高代码密度。




-------------------------------------------------------


arm系列的命名:


ARM1系列:


架构:ARMv1(内核ARM1)




ARM2系列:


架构:ARMv2(内核ARM2)




ARMv2a系列:


架构:ARM250




ARM3系列:


架构:ARMv2a(内核ARM2a)




ARM6系列:


架构:ARMv3(内核ARM610)




----------------


ARM7TDMI系列:三级流水


架构:ARMv4T




ARM9TDMI系列:五级流水


架构:ARMv4T




-------------------


ARM9E系列:


架构:ARMv5




ARM10E系列:六级流水


架构:ARMv5




XScale系列:


架构:ARMv5TE




------------------


ARM11系列:八级流水


架构:ARMv6(内核:ARM1136J(F)-S);


架构:ARMv6T2(内核:ARM1156T2(F)-S);


架构:ARMv6KZ(内核:ARM1176JZ(F)-S);


架构:ARMv6K(内核:ARM11MPCore);




------------------


Cortex系列:13级流水


架构:ARMv7-A(Application)(内核:Cortex-A8):面向使用复杂操作系统及用户应用的应用处理器。


架构:ARMv7-R(Real-time)(内核:Cortex-R4(F)):适用于实时系统的嵌入式处理器。


架构:ARMv7-M(Microcontroller)(内核:Cortex-M3):为对成本和功耗敏感的嵌入式应用而设计的,目标是以8位单片机的价格实现32位的高性能。




arm体系结构的变种:


Thumb指令集(T变种):指令长度16位。


长乘法指令(M变种):


增强型DSP指令(E变种):


Java加速器Jazelle(J变种):




arm处理器命名格式:


ARM x y z T D M I E J F -S


x:序列


y:2:带MMU, 4带MPU,6没有


z:0:标准cache,2:减小的cache, 6可变的cache


T:处理器支持Thumb指令集


D:支持JTAG调试器


M:支持长乘法指令


I:有嵌入式跟踪宏单元


E:支持增强指令(基于TDMI)


J:支持JAVA硬件加速(Jazelle)


F:支持向量浮点单元


S:可综合版本




-------------------------------------------------------


arm指令流水:




取指Fetch:微处理器取指单元从存储器中取得要执行的指令,存储到指令寄存器中。


译码Decode:对指令寄存器中的指令进行分析,确定要进行什么操作。


执行Execute:执行指令规定的操作,并按指令的要求保存操作结果。






冯诺依曼结构:指令存储器地址和数据存储器地址指向同一个存储器的不同物理位置。因此指令和数据使用同一条数据总线,同一时刻只能取指或取数据。




哈佛结构:指令总线和数据总线分开,可以同时访问,其宽度可也可以不同。




三级流水:fetch decode execute


五级流水:fetch decode execute memory write




五级流水的流水线级:


取指(fetch)


译码(decode)


执行(excute)


缓冲/数据(buffer/data):如果需要则访问数据存储器,否则ALU只是简单的缓冲一个时钟周期,以便使所有的指令具有同样的流水线流程。


回写(write-back):将指令的结果回写到寄存器堆,包括任何从寄存器读出的数据。




------------------------------------------------------------


arm存储系统




arm存储有两种方式:大端,小端。


大端格式:字的最低有效字节存放在存储器的高地址。


小端字节:字的最低有效字节存放在存储器的低地址。




arm默认小端模式。




注意:数据和代码在存储器中的存储格式要和处理器采用的格式一致。




arm存储器层次:


寄存器组;


片上ram;


片上cache;


主存储器。




arm体系结构中可以使用的存储管理策略包括:


多类型存储单元;


cache;


写缓存;


虚拟内存地址。




实现存储系统管理的方法:


使能cache,加快存储器的访问速度;


启动虚拟地址到物理地址的映射;


使用“域管理”策略,对存储单元的访问进行保护;


对i/o映射地址空间的访问加以限制;


协处理器cp15。




arm微处理器有37个32位的寄存器。




------------------------------------------------------------------


arm芯片选型




芯片自身性能与集成度方面的因素:


有无MMU;


芯片效率;


内部存储器容量;


USB接口;


GPIO数量;


中断控制器;


IIS(Integrate Interface of Sound);


nWAIT信号;


RTC(Real Time Clock);


LCD控制器;


PWM输出;


ADC/DAC;


扩展总线;


UART和IrDA;


多核考虑(ARM+DSP)(ARM+ARM);


内置FPGA;


时钟计数器和看门狗;


电源管理;


DMA控制器;




芯片稳定性;




芯片供应商的技术支持能力;




芯片的供货的稳定性和采购的方便性;




---------------------------------------------------------------------------------------------------------------------


arm编程模型(内核编程)




----------------------------------------------------------


arm的数据类型:




arm支持以下三种数据类型:


字节:8位


半字:16位


字 :32位




-------------------------------------------------------


arm的工作模式:




arm有七种工作模式:




两个正常模式:


用户模式(User):普通程序执行模式,大部分程序执行在这种模式下。


系统模式(System):使用和User模式相同寄存器集的特权模式。




五个异常模式:


快速中断模式(FIQ):当一个高优先级(fast)中断产生时将会进入这种模式。


外部中断模式(IRQ):当一个低优先级(normal)中断产生时将会进入这种模式。


管理模式(Supervisor):当复位或软中断(SWI)指令执行时进入这种模式。


数据访问终止模式(Abort):当存取异常时将会进入这种模式,用于虚拟存储或存储保护。


未定义模式(Undef):当执行未定义指令时进入这种模式,有时用于通过软件仿真协处理器硬件的工作模式。






一个非特权模式:


用户模式(User)




六个特权模式:


系统模式(System)


快速中断模式(FIQ)


外部中断模式(IRQ)


管理模式(Supervisor)


数据访问终止模式(Abort)


未定义模式(Undef)




------------------------------------------------------


arm运行状态




arm处理器有两种工作状态:


ARM状态:arm状态执行arm指令,pc值字对齐(32位)。


Thumb状态:thumb状态下执行thumb指令,pc值半字对齐(16位)。




工作状态的切换:




使用指令切换


BX Rm


Rm[0] = 0 ARM状态


Rm[0] = 1 Thumb状态




处理器自动切换


处理器进行异常处理,若在Thumb状态,则进入ARM状态,异常处理返回后进入Thumb状态。




--------------------------------------------------------------


arm寄存器




ARM处理器有37个32位长的寄存器;


31个通用寄存器(16个公共+15个私有);


6个状态寄存器;




不同模式下能访问的寄存器是不一样的。




----------------


通用寄存器:参与运算或保存运算的结果。




以下有16个公共寄存器:


usr/system:R0——R12,R13,R14,R15.(在用户模式和系统模式下有16个公用寄存器)。




有特殊用途的通用寄存器(除了做通用寄存器,还有以下功能):


R13:堆栈指针寄存器SP。


R14:链接寄存器LR。一般用来表示程序的出口。


R15:程序计数器PC,永远指向取指的指令地址。一般用来表示程序的入口。




以下有15个私有寄存器:


irq:R0......R12,R15.(外部中断模式有两个私有的寄存器)


R13_irq


R14_irq




svc:R0......R12,R15.(管理模式有两个私有的寄存器)


R13_svc


R14_svc




abt:R0......R12,R15.(数据访问终止模式有两个私有的寄存器)


R13_abt


R14_abt




und:R0......R12,R15.(未定义模式有两个私有的寄存器)


R13_und


R14_und




fiq:R0-R7,R15.(快速中断模式有七个私有的寄存器)


R8_fiq


R9_fiq


R10_fiq


R11_fiq


R12_fiq


R13_fiq


R14_fiq




---------------------


状态寄存器psr:




一个:


cpsr:当前程序状态寄存器。(七种模式都能访问)。




五个:


spsr:保存程序状态寄存器。(只有对应模式才能访问)。


spsr_irq


spsr_svc


spsr_fiq


spsr_abt


spsr_und




cpsr/spsr寄存器格式:


条件代码标识


31 30 29 28 7 6 5 4-0


N Z C V I F T mode




高四位:


N=1:负数或小于(negtive)


Z=1:等于零(zero)


C=1:有进位或借位扩展


V=1:有溢出




后八位:


I=1:IRQ禁止interrupt


F=1:FIQ禁止fast


T=1/0:Thumb/Arm状态位




mode后五位表示七种模式:


0b10000:用户模式


0b10001:fiq模式


0b10010:irq模式


0b10011:管理模式


0b10111:中止模式


0b11011:未定义模式


0b11111:系统模式




------------------------------------------------------------------


arm异常处理




arm微处理器通过异常来响应程序正常执行过程中发生的意外事件。




arm微处理器有七种类型的异常:


复位异常(Reset)


未定义异常(Undefined)


软件中断(SWI)


预取异常(Prefetch Abort)


数据异常(Data Abort)


外部中断异常(IRQ)


快速中断异常(FIQ)




当异常发生时,arm微处理器会把pc设置为一个特定的存储器地址,然后从这个地址取指令并执行。这个特定的地址称为异常向量,所有的异常向量地

[1] [2]
arm体系架构知识汇总

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址