历史上的今天
返回首页

历史上的今天

今天是:2024年09月29日(星期日)

正在发生

2021年09月29日 | ARM_Core的处理器模式与寄存器,结构杂谈

2021-09-29 来源:eefocus

ARM处理器的工作状态:ARM处理器有两种工作状态。在程序的执行过程中,处理器可以在两种工作状态之间切换,并且不影响相应寄存器中的内容。


ARM状态,此时处理器执行32位对齐的ARM指令;BX指令,当操作数寄存器最低位为0时,进入ARM状态。


Thumb,此时处理器执行16位对齐的Thumb指令。BX指令,当操作数寄存器最低位为1时,进入Thumb状态。


BX(Branch Exchange):BX Rn;   ##其中Rn可以是R0-R15中的任意一个。指令通过将寄存器Rn的内容拷贝到程序计数器PC来完成4Gbyte的地址空间的跳转。


在进入异常中断后,ARM内核会自动切换到ARM状态,所以在异常中断处理程序入口的是ARM指令,如果需要切换到Thumb状态必须在异常中断返回前,切换到ARM工作状态。当处理器在Thumb状态下发生异常时,返回后,自动切换到Thumb状态。


ARM处理器总是从ARM工作状态开始的。

 

ARM处理器的7中工作模式:

USE模式:正常用户模式。

FIQ模式:快速中断模式,支持高速数据传输。

IRQ模式:普通中断模式。

SVC模式:Supervisor模式,操作系统保护模式,处理软件中断swi,reset.

ABT模式:数据,指令中止模式。

UND模式:未定义模式,支持软件仿真。

SYS模式:系统模式,运行特权操作系统任务。


除用户模式之外的6中模式称为特权模式,特权模式下,程序可以访问所有的系统资源,可以任意的进行处理器模式的切换。


用户模式下不能访问一些受操作系统保护的系统资源,不能直接进行处理器模式切换,需要由应用程序产生异常处理。


特权模式中,除系统模式之外的5种模式称为异常模式。


FIQ要比IRQ的响应快很多,首先FIQ的优先级比较高,再次ARM的FIQ会有自己更多的寄存器,由ARM自动保存。


异常处理过程:将下一条指令存入LR寄存器,CPSR赋值到SPSR,强制设置CPSR运行位,跳转到异常处理函数。


返回:将LR中的值减相应的偏移量送到PC中,将SPSR的值复制到CPSR中。

异常向量表:0x0000_0000---复位Reset,进入SVC模式。

                 0x0000_0004---未定义指令,进入UND模式。

                 0x0000_0008---软件中断,进入SVC模式。

                 0x0000_000C---中止指令,进入ABT模式。

                 0x0000_0010---中止数据,进入ABT模式。

                 0x0000_0014---保留

                 0x0000_0018---IRQ中断,进入IRQ模式。

                 0x0000_001C---FIQ中断,进入FIQ模式。

 

ARM处理器中一共有37个寄存器。分别有31个通用寄存器:R0-R15, R13_svc, R14_svc, R13_abt, R14_abt, R13_und,

      R14_und, R13_irq, R14_irq, R8_frq----R14_frq。

                                            6个状态寄存器:CPSR, SPSR_svc, SPSR_abt, SPSR_und, SPSR_irq, SPSR_fiq。

R13通常用作堆栈指针。R14通常用作子程序连接。

CPSR当前程序状态寄存器。SPSR备份程序状态寄存器。

31--28:NZCV(Negative Zero Carry Overflow)

27---8:Reserve

7----5:IFT(IRQ disable FIQ disable State bit)

4----0:Mode bits

0b10000---用户模式,0b10001---FIQ模式,0b10010---IRQ模式,0b10011---SVC模式,0b10111---ABT模式,

0b11011---UND模式,0b11111---SYS模式。

 

question:为什么会根据Rn的最低位来切换状态呢,最低位是1表示8位对齐而不是16位啊。难道arm本身是16位地址对齐??

 

arm处理器的架构发展:

  

arm系统一般包括:mpcore,debug and trace,smmu,GIC,AMBA bus,security扩展,

  

  

arm中最多支持16个coprocessor,CP0-CP15,其中CP8-CP15是由arm reserve的,CP0-CP7是imp defined的。

  arm的coprocessor model中,coprocessor一般包括,

  1) 组成coprocessor interface的primary,secondary coprocessor寄存器;

  2) internal寄存器;

ARMv7以及之前的版本中,包含的coprocessor有:

  1) CP15,提供memory,cache,tcm的控制,和系统中非debug功能的寄存器;也被称为系统控制协处理器

  2) CP14,提供其他系统寄存器的访问,包括debug,trace;

  3) CP10,CP11,用作SIMD,VFP的控制,需要同时使用。

ARM的协处理器指令包括五个:

  1) CDP,协处理器数操作指令,

  2) LDC,协处理器数据加载指令,

  3) STC,协处理器数据存储指令,

  4) MCR,ARM寄存器到协处理器寄存器的数据传送指令,

  5) MRC,协处理器寄存器到ARM寄存器的数据传送指令,

 命令格式:

  

推荐阅读

史海拾趣

DESOUTTER公司的发展小趣事

2001年,Desoutter公司与CP(Chicago Pneumatic)和GR(Grorges Renault)合并,成立了CPDI公司。这次合并使Desoutter公司获得了更强大的技术实力和市场资源,进一步巩固了其在气动工具领域的领先地位。合并后,CPDI公司继续致力于气动工具的研发和生产,并推出了一系列创新产品,以满足市场的不断变化和升级需求。

HANA Micron公司的发展小趣事

为了更好地服务全球客户,Hama积极实施国际化战略,在全球范围内设立了多家子公司。这些子公司不仅负责当地市场的销售和服务工作,还积极参与技术研发和产品创新活动。通过全球子公司的协同作战,Hama成功实现了资源的优化配置和市场的深度覆盖。目前,Hama在全球拥有约2500名员工、5亿欧元的业务和19家全球子公司,已成为国际知名的电子配件供应商之一。未来,随着全球市场的不断变化和发展,Hama将继续加强全球子公司的建设和布局,为公司的长远发展奠定坚实基础。

Hitron公司的发展小趣事

在电子配件领域,Hama始终保持着对技术创新的追求。公司不断投入研发资源,推出了一系列具有自主知识产权的高精度、高可靠性的检测仪表产品,如激光测距仪、激光柜位计等,广泛应用于钢铁、矿山、化工等行业。这些创新产品不仅满足了客户的多样化需求,也提升了生产效率和产品质量,赢得了市场的广泛认可。同时,Hama还积极拓展国际市场,产品出口到欧洲、美洲、亚洲等多个国家和地区,进一步提升了其国际影响力。

Chiplus Semiconductor Corp公司的发展小趣事

在21世纪初,全球半导体行业蓬勃发展,台湾地区的IC设计领域也呈现出勃勃生机。在这样的背景下,晶发半导体的创始人蒲文豪怀揣着对低功率SRAM领域的深厚热情,于2002年创立了Chiplus Semiconductor Corp.(晶发半导体)。蒲文豪曾在一家专攻低功率SRAM的公司工作,深知这一领域的潜力和市场需求。他立志要做低功率SRAM领域的领军者,为全球客户提供卓越的产品和服务。

BAE Systems公司的发展小趣事

电子行业是一个充满竞争和挑战的领域。面对不断变化的市场环境和客户需求,BAE Systems公司不断调整自身的战略和业务结构。公司注重市场调研和客户需求分析,根据市场变化及时调整产品线和市场策略。同时,公司也加强了对内部管理和流程的优化,提高了运营效率和成本控制能力。这些举措使得公司能够在激烈的市场竞争中保持领先地位,实现稳健发展。

Facon公司的发展小趣事

在2010年代初,随着科技的飞速发展,电子行业正迎来新一轮的创新浪潮。这时,一群充满激情和梦想的工程师在硅谷创立了Facon公司,他们怀揣着改变世界的愿景,立志在电子行业中留下自己的印记。初始阶段,Facon主要专注于研发高性能的半导体芯片,为智能手机、平板电脑等电子产品提供强大的计算能力。通过不懈努力和持续创新,Facon逐渐在市场中树立了良好的口碑。

问答坊 | AI 解惑

单片机怎样处理LM331送来的信号

本帖最后由 paulhyde 于 2014-9-15 09:41 编辑 当将模拟信号转换成方波脉冲后,再将脉冲信号送入单片机,那么单片机是怎样处理这个脉冲信号的?  …

查看全部问答>

8051fxxx IDE出现下列问题

note:usb address and data registers will not valid until usb clock is running 这是什么造成的呢?…

查看全部问答>

技术在于积累!-------谈谈偶做LED驱动电源的经历

技术在于积累!        第一次刚接触LED驱动是从一块DEMO板: DC输入,输出是低电流大致200MA的; 因为客户的需求,后来公司头一次想用SMD802开发一块非隔离的7*1w 450MA驱动板;那时候没买样板,也没找专门的IC厂商,要求技 ...…

查看全部问答>

关于AT89S52单篇机,

你好,我刚买了上面那个型号,,但是,我烧写时,出现了编程器不存在,什么回事?…

查看全部问答>

用软件如何实现蓝牙接收的数据转换

最近做了一个题目,使用蓝牙接收到的数据在LED点阵上显示出来,但是前提是不知道要接收的数据的内容。该如何实现接收到的数据用编程直接转换成LED点阵上能识别的二进制数。是该做一个字库还是有其他什么别的方法。请专业人士帮忙解决一下。谢谢。…

查看全部问答>

windows ce stream driver wizard

搜遍了整个网络也没有找到windows ce stream driver wizard这个工具,哪位大哥大姐弟弟妹妹能够慷慨解囊,帮小弟一把,不胜感激。小弟的邮箱是:cougarz@somagic.com.cn…

查看全部问答>

哪位达人用过《EVC高级编程及其应用开发》这本书上基础数据库的例子?

我在wince下试了这个程序,可是不好使阿,添加不了,也删除不了,请问是还需要安装什么程序还是本身实例程序有问题啊?…

查看全部问答>

今天用Proteus仿真的ADC0809。。。但实际0809不工作啊。。。。

  单片机的对应ST脚的P口接上0809时就被拉低了。Proteus仿真什么问题都没有。0809要注意什么问题么?有两个问题:1,我希望设定的是500K,用定时器方式2也是设成255。可从P口出来的就是50K 啊。2,ST脚被拉低,但不接0809时单片机P口是正常的 ...…

查看全部问答>

【求助】JTAG下载遇到问题:-(

我在使用msp430F149的JTAG模块下载时,一开始还能下载运行,试了有两三天,突然一天不能下载了,后来就再也不能下了,软件提示不能发现目标。然后又贴了一块板子,结果这块好了半天就又出现和前面一样的现象。很是郁闷 量了下载口各个引脚的电压 ...…

查看全部问答>

I2C连续读写请教

想通过I2C连续写数据和读数据,用for循环来操作,写入的都是第一个数据,后面的就没有写入了,读也是这样。但如果不用for循环写,直接写入两个数据可以实现,但是读得时候也不能实现;在网上搜了下也是用for循环啊,但是我的怎么不能实现呢?请大家 ...…

查看全部问答>