|||
ARM下中止异常的作用
最近给公司开发了一台全电脑袜机控制系统,由于此系统不同于现在市场上的全电脑,在功能方面比国内开发出的全电脑袜机功能更强大以及更加灵活,各个动作全用指令进行操作,指令丰富,能实现所需要的所有功能。由此可见系统的复杂性,再个系统中以文件的形式存储所需要的数据,可以输入文件删除文件以及新建文件,最终是程序的代码量在编译后达到1M多,导致出现问题难以发现问题的所在处,后来使用了中止异常功能解决在开发遇到的异常问题。
编译器提供的启动代码指令以及数据中止中断子程序是两条死循环代码,
Soft_Reset B Soft_Reset
Undef_Handler B Undef_Handler
SWI_Handler B SWI_Handler
PAbt_Handler B PAbt_Handler
DAbt_Handler B DAbt_Handler
IRQ_Handler B IRQ_Handler
FIQ_Handler B FIQ_Handler
这样虽然也可以找到异常中止处,但这时要找到中止处是比较麻烦的,可以根据当前中止模式中的R14可以在反汇编模式下用SHOW ADDRESS找到中止处,如果我们改动一下,在里面加一条返回指令那么出现异常很快就能返回到异常处,再分析代码找出产生异常的原因解决问题,由此可见这在DEBUG时是非常有用的,也可以在里面写个处理代码是否跳过这条指令。