本文主要是介绍大海捞针--GHS环境下瑞萨RH850芯片定位程序跑飞原因的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
错误现象如上图。
由于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类型,则故障消失。
这篇关于大海捞针--GHS环境下瑞萨RH850芯片定位程序跑飞原因的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!