历史上的今天
返回首页

历史上的今天

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

正在发生

2020年03月06日 | 【ARM裸板】未定义指令异常分析及示例

2020-03-06 来源:eefocus

1.未定义指令异常示例

根据5.1可知,执行异常处理函数之前,硬件会处理的事情:

 1.lr_und保存有被中断模式中的下一条即将执行的指令的地址

 2.SPSR_und保存被中断模式CPSR

 3.CPSR的[M4:M0]=[11011],进入到und模式

 4.跳到0x04的模式执行程序,即跳到b do_und这一指令

/*====================================异常向量表===========================================*/

_start:

b reset   //vector 0: reset(0地址对应reset)

  ldr pc, =und_addr //绝对跳转,跳转至sdram中,vector 4: und  (发生未定义指令异常,则进入“处理未定义异常函数”)


und_addr:

.word do_und //存放地址,确保这一地址存放在内存的前4K中

 /*=================================处理未定义异常=========================================*/

 do_und:


/*执行到这里之前:

*1.lr_und保存有被中断模式中的下一条即将执行的指令的地址

*2.SPSR_und保存被中断模式CPSR

*3.CPSR的[M4:M0]=[11011],进入到und模式

*4.跳到0x04的模式执行程序,即跳到`b do_und`这一指令

*/

    /* sp_und 设置栈,因为后面函数需要栈 */

    ldr sp, =0x34000000


    /* 保存现场 */

    /* lr是异常处理完后的返回地址,也需要保存 */

    stmdb sp!, {r0-r12,lr} //在und异常处理函数总有可能需要用到r0~r12,因此先保存下来


    /* 处理und异常 */

    mrs r0,cpsr //把cpsr的值放入r0

    ldr r1, =und_string

    bl printException


    /* 恢复现场 */

    ldmia sp,{r0-r12,pc}^ //将lr的值赋给pc ,`^`会把spsr的值恢复到cpsr中


und_string:

.string "undefined instruction exception"

.align 4  //确保4字节对齐


1.1 在汇编中加入string

官方文档


.string "str" Copy the characters in str to the object file. You may specify more than one string to copy, separated by commas. Unless otherwise specified for a particular machine, the assembler marks the end of each string with a 0 byte. You can use any of the escape sequences described in section Strings.


在字符串后最好加一句·.align 4 ,确保后续的程序4字节对齐


und_string:

.string "undefined instruction exception"

.align 4  //确保4字节对齐


1.2 MRS & MSR

ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据


MRS: 状态寄存器到通用寄存器的传送指令

mrs r0,cpsr //将CPSR的值读出放在r0

MSR: 通用寄存器到状态寄存器的传送指令

msr cpsr, r0 //将r0的值写入CPSR

1.3 设置und的栈

由于后面需要保存寄存器数数据、以及发生函数调用并且需要传递参数,需要用到栈,因此需要先设置栈(随便指向一块未使用的内存)

    /* sp_und 设置栈,因为后面函数需要栈 */

    ldr sp, =0x34000000


1.4 保存现场

根据未定义指令异常寄存器资源,在und异常处理函数总有可能需要用到r0~r12,因此先保存下来(保存在栈中)

以及lr寄存器,后面还需要返回

stmdb sp!, {r0-r12,lr}

在这里插入图片描述

1.5 处理异常

打印提示发生未定义异常,并打印CPSR的值

mrs r0,cpsr //把cpsr的值放入r0


1.6 恢复现场

依次恢复r0~r12的值,恢复cpsr的值,并把lr的值赋给PC,

ldmia sp,{r0-r12,pc}^ //`^`会把spsr的值恢复到cpsr中


1.7 验证

CPSR = 0x600000db

确实满足CPSR的 [M4:M0] = 11011,为未定义指令异常

  • 在这里插入图片描述

在这里插入图片描述

2.程序执行过程

在这里插入图片描述

推荐阅读

史海拾趣

CHENMKO公司的发展小趣事

非常抱歉,由于CHENMKO并非一个我所熟知的电子行业中的具体公司名称,我无法直接为您提供关于其发展起来的5个相关故事。如果您提到的“CHENMKO”是一个虚构的或者不太知名的公司,那么相关的具体故事就需要您自己创作或者查找相关资料。

然而,我可以提供您一个电子行业公司发展的通用故事框架,您可以根据这个框架和您的具体需求来创作或寻找更多信息。

电子行业公司发展故事框架

  1. 创业初期
    • 描述公司的创始人和初创团队,他们是如何发现市场机会的。
    • 讲述公司初创时期的艰难和挑战,比如资金短缺、技术难题等。
    • 介绍公司早期产品的特点,以及如何在市场上获得初步认可。
  2. 技术创新与突破
    • 描述公司在某一技术领域取得的重大突破,如研发出新技术、新产品。
    • 分析这一技术创新如何帮助公司在市场上获得竞争优势。
    • 讲述技术创新过程中遇到的困难以及克服这些困难的过程。
  3. 市场拓展与合作
    • 描述公司如何逐步扩大市场份额,比如通过开拓新市场、拓展产品线等。
    • 介绍公司与其他企业或机构的合作案例,以及这些合作带来的好处。
    • 分析公司在市场拓展过程中面临的挑战和应对策略。
  4. 品牌建设与形象提升
    • 讲述公司如何通过品牌建设提升市场影响力,比如参加行业展会、举办发布会等。
    • 介绍公司如何塑造积极的品牌形象,如强调社会责任、环保理念等。
    • 分析品牌建设对公司长期发展的重要性。
  5. 未来发展与展望
    • 描述公司的未来发展规划,如继续技术创新、拓展国际市场等。
    • 分析行业发展趋势和市场竞争态势,以及公司如何应对这些挑战。
    • 展望公司的未来发展前景和可能面临的机遇与挑战。

请注意,以上框架是一个通用的模板,您可以根据CHENMKO公司的实际情况进行调整和修改。如果您需要更具体的信息或故事,建议您查找该公司的官方网站、新闻报道或行业分析报告等渠道获取相关资料。

ETI Systems公司的发展小趣事

ETI Systems深知人才是企业发展的核心竞争力。因此,公司一直注重人才培养和引进工作。通过建立完善的人才培养机制和激励机制,ETI Systems吸引了一批具有丰富经验和专业技能的优秀人才加入公司。同时,公司也积极为员工提供广阔的发展空间和良好的工作环境,让员工能够充分发挥自己的才能和创造力。这种重视人才的企业文化,为ETI Systems的长期发展提供了有力的人才保障。

Advanced Interconnections Corp公司的发展小趣事

随着环保意识的日益增强,AIC公司积极响应国家号召,推动绿色制造。公司引进了先进的环保设备和技术,对生产过程进行绿色化改造。同时,AIC公司还加大了对环保材料的研发力度,推出了多款符合环保标准的产品。这些举措不仅提升了公司的环保形象,也为公司的可持续发展奠定了坚实基础。

这些故事展示了AIC公司在电子行业中的发展历程和策略,但请注意,这些故事是基于虚构的,并不代表任何真实公司的实际经历。每个公司的发展道路都是独特的,受到众多因素的影响。

ADATA公司的发展小趣事

随着环保意识的日益增强,AIC公司积极响应国家号召,推动绿色制造。公司引进了先进的环保设备和技术,对生产过程进行绿色化改造。同时,AIC公司还加大了对环保材料的研发力度,推出了多款符合环保标准的产品。这些举措不仅提升了公司的环保形象,也为公司的可持续发展奠定了坚实基础。

这些故事展示了AIC公司在电子行业中的发展历程和策略,但请注意,这些故事是基于虚构的,并不代表任何真实公司的实际经历。每个公司的发展道路都是独特的,受到众多因素的影响。

HBControls公司的发展小趣事
如果电源正常,检查压缩机是否运行。压缩机是冰箱制冷的核心部件,如果压缩机不工作,可能是电机故障或压缩机过热保护启动。
Headland Technology Product Group公司的发展小趣事

近年来,随着环保意识的日益增强,HBControls积极响应国家号召,致力于绿色环保产品的研发和生产。公司投入大量资金引进环保设备和技术,对生产流程进行改造升级,以减少对环境的影响。同时,HBControls还积极推广绿色供应链理念,与供应商共同构建绿色、低碳的供应链体系。这些举措不仅提升了公司的社会形象,也为企业的可持续发展奠定了坚实的基础。

问答坊 | AI 解惑

详解Linux电源管理

1.概述   虽然Linux可以在任何一台386以上的PC上运行,目前大多数人使用的都是新型的,带有各种外设的桌面PC或者笔记本电脑,这样,电源管理功能(PM)就逐渐变得越来越重要。在笔记本电脑上电源管理可以节能,延长电池寿命,而在桌面PC上它 ...…

查看全部问答>

ARM基础实验教材 适合初学者 word版 经排版可打印

整理了一天,打印时记得用双面A4,因为是按照双面排版的!     下载了记得顶一下,本人刚注册的号,积分不多,帮忙挣点积分了好下载资料,在此谢过了!!      (本教材中有少部分图片不是很清楚,不过不影响大局 ...…

查看全部问答>

音调调节电路

请求各位朋友帮组。希望能给小弟我讲解一下这个电路。谢谢!!…

查看全部问答>

STM32-uCOS-II_UAV

STM32-uCOS-II_UAV very useful, my favoriti.…

查看全部问答>

WINCE,以完成输入,现需关联词库输入英文和中文,求高手指点,有词库

按键全部完成,现在有词库,求算法能完成词典或输入法的功能。…

查看全部问答>

嵌入式培训咨询

我收到一份站内信,自己对嵌入式不了解,所以来请教各位版友~ 信内容: 你好! 看见你在计算机系的发帖想必是很了解计算机知识的,所以很冒昧地写信,想向你请教一 下嵌入式的问题。 我是南大的一名毕业生,现在一所大学工作,最近有个培训机 ...…

查看全部问答>

pos端疑问(请有实际开发经验的同仁帮忙解答) (有分连接)

本人目前所在项目是做一个pos对端服务系统,通过socket负责解析pos传送过来的封包数据。现在pos那端提出他们不支持断点续传功能,也就是假设时间段内发送1000个数据包,有任意一条出错就必须从头再传,基于程序设计逻辑考虑这样肯定是不合适的。pos ...…

查看全部问答>

要用C#开发WINDOWS CE的应用程序,学习的资料谁能给点啊?

用VS2005开发WINDOWS CE的资料好少啊,尤其是中文的,谁能给点啊? 原来一直开发桌面程序的,现在单位需要,要开发WINDOWS CE下的应用程序。 谁能给点学习资料啊?最好是中文的。…

查看全部问答>

CE程序的移值

请教高手,以前的CE项目要移植到PC中,要求尽可能写的修改代码,尽可能的保存原来的界面,最后可生成独立的执行程序(不依赖于仿真器),谢谢!…

查看全部问答>

安富利ARM系统设计策略研讨会图文报道

     阿牛哥6月28日去北京国际会议中心参加安富利ARM系统设计策略研讨会。 这是安富利ARM系统设计策略研讨会在亚洲第一站,这个研讨会将持续三个月时间,在大陆8个城市举办,后续还会在台湾,新加坡 ,韩国 ,印度等举行,真是 ...…

查看全部问答>