【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,尾声

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

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

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

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

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

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

-------爱因斯坦

图片自取,,,

相关推荐
Coding Peasant10 小时前
GD32E230 I2C从机功能深度解析与实现指南
c语言·stm32·单片机·mcu·arm
214实验室13 小时前
STM32串口打印使用printf乱码问题
stm32·单片机·嵌入式硬件
沐欣工作室_lvyiyi13 小时前
基于单片机的电厂烟道粉尘浓度检测系统(论文+源码)
单片机·嵌入式硬件·毕业设计
Groundwork Explorer14 小时前
异步框架+POLL混合方案应对ESP32 MPY多任务+TCP多连接
python·单片机
d111111111d15 小时前
什么是内存对齐?在STM32上面如何通过编辑器指令来实现内存对齐。
笔记·stm32·单片机·嵌入式硬件·学习·编辑器
bai54593616 小时前
STM32 CuberIDE 中断
stm32·单片机·嵌入式硬件
小叶子来了啊16 小时前
5Arduino 程序结构
单片机·嵌入式硬件
workflower16 小时前
小强地狱(Bug Hell)
大数据·bug·团队开发·需求分析·个人开发·结对编程
小叶子来了啊17 小时前
1Arduino 简介
单片机·嵌入式硬件
雾岛听风眠17 小时前
电路板维修
单片机·嵌入式硬件