1 异常发生后快速定位方法
ARM v8发生sync异常以后(如非法指令、data abort等),可以通过寄存器快速定位引起异常的原因,具体寄存器如下:
- 如下为测试程序
在系统MMU设置里,0x100地址不允许访问,下图程序152行故意访问0x100地址,引发异常。
执行152行以后,进入异常
- 查找引发异常的程序地址 ELR_EL*
0xE8451BE8对应上面152行。
实际使用是,我们要根据异常地址找到有问题的程序,可以查看axf(elf)文件的反汇编,快速对应具体函数。 在DS-5中双击axf文件会自动解析该文件,或者查看map文件也可以。
- 被访问的错误地址和具体原因 FAR_EL和ESR_EL
ESR寄存器反映了详细的错误类型,可查看ARM相关手册或在DS-5中双击寄存器显示信息。