前言:最近由于需要分析问题代码的缘故,也是用到了热插拔功能,原先也是对这个概念含混不清,应用一遍之后才算是清楚的知道了其含义。本篇博客就简单的介绍一下热插拔功能,以瑞萨的MCU应用来作为举例。
1,什么是热插拔
先引用一下百度百科里面的广义上的定义
热插拔 (Hot Swap) 即带电插拔,指的是在不关闭系统电源的情况下,将模块、板卡插入或拔出系统而不影响系统的正常工作,从而提高了系统的可靠性、快速维修性、冗余性和对灾难的及时恢复能力等。对于大功率模块化电源系统而言,热插拔技术可在维持整个电源系统电压的情况下,更换发生故障的电源模块,并保证模块化电源系统中其他电源模块正常运作。
热插拔最早出现在服务器领域,是为了提高服务器易用性而提出的。在我们平时用的电脑中一般都有USB接口,这种接口就能够实现热插拔。如果没有热插拔功能,即使磁盘损坏不会造成数据的丢失,用户仍然需要暂时关闭系统,以便能够对硬盘进行更换。

其实在我们使用电脑的过程中不知不觉间就使用了热插拔功能,比如在电脑运行的过程中插上或者拔掉U盘,而不是说必须得在关机的状态下才可以执行这个动作。
2,MCU应用中的热插拔
MCU本质上作为一个计算设备,算是一个超低配的微型计算平台。"麻雀虽小,五脏俱全",其包含了常用的通信协议外设接口,有时候为了定位问题或者分析故障的原因也需要热插拔的功能,这个需要MCU厂商配套开发的IDE里面集成。
比如有时候搭载某一款MCU的设备,在运行的过程中需要定位问题代码,这个时候就需要连接调试器进行DEBUG调试定位问题代码的位置
其实对于MCU而言,热插拔通常指两类场景
I/O 信号热插拔(Hot-Plug I/O)
系统通电时,外接模块的信号线(GPIO、CAN、LIN、SPI、UART)被插入或拔出,不会烧坏 MCU 引脚,也不会导致 MCU 复位或锁死。
电源热插拔(Hot-Swap)
MCU 的电源侧支持带电插拔(如 ECU 更换、车载模块带电连接),不产生:
冲击电流(inrush current)
反向电流
欠压复位故障
ESD/Latch-up 损坏
而对于瑞萨MCU而言,也有大量需要热插拔功能的场景

瑞萨芯片的 I/O 通常具备:
ESD 保护二极管(防 ±8kV 或更高 ESD)
过压钳位(Clamping)
Latch-up 抑制结构
输入过驱动(over-drive)保护
I/O 失电容忍(Power-off Tolerance)
例如 RH850 F1x 的 I/O 允许:
输入电压高于 VDD(带限制电流)
引脚在 MCU 未上电时接受信号 不会导致反灌电流
3,瑞萨MCU热插拔应用
一般这个功能是在IDE中集成,比如瑞萨的CS+里面的就有这个功能,当然这需要E2调试器。
操作时,需要先在电脑端连接热插拔的仿真器,然后点击下面的热插拔的功能键,出现一个OK键的时候在插到带电运行的板子上面,然后点击OK,就会定位到正在运行程序的代码地址位置。

可能会有小伙伴还是不知道这个功能有什么具体的用处,很简单,当搭载MCU的产品出现了一个BUG,但是不容易定位这个问题代码的位置,这个时候就可以在BUG复现的时候插上调试器,然后定位问题代码,因为IDE里面会有光标进行指引。