【BUG排查】基于RH850F1KMS1的主控出现系统中断错误,调试FEIC的值为0x11

**前言:**近期有出现在调试过程中老是进系统中断错误的情况,就一步步顺着寄存器调试了起来,到最后找到问题的原因,发现有时候问题的分析方法都是大同小异的,本篇文章就记录一下这个分析问题的思路过程。


1,问题描述

问题发生的背景就是在使用F1KMS1调试的时候出现进入到系统中断错误的情况

当然出现了这个问题,就得需要寻找到引起问题发生的原始代码的位置,这个是第一时间想到的;通过一步步地屏蔽相关联的代码慢慢定位到是由于操作FLASH的代码引起的,将这行代码屏蔽掉之后发现问题就消失了。
本着 "知其然,更要知其所以然" 的原则,还是需要知道最底层的原因是什么,,,

2,问题分析

发生中断错误的时候第一时间需要看的是 EIIC 与 FEIC 两个寄存器

EIIC寄存器保留发生的任何EI级异常的源。此寄存器中保留的值是对应于特定异常源的异常源代码。

FEIC寄存器保留发生的任何FE级异常的源。此寄存器中保留的值是对应于特定异常源的异常源代码。

EIICFEIC 寄存器的作用类似,都是记录异常源的 异常源代码,帮助确定系统发生异常时的具体原因。

看下图发现这两个寄存器,EIIC的为0x1030,FEIC的为0x11,

查看参考手册可知,通过EIIC的值可以找到引起中断的源头,即为一个定时器中断。意思就是发生中断的时候有定时器还在运行。

再进一步查看FEIC的值可以知道引起系统中断的具体原因是什么,,,由于中断的底层处理机制涉及到内核,所以这个时候就需要用到内核手册,但是只在第二张图看到一个范围值,还是无法精确的定位。

后面又翻了一下用户手册,终于是搜到了具体原因,英文原文如下所示:

"Detection of an error during the fetching of an instruction from the code fash memory area"

即从代码闪存出获取指令的时候发生错误。

3,给出结论

结合自己的工程代码中正在操作FLASH,然后又有一个定时器的中断程序同时在运行,可以知道就是中断影响了操作FLASH。

因为瑞萨MCU操作FLASH的时候不可以有中断打断,否则会操作失败,并且引发内核方面的未知错误。
后续调整了一下定时器中断与操作FLASH两者的代码,尽量不同时进行就解决了这个问题。。。


4,尾声

问题分析完毕,其实以小见大,我们在开发调试嵌入式软件过程中遇到的问题花样还是比较多的,也没有办法完全进行归类,当然见得问题足够多了之后会有一个清晰的问题解决思路,这个比较依赖于工作经验项目开发经验等等。

我有时候也会思考:难道对于一些入行的经验不是那么丰富的开发技术人员来讲就只能一点点的积累的吗?遇到前所未见的问题只能干瞪眼,最后在抓耳挠腮中度过相当长的时间并求助别人。这样对于工程师的成长无疑是相对比较慢的。

要想成长的快并且高效利用好自己的每一次的项目开发经验,那么我们更需要学到的并非是解决问题本身而是解决问题思维方式,正如上面的分析案例:多增加一点思考,知道了问题的表面原因之后还不够跟需要一点点的溯源到最最底层的原因,并且时常发问:为什么要往这个方向去查问题?找到这个方向的引子是什么?等等,反正多思考,并试图理解一下这样思考的方式对不对,方向正不正确,绝对会收获良多的。。。
嘿嘿,搜了一下两个著名人物的话,共勉。。。

对于创新来说,方法就是新的世界,最重要的不是知识,而是思路。

-------郎加明《创新的奥秘》

教育不是为了获取知识,更重要的是培养独立思考的能力。

-------爱因斯坦

图片自取,,,

相关推荐
国科安芯1 小时前
卫星通讯导航FPGA供电单元DCDC芯片ASP4644S2B可靠性分析
单片机·嵌入式硬件·fpga开发·架构·安全性测试
易水寒陈3 小时前
单片机实现的工厂模式
单片机
点灯小铭4 小时前
双积分AD转换电路
单片机·毕业设计·课程设计·期末大作业
youcans_5 小时前
【动手学STM32G4】(8)STM32G431之 DAC进阶
stm32·单片机·嵌入式硬件·dma·定时器
hqwest5 小时前
码上通QT实战14--监控页面06-串口设备数据初始化-
单片机·rs232·serialport·波特率·串口设备·虚拟串口设备软件·qt项目配置文件
qq_397562315 小时前
BMI088 , 传感器的使用经验 . ( SPI 模式 )
单片机
hui函数5 小时前
Python系列Bug修复|如何解决 pip install 安装报错 invalid command ‘bdist_wheel’(缺少 wheel)问题
python·bug·pip
hui函数5 小时前
Python系列Bug修复|如何解决 pip install -r requirements.txt 私有索引未设为 trusted-host 导致拒绝 问题
python·bug·pip
点灯小铭5 小时前
基于单片机的智能收银机模拟系统设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计·期末大作业
TEC_INO6 小时前
STM32_9:I2C_DHT11_OLED项目
stm32·单片机·嵌入式硬件