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

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

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

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

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

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

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

-------爱因斯坦

图片自取,,,

相关推荐
Zevalin爱灰灰11 小时前
能源与电源管理电路——防倒灌电路
单片机·嵌入式硬件·电源管理
jianqiang.xue13 小时前
ESP-IDF保姆级入门02|Ubuntu24.04搭建EIM-GUI开发环境,打通Windows_Linux双平台统一开发
stm32·单片机·物联网
嵌入式-老费14 小时前
esp32开发与应用(添加数据分区)
单片机·嵌入式硬件
CYLAM202517 小时前
STC32G 单片机0.96“OLED 西历农历可调万年历 (1901-2100)
单片机·嵌入式硬件·stc32g·万年历·西历农历·0.96”oled 12864·4x4 矩阵键盘
Discipline~Hai18 小时前
ARM03-蜂鸣器和中断
c语言·arm开发·单片机·嵌入式硬件·嵌入式
KaifuZeng19 小时前
电源面试问题汇总一
单片机·嵌入式硬件·面试·电路
驱动探索者20 小时前
RISC-V PLIC 深度解析:从 Spec 到 Zephyr 驱动实现
单片机·嵌入式硬件·中断控制器
LCG元21 小时前
STM32 FreeRTOS 实战:任务调度 + 互斥锁 + 消息队列 + 串口命令解析器
stm32·单片机·嵌入式硬件
LCG元21 小时前
STM32 SPI Flash 读写实战:W25Q64 驱动 + FatFS 文件系统移植 + 日志存储系统
stm32·单片机·嵌入式硬件
不想学习!!1 天前
【STM32 基础复习 01】初识 STM32F103ZET6:型号、封装、引脚编号与特殊引脚
stm32·单片机·嵌入式硬件