历史上的今天
返回首页

历史上的今天

今天是:2025年02月06日(星期四)

正在发生

2021年02月06日 | arm体系架构知识汇总

2021-02-06 来源:eefocus

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


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




arm体系结构知识点:


核心(内核)编程方法


接口(外围模块)技术




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


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


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


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




arm:Advanced RISC Machines




arm公司网址:http://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,管理模式(SVC),当处理器的复位引脚被加上有效服务信号时,产生复位异常。


数据异常:2,数据访问中止模式(Abort),处理器数据访问时,如果目标地址不存在或相应的地址空间没有访问权限则产生数据访问中止异常。


快速中断异常:3,快速中断模式(FIQ),处理器外部快速中断清求引脚有效且CPSR寄存器的F位为0,处理器产生快速中断请求。


正常中断异常:4,正常中断模式(IRQ),处理器外部正常中断请求引脚有效且CPSR寄存器的I位为0时,处理器产生正常中断请求。


预取异常:5,数据访问中止模式(Abort),当一个指令被从内存中预取时,由于某种原因而失败,如果它能到达执行状态这个异常才会产生。


未定义指令异常:6,未定义指令中止模式(Udef),当arm处理器或协处理器执行未定义的指令码时,产生未定义指令异常。


软中断异常:6,管理模式(SVC),当arm处理器或协处理器执行未定义的指令码时,产生未定义指令异常。


arm异常相应过程:


将当前程序状态寄存器CPSR的值保存到将要执行的异常对应的处理器工作模式的SPSR寄存器。


修改当前程序状态寄存器CPSR的相应位。


把将要执行的异常所对应的工作模式的LR寄存器设置成异常返回地址。


将程序寄存器PC的值设置成该异常的向量地址,并从该地址取指令执行。


推荐阅读

史海拾趣

Hitano Enterprise Corp公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐不可或缺的重要设备之一。它作为连接电视与外部信号源的桥梁,不仅实现了传统模拟电视向数字电视的跨越,还极大地丰富了电视节目的选择和观看体验。

从专业角度来看,机顶盒的主要功能是接收数字电视信号,并将其转换成适合在电视机上播放的格式。无论是来自有线电缆、卫星天线、宽带网络还是地面广播的信号,机顶盒都能有效接收并解码,从而呈现出高清甚至超高清的画质和震撼的音效。此外,机顶盒还具备网络交互功能,用户可以通过它连接到互联网,享受在线购物、观看网络视频、玩游戏等多元化服务。

从科普层面讲,机顶盒的出现极大地改变了人们的电视观看方式。它不再局限于单向接收信息,而是成为了一个能够与用户进行互动的智能终端。通过机顶盒,观众可以自由选择观看的节目,甚至参与到节目的互动中,极大地提升了观看的参与感和乐趣。同时,机顶盒还提供了丰富的增值服务,如电子节目指南、因特网网页浏览等,进一步满足了用户的多样化需求。

综上所述,机顶盒以其强大的功能和广泛的应用场景,成为了现代家庭娱乐的重要组成部分。随着技术的不断进步和消费者需求的日益多样化,机顶盒的功能和应用场景也将不断扩展和丰富。

AMI [American Megatrends Inc]公司的发展小趣事

AMI(American Megatrends Inc)是一家全球领先的硬件和软件解决方案提供商,主要专注于计算机主板固件、嵌入式系统管理和云计算服务。以下是关于AMI公司发展的五个相关故事:

  1. 公司创立与起步阶段:AMI公司于1985年成立于美国佐治亚州的诺克罗斯,并在当地建立了总部。公司创始人为S. Shankar和Pat Sarma。最初,AMI专注于为个人计算机和服务器等设备提供BIOS(基本输入/输出系统)固件,为计算机硬件行业奠定了基础。

  2. BIOS技术创新:AMI在BIOS领域进行了持续的技术创新,不断推出新的功能和改进。公司开发了多个版本的AMI BIOS,包括AMI WinBIOS、AMI Aptio和AMI UEFI BIOS等。这些BIOS版本在计算机硬件市场上得到了广泛应用,为用户提供了稳定可靠的固件解决方案。

  3. 嵌入式系统管理解决方案:除了BIOS固件,AMI还致力于开发和提供嵌入式系统管理解决方案。这些解决方案包括远程管理、监控、诊断和维护等功能,用于企业服务器、网络设备、嵌入式系统和物联网(IoT)设备等领域。

  4. 合作伙伴关系与生态系统建设:AMI与全球各种硬件和软件供应商建立了紧密的合作伙伴关系,共同推动技术创新和产品发展。公司与主板制造商、芯片厂商、系统集成商和软件开发商等合作,为客户提供全面的解决方案和支持服务。

  5. 云计算服务和新兴技术领域:随着云计算和人工智能等新兴技术的发展,AMI也开始拓展业务领域,提供云计算服务和相关解决方案。公司致力于为客户提供高性能、高可靠性的云计算平台和服务,以满足不断增长的数据处理和存储需求。

这些故事展示了AMI公司从创立初期到如今在BIOS技术创新、嵌入式系统管理、合作伙伴关系建设和拓展新兴技术领域等方面取得的重要进展。AMI作为一家全球知名的硬件和软件解决方案提供商,持续致力于为客户提供创新的产品和卓越的服务。

中科银河芯(GXCAS)公司的发展小趣事
输入信号的电压范围决定了三极管何时截止、何时饱和导通。
比亚迪(BYD)公司的发展小趣事

进入21世纪,新能源汽车市场逐渐兴起。比亚迪凭借在电池领域的深厚积累,果断转型进入新能源汽车领域。2000年,比亚迪推出了全球第一款纯电动乘用车——比亚迪e6,这一创新产品引起了市场的广泛关注。此后,比亚迪不断加大对新能源汽车的研发和生产投入,推出了多款具有竞争力的新能源汽车产品。同时,比亚迪还积极涉足光伏和LED照明等其他领域,不断拓展其电子业务版图。

FCI [First Components International]公司的发展小趣事

比亚迪的发展可以追溯到1995年,当时王传福创立了这家公司,最初专注于生产小型电池。在初创期,比亚迪通过模仿日本三洋和索尼的产品快速积累了生产经验。然而,王传福深知模仿不是长久之计,因此他果断地决定转向自主研发和创新。这一决策在日后证明是极其明智的。随着技术的不断积累,比亚迪于1997年开始量产锂离子电池,并成功实现了年销售额突破1亿元。这一里程碑标志着比亚迪在电池技术领域取得了重大突破,为其日后在电子行业的发展奠定了坚实基础。

ASI [ASI Semiconductor, Inc]公司的发展小趣事

在竞争激烈的电子行业中,创新是企业持续发展的关键。ASI深知这一点,因此一直致力于技术创新和产品升级。通过不断投入研发资源、引进先进技术以及与高校和研究机构的合作,ASI成功推出了一系列具有竞争力的新产品和解决方案。这些创新不仅提升了ASI的市场竞争力,还为其未来的发展注入了强大的动力。

这些故事展示了ASI Semiconductor, Inc.从创立到发展成为电子行业领导者的过程。通过抓住市场机遇、提升产品质量、拓展全球市场、创新技术和优质服务,ASI成功地实现了自身的快速发展,并在行业中树立了良好的声誉。

问答坊 | AI 解惑

PLC视频资料

大家想了解更多PLC知识或PLC视频教学。请登陆WW .PLCJS.COM…

查看全部问答>

求助一个弱弱的问题。。。

如果做一个数字电压表,它的量程是由AD的输入电压量程决定的吗?如何增大量程呢?…

查看全部问答>

单片机实现T9文字输入法电路(源代码+仿真)

单片机实现T9文字输入法电路(源代码+仿真)…

查看全部问答>

windows mobile ????????????????

请问在Windows Mobile平台下怎么用C++将Bitmap保存到图像文件?…

查看全部问答>

一个evc设置窗体大小函数添加位置的问题?

刚开始用evc,弱弱的问下:在evc中为什么把setwindowpos这个函数放在oncreate函数中就不起作用,而放在oninit函数中就好用呢?我再vc6.0中写再oncreate函数中也起作用啊? 求高手指点1~2~…

查看全部问答>

5.1的选择<<<世界500强公司在上海职位介绍>>>

福利体系:18% 住房补贴,7% 交通补贴+600,年底双薪,年终2.5-3个月工资 奖金,另外每年3000元左右 现金保单,30万 人生意外险和重大疾病险。 公司为个人缴纳的保险分为两种形式,如果有居住证或户口在上海的,公司缴纳城保,那么住房补贴是四金 ...…

查看全部问答>

使用vivi不能将wince烧写到flash!

我使用vivi的load flash wince u命令,将wince烧写到板上的flash时,格式化的时候出现几个error, 然后也正常格式化完毕,刚刚把wince烧写到板上时,wince正常启动,因为我没有断过电, 重启之后flash上刚刚烧写的wince就不见了,不能正常启动 ...…

查看全部问答>

ISE10.1警告

ERROR:Place:1018 - A clock IOB / clock component pair have been found that are not placed at an optimal clock IOB /   clock site pair. The clock component <start_IBUF_BUFG> is placed at site <BUFGMUX_X1Y1>. The I ...…

查看全部问答>

ISE13.2 编译时候出的错,该怎么解决?

ERROR:EDK - INFO:Security:56 - Part \'xc6slx9\' is not a WebPack part.   INFO:Security:60 - The XILINXD_LICENSE_FILE environment variable is set to   \'C:\\Xilinx\\Xilinx.lic\'.   INFO:Security:62 - T ...…

查看全部问答>

你问我答——求助:SoCFPGA例子时候遇到的问题。

例子:Altera-SoCFPGA-HardwareLib-GNU   ALT_STATUS_CODE test_config_full(void) {     // Verify the MSELs are appropriate for the type of image we\'re using.     ALT_FPGA_CFG_MODE_t mode = alt_fpga_ ...…

查看全部问答>