Processor ARM7TDMI raised an exception.Cause:Undefined instruction
来源:互联网 发布:软件服务外包产业园 编辑:程序博客网 时间:2024/06/05 08:30
这篇文章如果不能解决你的问题请看:http://blog.csdn.net/chenqiai0/article/details/8668268 我相信一定可以帮你解决问题!!
Arm汇编中出现的问题
Arm汇编程序与x86汇编程序差不多。使用”;”注释。像start,loop之类的顶格写。ENTRY示意程序开始,END示意结束。当然这两个要对齐写。
下面主要介绍我写的第一个arm汇编程序吧。它当之无愧是一个难产儿。
我想这个代码一看大家就能看出来是一个新手写出来的。源于那行“Stop b Stop“。但即使是这样一行代码也是费劲辛苦才产生的。
第一次的arm汇编代码中,我并没有加这一行。直接运行程序后,发现报错:Processor ARM7TDMI raised an exception.Cause:Undefined instruction,单步运行看结果,其实结果已经得到了,可是到最后的时候都会弹出一个报错框,框里面最后一列全都是Undefined.这个问题很是费解。但现在我明白了。
为什么会出现这样的问题了?
在多任务操作系统中,程序其实是一个任务,靠系统调度,每个任务其实都是不断循环执行的。而在嵌入式产品中,程序总是做一个或多个循环,用户关闭了电源才停止运行。而在Windows下,你设计的程序不用循环,是因为开发工具给你做了默认的循环程序,而并非不用循环运行。
程序计数器存放的是你下一条指令的地址,cpu不断地读出指令,解码执行,然后这个值会调整指向已经执行过的指令的下一条指令地址。如果没有循环,程序结束后,它依然会读取下一条指令。可是你的程序已运行结束,没有定义指令供程序计数器读取。这样自然会出现无定义错误。
知道原因后,我想到一个最简单的方法。既然arm汇编它自己不会停下来。没有下一条指令的话会报Undefined,那我就让它循环。于是就有了上面的代码。即不影响结果。也不报错。可是实际运行完后,程序就不会停,很像是死机。这让我觉得总有些欠缺。
我看了很多安装文件里面自带的例子。发现大多最后的都有一段:
Stop MOV r0, #0x18 ; angel_SWIreason_ReportException
LDR r1, =0x20026 ; ADP_Stopped_ApplicationExit
SWI 0x123456
既然是Stop,猜测这个应该就是让程序停止的代码了。一问,这三行的确就是用中断把程序给停止运行了。但具体代码的含义也说不上来。继续找资料。终于在一个arm技术群里面问到了具体的含义。
stop一段是用来是程序退出的,第一个语句“MOV r0,#0x18”将r0赋值为0x18,这个立即数对应于宏angel_SWIreason_ReportException。表示r1中存放的执行状态。语句“LDR r1,=0x20026”将r1的值设置成ADP_Stopped_ApplicationExit,该宏表示程序正常退出。然后使用SWI,语句“SWI 0x123456”结束程序,将CPU的控制权交回调试器手中。
至此一个真正意义上的arm汇编程序诞生了
- Processor ARM7TDMI raised an exception.Cause:Undefined instruction
- Processor ARM7TDMI raised an exception.Cause:Undefined instruction(续)
- Processor ARM7TDMI raised an exception.Cause:Undefined instruction
- raised an exception.Cause:Undefined instruction
- raised an exception. cause : undefined instruction
- Processor ARM920T raised an exception.Cause:The processor was reset
- processor ARM79_0 raised an exception.Cause: The processor was reset
- Processor ARM920T raised an exception.Cause:The pr
- AXD Error:Processor ARM79_0 raised an exception. Cause: The processor was reset
- Processor ARM920T raised an exception.Cause:The pr
- Processor ARM79_0 raised a exception. cause: unrecognised SWI
- Encryption raised an exception
- Exceptions 异常 之 Undefined Instruction Exception
- ARM79_0 raise an exption,cause:The processor was reset.
- processor arm7tdmi rai…
- 在AXD下用MULTI-ICE调试,出现cause:Undefined instruction
- MyEclipse错误:Servlet execution threw an exception with root cause
- 解决Cornerston的Authentication provider raised an exception (first credentials)问题
- eclipse本地历史设置
- Blocking/Non-Blocking IO and SYN/ASYN IO
- 程序员学习能力提升三要素
- HTML 基础标签实例(全面概况HTML的知识要点,这些一定要掌握)
- 运行dxp.exe运行时,软件出现:应用程序发生异常 未知的软件异常 (0x0eedfade),位置为 0x7c812afb的处理方法
- Processor ARM7TDMI raised an exception.Cause:Undefined instruction
- 有效控制成本寻找优质货源三大技巧
- zoj 2095 求一个数除数的和
- 2013工资新规定,未来的八种人将会被淘汰!
- array_keys
- linux-sar
- showRecord.jsp
- XHML
- 面向非连接例子