当前位置: 首页 > news >正文

【BUG排查】调试瑞萨RH850F1KMS1时候随机出现进入到unused_isr

前言:在调试基于MCAL工程的时候,发现在没有漏掉任何中断注册的情况下,一运行程序就进入到unused irq,找原因的分析过程涉及到了内核,特此记录一下整个分析过程。


1,调试环境工程

工程的建立是基于GHS编译器,MULTi IDE;并使用CS+进行软件的debug调试,整个软件工程的架构AutoSAR软件分层架构,并且使用的Davinci自动化代码配置工具生成动态代码。

2,现象描述

CS+打开调试运行程序之后就进入到unused_isr

3,原因分析过程

打开寄存器查看界面,一进入到这个__unused_isr中断就是需要看一下哪一个中断没有注册,一般先查看EIIC这个系统寄存器

发现上面的EIIC的寄存器的值为0x1054,对应查到的中断为定时器中断OSTM0 interrupt;这个意思就是定时器中断没有注册

比较奇怪的点出现了,代码中的定时器中断已经是处于注册的状态,

需要注意的是上面第一个图中的圈住的有两个寄存器的值,如果第一个没有查到原因,就看一下这个FEIC的值的,显示是0xE0;

查到这个值对应的中断请求有三个,NMI Pin、WDTA0、WDTA1三种情况,由于工程中没有使用看门狗外设,所以后面两个原因看见可以排除掉,唯一的原因就是NMI pin引脚的问题了。

接着上面的我们分析到是由于NMI引脚的原因,

插一下NMI是什么?

🔹 RH850 MCU 的 NMI(Non-Maskable Interrupt,不可屏蔽中断)

在 RH850 系列(瑞萨车规 MCU)里,NMI 是一个特殊的高优先级中断源,和普通中断(INT)有明显区别:

1. 基本特性

  • 最高优先级:NMI 始终比普通中断优先级高,且不可被屏蔽。

  • 不可屏蔽:即使在执行 DI(禁用中断)后,普通中断被屏蔽,但 NMI 仍然能响应。

  • 向量表独立:在中断向量表中有单独的入口地址(NMI 向量)。


2. NMI 的触发源(RH850 常见情况)

RH850 的 NMI 可以由以下几类事件触发(具体型号略有不同):

  1. 外部 NMI 引脚

    • MCU 通常有一个专用 NMI 引脚,外部电路(如电源掉电检测、紧急停止开关)拉低后触发。

  2. 硬件故障检测

    • 时钟监测电路(OSC/PLL 异常)。

    • RAM/Flash ECC 错误。

  3. 看门狗溢出(某些型号配置为 NMI,而不是直接复位)。

  4. 安全相关触发源

    • 电源电压异常(LVD,低电压检测)。

    • 片上安全模块触发。


3. RH850 中的 NMI 响应机制

  • 当触发 NMI 时,CPU 会立即中断当前执行,跳转到 NMI 向量入口

  • 软件需要编写 NMI ISR(中断服务程序) 来处理,比如:

    • 保存关键数据到 RAM/EEPROM。

    • 停止电机 / 关闭功率输出。

    • 设置系统进入安全状态。

  • 如果用户没有定义 NMI ISR,系统可能会跑到默认处理函数,甚至直接复位。

好了,读完上面的NMI的机制我们知道了这就是一个不可屏蔽中断,如果在相应的引脚上面配置NMI,当这个引脚处于悬空没有使用的状态就可能会导致误触发,进而进入到unused_isr;

初步原因已经找到:有某一个引脚配置成了NMI并且这个引脚处于没有实际使用的状态。

接下来就是搜索一下这个NMI都有复用在了哪几个引脚上面(通过另一个瑞萨代码生成工具smart configurator我们可以查到有P8_5 P8_6 P9_0 JP0_5四个引脚上面的)

查看了Davinci配置之后果然是这个port引脚配置成了NMI模式

将这个引脚改成DIO模式,

在生成代码集成到工程之后看看效果。。。

调试暂停之后就处在正确的位置了,结束,问题解决。。。

http://www.dtcms.com/a/351021.html

相关文章:

  • 一款基于 .NET 开源、功能强大的 Windows 搜索工具
  • GD32VW553-IOT开发板测评 搭建环境到电灯(QA分享)
  • 使用提供的 YAML 文件在 Conda 中创建环境
  • Conda的配置
  • 实时平台Flink热更新技术——实现不停机升级!
  • Caddy + CoreDNS 深度解析:从功能架构到性能优化实践(上)
  • webrtc音频QOS方法一.1(NetEQ之音频网络延时DelayManager计算补充)
  • 设计模式学习笔记-----抽象策略模式
  • 【Ansible】Ansible部署K8s集群--准备环境--配置网络
  • 主流的 AI Agent 开发框架
  • 论文阅读(四)| 软件运行时配置研究综述
  • 游戏玩家批量多开挂机如何选择:云手机还是模拟器
  • LabVIEW 场效应晶体管仿真实验平台
  • 工业自动化系统架构-(多动子磁悬浮生产流水线 规划调度执行与协调)
  • 从下载到运行:MySQL 详细安装配置完整教程
  • 【Vue3】Cesium实现卫星及无人机轨迹跟踪
  • 大模型入门实战 | 基于 YOLO 数据集微调 Qwen2.5-VL-3B-Instruct 的目标检测任务
  • 数字IC前端设计——DC综合篇(生成filelist.f)
  • ADB 安装教程:如何在 Windows、 Linux 上安装 Android Debug Bridge
  • Java数据结构速成【1】
  • 项目设计文档——爬虫项目(爬取天气预报)
  • Qt——界面美化 QSS
  • 无人机三维路径规划首选算法:RRT_
  • 基于大模型的智能占卜系统实战-Qwen-VL、RAG、FastAPI
  • 【算法--链表题1】2. 两数相加:通俗详解
  • Linux系统网络管理学习.2
  • Spring面试题及详细答案 125道(26-45) -- Spring AOP篇
  • PLC通讯中遇到的实际场景
  • 8.25作业
  • 管家婆工贸ERP BB116.销售订单选存货