历史上的今天
返回首页

历史上的今天

今天是:2024年11月02日(星期六)

2021年11月02日 | ARM嵌入式系统开发:软件设计与优化--第二章ARM处理器基础

2021-11-02 来源:eefocus

1、寄存器:

总共有37个寄存器,最多可以有17个活动寄存器(16个数据寄存器,2个状态寄存器:CPSR和SPSR)

R13:堆栈指针:指向当前处理器模式的堆栈栈顶


R14:链接寄存器,保存子程序的返回地址。【当执行子程序调用指令(BL)时,R14可得到R15(程序计数器PC)的备份】


R15:程序技术器,处理器下一条要取出的指令地址。【ARM状态下,指令4字节对齐,位[1:0]为0。位[31:2]保存PC】


【注】快速中断的r8-r12是分组寄存器,r13-r14每种模式都有自己的分组寄存器。r15没有分组寄存器。用户模式和系统模式没有分组寄存器。


2、当前程序状态寄存器CPSR:

3、处理器模式:

除了用户模式外,每一种模式可以改写cpsr中的模式位来改变。当一个异常或中断发生的时候cpsr寄存器被保存到相应模式的spsr寄存器中,但是当用户程序改写cpsr寄存器切换模式的时候,cpsr不会被自动保存。系统上电:从管理模式开始,ARM指令状态。


除了USR和SYS外都是异常模式

除了USR外都是特权模式 , 特权模式可以通过直接修改CPSR中相应的位来切换到USR,但是USR不能直接修改CPSR,只能通过指令,

OS的内核态程序工作在SVC模式, 用户态程序工作在USR模式

ARM的CPU复位就处于SVC模式,执行完启动代码后就需要切换到USR模式

 

4、Thumb指令

指令的操作数仍然是32位,寻址地址是32位。


该状态下,读取R15(PC)位0为0,位31-1保存了程序计数器的地址。写入R15时,位0被忽略,位31-1保存了程序计数器要写入的值。即:PC的位0一直保持为0,前面31位保存了下一条指令的地址。


ARM指令:字对齐,地址的最后两位为0;thumb指令:半字对齐,地址的最后一位为0。【因此最后一位不可能是有用地址】


可以使用R0-R7寄存器。有些指令还可以使用PC、lr、sp寄存器。

【解释】:BX跳转到,最后一位为0时,表示thumb指令的地址。于是编译器自动加上状态切换指令、并且和0xfffffffe进行与操作。然后得到真正的指令地址,并复制给PC寄存器。


【加1操作,由编译器完成。去1 -- 可能是硬件自动完成,并不产生指令】


arm与thumb间的切换


1,由arm状态切换到thumb

  状态将寄存器的最低位设置为1


       BX指令:R0[0]=1,则执行BX  R0指令将进入thumb状态


2,由thumb状态切换到ARM状态


寄存器最低位设置为0


BX指令:R0[0]=0,则执行BX  R0指令将进入arm状态


当处理器进行异常处理时,则从异常向量地址开始执行,将自动进入ARM状态。

注意:ARM处理器复位后开始执行代码时总是只处于ARM状态;


Cortex-M3只有Thumb-2状态和调试状态;


由于Thumb-2具有16位/32位指令功能,因此有了thumb-2就无需Thumb了。


另外,具有Thumb-2技术的ARM处理器也无需再ARM状态和Thumb-2状态间进行切换了,因为thumb-2具有32位指令功能。


总的说,arm状态与Thumb状态的本质区别就是指令的位数不同,arm是32位的指令状态,而thumb是16位 的指令状态,而thumb-2状态是arm状态和thumb状态的结合和优化。

推荐阅读

史海拾趣

聚辰(Giantec)公司的发展小趣事

港源公司深知品质是企业生存之本。公司先后通过了ISO9001质量管理体系认证、ISO14001环境体系认证、ISO45001职业健康安全管理体系认证以及IATF16949汽车质量体系认证等国际权威认证。这些认证不仅证明了港源公司在品质管理方面的卓越能力,还为公司赢得了国内外客户的广泛信赖和好评。港源公司坚持“诚信、创新、和谐、共赢”的企业核心价值观,致力于为客户提供高品质、高可靠性的产品和服务。

Burr-Brown公司的发展小趣事

进入20世纪70年代中期,Burr-Brown敏锐地意识到数字技术将对音频行业产生深远影响。公司迅速抓住CD播放机市场的机遇,通过技术创新,成功引领音频行业进入数字时代。这一转型不仅巩固了Burr-Brown在音频领域的领先地位,也为公司带来了更广阔的发展空间。

DMEL Inc公司的发展小趣事

为了提升产品质量和用户体验,DMEL Inc不断加大对生产过程的管控力度。公司引进了先进的生产设备和管理系统,建立了严格的质量检测体系。同时,DMEL Inc还加强了与供应商的合作,确保原材料的质量和供应的稳定性。这些措施的实施,使得DMEL Inc的产品质量得到了显著提升,赢得了消费者的信赖和好评。

Fuji Electric Co Ltd公司的发展小趣事

DMEL Inc公司成立于XX世纪初,最初由几位热衷于电子技术的工程师创立。他们凭借对半导体技术的深入研究,开发出了几款具有创新性的产品,这些产品在市场上获得了初步的成功。公司注重技术创新,不断投入研发资金,建立起了一支高效的研发团队。随着技术的不断积累,DMEL Inc逐渐在电子行业中崭露头角。

Excel Cell Electronic Co Ltd公司的发展小趣事

随着环保意识的提高,ECE公司积极响应环保号召,致力于推广绿色环保理念。公司采用环保材料和生产工艺,减少废弃物排放和能源消耗。同时,ECE公司还积极参与环保公益活动,宣传环保知识,提高公众的环保意识。这些努力使ECE公司成为电子行业中绿色环保的倡导者和实践者。

BEKA Associates Ltd公司的发展小趣事

在电子行业,供应链管理对于企业的生存和发展至关重要。BCD Semi(Diodes)深知这一点,因此在供应链管理方面进行了大量的优化工作。公司与多家优质的供应商建立了长期稳定的合作关系,确保原材料的稳定供应和质量可靠。同时,公司还采用先进的物流管理系统,实现了对供应链的实时监控和高效运作,有效降低了运营成本并提高了运营效率。

问答坊 | AI 解惑

推荐CPLD+单片机开发板。。。

联华众科CPLD开发板 CA127 北京联华众科科技有限公司 http://www.lianhua-zhongke.com.cn Abstract  摘 要:联华众科CPLD开发板CA127核心器件为 Altera MAX II系列的EPM1270,CA127具有丰富的板载资源,由于板载有51 ...…

查看全部问答>

发几个红外解码程序

发几个红外解码程序…

查看全部问答>

交叉编译疑问:Windows PC上,利用ADS(ARM 开发环境),使用gcc 和armcc编译器

开发环境: 在Windows PC上,利用ADS(ARM 开发环境),使用gcc 和armcc编译器; 查看编译命令中的makefile文件,有用的是\"gcc ******\"(此处省略掉编译的文件名), 也有\"armcc ******\"(此处省略掉编译的文件名),最后用armlink链接。 以前学 ...…

查看全部问答>

在WinCE设备上设置了开机和屏保密码后,用ActiveSync与PC机同步时要求输入密码

我在WinCE设备上设置了开机和屏保密码,开机和屏保密码均正常,但是用ActvieSync与PC机同步时在PC端提示要输入密码,输入前面设置的开机和屏保密码后提示密码错误,连续三次出错后就停止连接了,请问该如何解决?客户要求WinCE设备必须要设置开机和 ...…

查看全部问答>

关于学习ARM嵌入式

一,学习嵌入式系统前提        (1)语言基础:较为熟悉C语言的开发,例如头文件的编写管理,一工程多文件协调编程的经验。另外由于很多芯片或者其他资料都是英文而并没那么快汉化,故学习者应有一定的英语阅读基 ...…

查看全部问答>

请教高手模电知识

题目与问题都在附件里,麻烦各位高手不吝赐教,详细帮我分解分解,谢谢…

查看全部问答>

感言

从此eeworld 有了我的影踪啦,,努力…

查看全部问答>

计算机控制系统输入/输出通道联合仿真(A/D、D/A联合仿真)

AD转换芯片采用ADC0809,DA转换芯片采用DAC0832。 用4位数码管显示ADC0809采集的温度(假设为0~100°C,用电位器来模拟,3位整数,1位小数。) 将采集的电压值(数字量00~FFH)不经过PID运算直接送DAC0832输出。对比输出的电压值是否等于 ...…

查看全部问答>

Flash读写控制

最近在研究图像方面,需要用flash存储数据,但是驱动起来不是很容易,麻烦各位给我介绍点资料,感激!…

查看全部问答>