错误现象如上图。

由于Ghs不像劳特巴赫那样能精准的记录上下文,所以面对这种没有上下文的unused_isr,线索太少,如大海捞针,很难定位错误原因!

首先,查出导致进入该_unused_isr的上文,有2个方法:

方法一,改造启动文件,在启动文件中每一个jr  __unused_isr的前面记一个数存入r6内核寄存器,作为判断标识---注意打断点的方法在此时是无效的,因为跑飞入口太多,断点不够用!

      

方法二,查看内核寄存器EIIC和FEIC值,然后查表。

          

如果是EI故障,则参考RH850 U2A HDUM Rev.1.20的附件表格《Interrupt_table.xlsx》

结合图表可知,本次故障是MAE内存对齐错误。

然后,查看通用寄存器的EIPC和FEPC的值,FEPC对应函数为rfd_fv0_SingleWrite(),在该函数执行时候产生了MAE故障。

再次,查看MEA寄存器的值,可在Map文件中找到这个MEA值对应变量/函数。本次重点查看MEA的值,它在map文件中对应:

该Hal_FlsSrcBuffer为U8类型,将其改为u32类型,则故障消失。

Logo

更多推荐