历史上的今天
返回首页

历史上的今天

今天是:2024年12月25日(星期三)

正在发生

2019年12月25日 | ARMv8学习 —— SP_EL0和SP_ELx

2019-12-25 来源:eefocus

在AArch64状态下,SP对应的物理寄存器有如下四个(某一时刻只能对应下面其中一个):

  • SP_EL0和SP_EL1

  • SP_EL2

  • SP_EL3

如何使用呢?

1、如果程序运行在EL0,那么使用的是SP_EL0

2、如果程序运行在其他Exception level下,可以使用SP_EL0和当前Exception level所对应的SP_ELx

3、默认情况下,进入异常后,使用的是当前Exception level对应的SP_ELx。即:发生的进入EL1的异常,那么在跳转到EL1的异常处理入口后,会自动切到SP_EL1,此时SP对应的就是SP_EL1. 当然,可以在异常通过操作PSTATE.SP将SP强制切到SP_EL0

4、即便不是在异常处理程序中,也可以通过操作PSTATE.SP将SP强制切到SP_EL0或者SP_ELx

5、比如程序正运行在EL1,此时使用的SP是SP_EL0,突然发生了一个进入EL1的异常,在跳转到异常处理入口后,SP会自动切到SP_EL1,在异常返回后,SP又会自动切回到原先的SP_EL0

6、后缀t和h:

  t 表示使用的是SP_EL0

  h 表示使用的是SP_ELx

验证

下面使用DS5仿真的实验,验证一下上面的说法。

系统复位后,默认是在EL3,并且是secure模式。

第73行,将SP切到SP_EL0,然后设置SP的值为0x77,此时的寄存器状态如下:

第77行,将SP切到SP_EL3,然后将SP设置为0x88,此时的寄存器状态如下:

 

第81行,将SP重新切回SP_EL0,此时的寄存器状态如下:

第83行,访问ICC_SRE_EL2会触发sync异常,因为在secure模式下不存在EL2,触发异常后,会进入EL3的“Current EL with SP0”分支,因为发生异常时使用的是SP_EL0,下面是进入异常处理程序后的寄存器信息:

可以看到,此时SPSel的值是1,Mode的值为EL3h,说明此时SP用的是SP_ELx。此时SPSR_EL3的值是0x3CC,SPSR的含义如下:

M[3:0]的值是0xC,含义如下,表示发生异常前系统的模式和状态:AArch64、EL3、SP_EL0

下面是异常处理函数:


 1 //

 2 // Current EL with SP0

 3 //

 4 el3_vectors:

 5 c0sync3:

 6     mrs x0, elr_el3

 7     add x0, x0, #4

 8     msr elr_el3, x0

 9 

10     mov x0, #0x1

11     msr spsel, x0

12     eret


第6到8行的作用是异常返回时跳转到触发异常的指令的下一条指令执行,当第12执行完毕,ELR_EL3的值会设置给PC,SPSR_EL3的值会设置给PSTATE,所以SP会重新切回到SP_EL0:

第85行的作用是将SP切换到SP_EL3,此时的寄存器内容如下:

紧接着第86行,再次触发异常:

此时会跳转到EL3的“Current EL with SPx”分支执行:


 1 //

 2 // Current EL with SPx

 3 //

 4     .balign 0x80

 5 cxsync3:

 6     mrs x0, elr_el3

 7     add x0, x0, #4

 8     msr elr_el3, x0

 9 

10     mov x0, #0x0

11     msr spsel, x0

12     eret


第12行,异常返回后,寄存器内容如下:

 

完。

推荐阅读

史海拾趣

Aces Electronics Co Ltd公司的发展小趣事

Aces Electronics Co., Ltd.自成立之初,就致力于电子技术的研发与创新。在公司发展早期,Aces面临技术壁垒和市场竞争的双重压力。然而,公司通过不断投入研发资源,终于在某一关键领域取得了重大技术突破,推出了一款具有颠覆性的电子产品。这款产品凭借其卓越的性能和创新的设计,迅速在市场上获得了广泛认可,为Aces打开了新的发展空间。

Emulation Technology Inc公司的发展小趣事

Emulation自创立之初,就专注于模拟和仿真技术的研发。在成立初期,公司成功开发出一款具有革命性的电子系统模拟软件,该软件能够准确模拟电子设备的性能和行为,为工程师们提供了强大的设计工具。这一创新技术迅速获得了市场的认可,成为Emulation公司发展的基石。

High Voltage Power Solutions Inc公司的发展小趣事

作为一家在电子行业具有影响力的企业,Emulation始终关注社会责任和可持续发展。公司积极参与各种公益活动,为当地社区的发展做出了贡献。同时,Emulation还注重环保和节能,致力于推动绿色电子产品的设计和生产。这些举措不仅提升了公司的社会形象,还为公司的长期发展奠定了坚实的基础。

Altonics公司的发展小趣事

在技术创新的基础上,Altonics公司积极拓展市场。公司不仅在国内建立了完善的销售网络,还积极开拓国际市场,产品远销海外。同时,公司注重品牌建设,通过提供优质的产品和服务,树立了良好的品牌形象。公司的广告宣传和展会参展活动也提升了品牌知名度,为公司的长远发展奠定了坚实的基础。

ANSHAN [Anshan Suly Electronics]公司的发展小趣事

近年来,随着电子行业的竞争日益激烈和市场环境的不断变化,ANSHAN公司面临着前所未有的挑战。然而,公司始终保持着清醒的头脑和坚定的信心,积极应对各种挑战。公司不断调整战略方向,优化产品结构,加大创新力度,推出了一系列具有竞争力的新产品。同时,公司还积极拓展新的市场领域和合作伙伴,为公司的持续发展注入了新的动力。

这五个故事展示了ANSHAN公司在电子行业发展中不断克服困难、取得成就的历程。从创业初期的艰辛与坚持,到技术突破与产品升级,再到市场拓展与品牌建设、人才培养与团队建设以及应对挑战与持续创新,ANSHAN公司始终保持着坚定的信念和不懈的努力,在电子行业中谱写了一曲曲壮丽的篇章。

振宝佳(DMBJ)公司的发展小趣事

振宝佳(DMBJ)公司自成立之初,就专注于贴片铝电解电容的研发与生产。在1998年之前,公司一直在台湾深耕细作,积累了丰富的技术实力和市场资源。进入21世纪,随着电子产业的快速发展,振宝佳意识到技术突破的重要性。于是,公司投入大量资源,研发出多项专利技术,这些技术不仅提升了产品的性能,也增强了公司的市场竞争力。

问答坊 | AI 解惑

大家帮忙看一下quartus中一些警告,谢谢了!!!

倒数第三行的警告大家可以不看,已经解决掉了, 大家帮忙看看其他的警告,谢谢了…

查看全部问答>

(高价)(高价)(高价)诚激高手开发:sock5全自动代理自助管理系统,有技术者加QQ详谈,99040008

(高价)(高价)(高价)诚激高手开发:sock5全自动代理自助管理系统,有技术者加QQ详谈,99040008…

查看全部问答>

pb 4.2 实现注册表永久保存数据!

我在pb 4.2 中修改 platform.reg 如下: ; HIVE BOOT SECTION [HKEY_LOCAL_MACHINE\\init\\BootVars]         \"SYSTEMHIVE\"=\"Documents and Settings\\\\system.hv\"         \"PROFILEDIR\"=\"Doc ...…

查看全部问答>

STM8的EEPROM读写速度挺快的啊

STM8的EEPROM读写速度挺快的啊,经测试发现并没像datasheet说的那样一个字节6.6ms, 下载 (49.52 KB) 2010-10-9 11:08 我是单字节写的,似乎写N个字节都是6点几个ms,我是用示波器测得的 下载 (27.15 K ...…

查看全部问答>

通讯接收

请教各位,我用基于MODBUS协议实现单片机和pc机通讯,单片机中断接收,查询发送,以下是我的中断程序,我的想法是先接收完所有的数据再进行处理(包括地址判断,读寄存器等然后再发送),这样的话我接收的数据就定下来了,比如程序中只接受8个字节 ...…

查看全部问答>

TI Sitara入门资料分享7-AM335X家族介绍TI Sitara官方资料汇总

用于基于 ARM® Cortex™-A8 和 ARM9™ Sitara™ 的微控制器 (MPU) 的软件和工具软件开发套件 (SDK) - TI SDK 为您选择的平台提供主要软件组件和文档。SDK 可在 TI.com 上免费下载,同时随附 TI 评估模块 (EVM) 和开发套件提 ...…

查看全部问答>

求freescale k40标准板的例程,本人新人,在此向各位前辈求助!!

freescale k40标准板的例程,本人新人,在此向各位前辈求助!!…

查看全部问答>

关于MSP430默认时钟延时定时的问题

MSP430关于延时时间的问题。 #include /* * main.c */ void main(void) {         WDTCTL = WDTPW + WDTHOLD;         unsigned int i;         unsigned char j;   ...…

查看全部问答>

现有一套全新的DevKit8500D (DM3730) 出售,需要的尽快

- 基于ARM Cortex-A8的TI DM3730处理器,主频1GHz - 板载512MByte DDR SDRAM、512MByte NAND Flash - 3路串口,4个USB Host,USB OTG,以太网口,音频输入输出,TF卡,键盘,JTAG接口 - 支持24位TFT液晶显示器,DVI-D,S-Video显示输出,可输 ...…

查看全部问答>