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

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

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

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

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

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

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

-------爱因斯坦

图片自取,,,

相关推荐
时光找茬6 小时前
【瑞萨AI挑战赛-FPB-RA6E2】+ 从零开始:FPB-RA6E2 开箱测评与 e2 studio 环境配置
c++·单片机·边缘计算
一只自律的鸡7 小时前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug
@good_good_study7 小时前
FreeRTOS内存管理
单片机
Hello_Embed8 小时前
libmodbus 移植 STM32(基础篇)
笔记·stm32·单片机·学习·modbus
想放学的刺客12 小时前
单片机嵌入式试题(第27期)设计可移植、可配置的外设驱动框架的关键要点
c语言·stm32·单片机·嵌入式硬件·物联网
天昊吖12 小时前
stc8H启用DMA发送后 卡住【踩坑日志】
单片机
李永奉13 小时前
杰理芯片SDK开发-ENC双麦降噪配置/调试教程
人工智能·单片机·嵌入式硬件·物联网·语音识别
BackCatK Chen13 小时前
第 1 篇:软件视角扫盲|TMC2240 软件核心特性 + 学习路径(附工具清单)
c语言·stm32·单片机·学习·电机驱动·保姆级教程·tmc2240
兆龙电子单片机设计13 小时前
【STM32项目开源】STM32单片机多功能电子秤
stm32·单片机·开源·毕业设计·智能家居
切糕师学AI13 小时前
ARM 架构中的复位(Reset)与复位流程
arm开发·单片机·嵌入式·复位