Reset基础学习看这篇就够了

1.Reset是什么?

Reset是软件正常运行过程中发生的PC指针跳回软件起始位置的行为,即软件跳回Boot中并重新开始的行为。在复位过程中,MCU中内核与外设也会有相应的动作,如内核复位,寄存器复位等。

复位的原因也有很多,可能来自MCU供电异常、软件异常或者本身的功能需求如刷新完成后可能需要Reset一次等。不同的复位源也可能会产生不同的影响,其影响范围也一般由MCU芯片厂商来决定。本文将以Reset总体介绍为目的,以IFX TC3xx系列为载体进行叙述。

2.Reset分类

不同的MCU厂商对Reset分类不同,以英飞凌Tricore系列来讲可以划分为如下几类:
Poweron Reset:该类Reset是系统电源关闭后初次上电后发生的,Poweron Reset会将整个系统初始化为预先设置的状态。PoweronReset还会引发一系列如Debug Reset、System Reset及Application Reset。

System Reset:是MCU在运行起来后发生的Reset,System Reset同样会将整个系统初始化为预先设置的状态。PoweronReset过程中会再触发一个Application Reset。

Debug Reset:该类型Reset实际应用中较少遇到。

Application Reset:同样是MCU在运行起来后发生的Reset,会将所有外设、CPU及SCU初始化。

Module Reset:模块Reset,是小范围内发生的Reset类型,如单核复位,CAN模块复位,这种复位不会对系统其余部分产生影响。

此外,也可以按系统已运行起来与否将Reset划分为WarmReset与Cold Reset:
WarmReset:指系统已经运行起来,且电源保持稳定时触发的复位。

ColdReset:指系统在上电过程中或者在响应临时断电时首次触发的复位。
对于MCU上硬件复位Pin-PORST类型触发的Reset按触发的时机可将其划分为WarmReset或者ColdReset。

另外,还有MCU厂商将Reset整体划分为SoftwareReset及HardwareReaet,再对不同类型的Reset请求进行相应的处理。

3.Reset的处理

3.1 RCU处理流程

在IFX芯片中有个专门处理Reset的模块-RCU(Reset Control Unit),RCU会检测不同的Reset请求,然后调度系统进行Shutdown,对于Warm Reset,在进入内部Reset前系统会自动进入稳定状态,这样保证在Reset发生后的Ram内容的可靠性,可用于后续的Reset排查。

RCU模块Reset处理的的整体逻辑如下图:
在这里插入图片描述

3.2 SMU处理流程

对于Reset来源,还有另一个重要模块-SMU,需要介绍下。SMU是负责在MCU运行过程中收集外设发出的Alarm,在Alarm处理时,会根据不同Alarm寄存器的配置进行相应的处理,SMU的
处理逻辑如下图:
在这里插入图片描述

4.Reset排查

不管在项目处于什么阶段,Reset都是一个非常困扰开发人员的问题,其来源广,出现工况复杂及可利用信息又不足,下面我们大概介绍几种Reset的排查方法,仅供参考。

4.1 确定是否为供电影响

上电后是否直接就会Reset?这种类型的Reset现象比较直观,直接就跑不起来。此时,可以用示波器测量MCU供电电压是否不足或波动太大?
或者看是否为PORST请求导致的复位?

4.2 借助OS ErrorHook或ProtectionHook

在MCU运行起来后,如果OS发生错误如任务超时,堆栈溢出等会先调用OS ErrorHook或ProtectionHook这两个钩子函数,在这两个函数前打断点再跟踪堆栈的调用关系即可快速定位。

4.3借助芯片寄存器

一般MCU中会提供很多寄存器以记录复位类型,复位发生的地址信息,如在IFX芯片中可用的寄存器有:
RSTST/DATR/DSTR等

  • 33
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Autosar汽车电子进阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值