
1. 项目概述深入MSP430FR的中断与调试核心在嵌入式系统开发中尤其是面对像TI MSP430FR系列这样的超低功耗微控制器时有两套机制是开发者必须吃透的一是确保系统能及时响应外部事件的中断系统二是将我们的代码思想注入芯片并验证其行为的编程与调试接口。很多人觉得看数据手册就够了但实际调试时遇到的种种“灵异”问题往往是因为对这两者的底层交互和细节配置理解不够深入。MSP430FR系列以其独特的FRAM铁电随机存取存储器和极低的功耗闻名但其强大的实时能力离不开一个设计精巧的中断控制器和灵活多样的程序加载路径。中断系统就像是系统的“神经反射弧”能让CPU从低功耗睡眠中瞬间唤醒处理完紧急事务后立刻回去睡觉这是实现“事件驱动”超低功耗应用的关键。而BootloaderBSL和JTAG接口则是我们与芯片对话的“桥梁”和“后门”。BSL允许你在产品出厂后仅通过简单的串行线UART或I2C就能更新固件无需昂贵的调试器JTAG则是开发阶段的利器能进行源码级调试、内存查看和暴力擦写。本文将结合我多年在工业传感和电池供电设备上使用MSP430FR系列的经验不仅解读数据手册中的关键表格更会分享如何在实际项目中配置中断、安全地使用BSL进行现场升级以及利用JTAG/Spy-Bi-Wire高效调试的实战技巧和避坑指南。无论你是正在评估该系列芯片还是已经深陷某个调试难题相信这里的细节都能给你带来启发。2. 中断系统深度解析与实战配置中断是MSP430FR系列实现实时多任务处理的基石。它的设计哲学是“低功耗高响应”因此其中断机制在保证灵活性的同时也充满了为节能而做的特殊考量。2.1 中断源、向量与优先级机制从你提供的资料中的“表 9-4”可以看到MSP430FR604x/504x系列的中断源异常丰富远不止于简单的GPIO。我们将其分为几个层次来理解核心中断架构每个中断源都关联三个关键元素中断标志IFG、中断向量寄存器IV和固定的向量地址。当外设如定时器溢出、ADC转换完成、UART收到数据产生事件时相应的IFG会被硬件置位。如果该中断源已被使能对应的IE位为1且总中断允许位GIE打开CPU就会暂停当前程序跳转到该中断源对应的向量地址去执行中断服务程序ISR。向量寄存器IV的妙用对于有多个中断事件的外设如P7端口有8个引脚每个都可作为中断源MSP430采用了“中断向量寄存器”来节省向量表空间。例如P7IV。在P7口的ISR里你不需要轮询P7IFG.0到P7IFG.7这8个标志位来判断是哪个引脚触发了中断。你只需要读取P7IV寄存器它会返回一个编码值直接对应着当前最高优先级的待处理中断事件。这既提高了响应效率也简化了代码。实操心得在编写类似P1、P2、P7等多引脚中断的ISR时务必使用switch(__even_in_range(P1IV, P1IV_P1IFG7))这样的语法。这是MSP430编译器如TI CCS或IAR提供的一种安全优化它能生成一个高效的跳转表确保只跳转到有效的向量值避免程序跑飞。直接使用if-else判断P1IV的值是常见错误既不高效也不安全。优先级解读“表 9-4”最右边的“PRIORITY”列其地址从上到下递减0FFBAh, 0FFB8h...0FFB0h地址值越小优先级越高。当多个中断同时发生时CPU会响应优先级最高的那个。但请注意这个优先级是固定的、硬件决定的。例如系统复位最高优先级的向量地址是0xFFFE/0xFFFF。我们需要关注的是在可屏蔽中断Maskable内部如P7中断的优先级就比SDHSSigma-Delta硬件加速器中断高。在规划系统时需要将最紧急、最不能被打断的任务放在高优先级的中断中。2.2 不可屏蔽中断NMI与系统复位除了大量的可屏蔽中断MSP430FR还提供了不可屏蔽中断NMI这在资料中标注为“Non)maskable”。这意味着即使总中断禁止GIE0当NMI事件发生时CPU也必须响应。这用于处理系统级、严重的错误例如FRAM访问错误、非法内存访问等。“表 9-10”至“表 9-12”详细列出了系统模块的中断向量寄存器SYSRSTIV, SYSSNIV, SYSUNIV。这是调试中最宝贵的“黑匣子”数据。SYSRSTIV记录导致系统复位的根源。比如你的设备在运行中莫名重启在初始化代码中读取SYSRSTIV的值就能知道是看门狗超时0x16、FRAM密码错误0x1A还是非法取指0x1E等原因。这比盲目猜测高效得多。SYSSNIV系统NMI中断源。例如JTAG邮箱输入/输出中断JMBINIFG/JMBOUTIFG就在这里这为通过调试工具与运行中的CPU进行双向通信提供了可能。SYSUNIV用户NMI中断源通常连接到外部NMI引脚和振荡器故障等。避坑指南很多开发者忽略了对SYSRSTIV的检查。我曾遇到一个产品在极端温度下偶发重启最终就是通过在上电初始化时将SYSRSTIV的值存入FRAM的特定区域在初始化看门狗等可能触发复位的操作之前事后读取发现是“BrownoutBOR”从而定位到电源电路在低温下启动不稳的问题。务必养成在main()函数开头读取并记录复位原因的习惯。2.3 中断与低功耗模式的协同MSP430FR中断设计的精髓在于与低功耗模式LPM的无缝配合。CPU可以在LPM3、LPM4等模式下深度睡眠功耗可低至微安级。此时几乎所有时钟都关闭但中断系统仍在“监听”。关键配置要使一个外设中断能将CPU从低功耗模式唤醒除了配置该外设的中断使能还必须正确设置其IO口的中断唤醒能力。如资料“9.13.1 Digital I/O”所述端口P1-P7的每个引脚都具备“LPM3.5 and LPM4.5 wakeup input capability”。这意味着你需要在进入低功耗前配置好对应引脚为输入、并使能上下拉电阻防止浮空、选择边沿触发方式。一个完整的流程示例配置P1.0为输入使能上拉电阻设置为下降沿触发中断。使能P1.0引脚中断P1IE | BIT0。清除P1.0中断标志P1IFG ~BIT0。使能总中断__enable_interrupt()或bis.w #GIE, SR。进入LPM3__bis_SR_register(LPM3_bits GIE);。当P1.0引脚出现下降沿时CPU被唤醒执行P1口的ISR。ISR中通过P1IV判断是P1.0处理事件并清除P1IFG.0标志。ISR返回后CPU继续执行LPM3之后的代码。这里有个重要选择如果你希望处理完事件后继续睡眠ISR末尾不需要特殊操作硬件会自动恢复进入中断前的低功耗状态。如果你想保持唤醒状态则需要在ISR中修改堆栈中的状态寄存器SR内容或者直接退出到主循环重新决策。3. BootloaderBSL详解从理论到安全实践Bootloader是固化在芯片内部掩膜ROM中的一段小程序它独立于用户应用程序提供了通过串行接口更新FRAM或RAM内容的能力。对于量产产品和现场升级BSL不可或缺。3.1 BSL入口序列与通信协议根据“表 9-6”和“9.7 Bootloader (BSL)”的描述BSL的进入需要一个精确的引脚序列主要涉及RST/NMI/SBWTDIO和TEST/SBWTCK这两个引脚。这个序列通常是一个特定的电平变化时序例如在RST引脚上施加一个特定的脉冲序列目的是防止误进入BSL模式。具体时序必须严格参照《MSP430™ FRAM Devices Bootloader (BSL) User‘s Guide》不同型号、不同封装的芯片可能略有差异。进入BSL模式后芯片不再运行用户程序而是等待主机通常是PC上的BSL编程器通过通信接口发送命令。根据芯片子系列不同通信接口分为两种UART BSLFRxxxx使用P2.0TX和P2.1RX。这是最常见的形式。I2C BSLFRxxxx1使用P1.6SDA和P1.7SCL。这为在仅有I2C总线的系统中进行升级提供了便利。通信协议核心BSL协议是一套基于数据包的命令-响应机制。主机发送一个包含命令、地址、数据长度、数据和校验和的帧BSL解析后执行相应的操作如擦除、写入、读取、跳转等并返回一个响应帧。校验和通常是XOR或CRC至关重要错误的校验和会导致BSL拒绝执行命令这是第一道安全屏障。3.2 密码保护与安全考量BSL最强大的安全特性是用户定义的密码。如资料所述“Access to the device memory through the BSL is protected by an user-defined password.” 这个密码实际上是一段存储在特定FRAM地址通常是0xFF80-0xFFBF的数据。在通过BSL进行任何内存访问除了“解锁”命令之前主机必须发送正确的密码。密码的本质它不是我们通常理解的8位数字而是一段长达32字节256位的哈希数据通常由你的应用程序代码的某个固定区域例如中断向量表计算得出。TI提供的BSL编程工具如MSPBSL可以自动从你的输出文件.txt或.hex中计算这个密码。重大安全警告绝对不要将密码区域0xFF80-0xFFBF在应用程序中全部填充为0xFF或0x00。这是一个极其危险的做法。如果攻击者知道密码是全FF或全00他可以直接绕过密码保护通过BSL读取或篡改你的全部固件。正确的做法是在应用程序中使用编译后的代码自然填充这个区域。TI的链接器命令文件.cmd通常会自动将中断向量表等关键数据放置于此从而形成一个基于你实际代码的、唯一的、不可预测的密码。“表 9-5. Signatures”的解读这个表列出了几个签名地址其中JTAG Signature1和JTAG Signature20xFF80 0xFF82就是JTAG/BSL密码的存储位置。注释中提到“Must not contain 0AAAAh if used as the JTAG password.”这是因为0xAAAA是JTAG接口的“解锁”特定模式值如果密码中包含它可能会引起冲突或意外解锁。3.3 BSL实战流程与常见问题标准BSL更新流程硬件连接连接目标板的VCC、GND、RST、TEST以及UART的TX/RX或I2C的SDA/SCL到编程器。触发BSL入口编程器按照时序要求在RST和TEST引脚上产生特定的信号序列。建立通信发送同步字节如0x80BSL回应特定字符如0x90确认进入。解锁发送“RX Password”命令后跟从你的应用程序固件中计算出的32字节密码。内存操作密码验证通过后即可发送擦除Erase、写入Write、读取Read等命令。复位退出发送“Reset”命令或触发硬件复位使芯片跳出BSL模式从用户程序复位向量0xFFFE启动。常见问题与排查无法进入BSL99%的问题出在入口时序或引脚状态上。确保RST和TEST引脚的上拉/下拉电阻符合数据手册要求时序的延时参数精确到微秒级。用逻辑分析仪抓取这两个引脚的波形与用户指南对比。密码错误确认用于计算密码的固件文件是否正确是否包含中断向量表区域。检查BSL工具是否选择了正确的芯片型号和通信接口。有时芯片中已有的程序损坏了密码区域导致计算出的密码永远不对此时可能需要先通过JTAG进行全片擦除。通信失败检查波特率。UART BSL通常固定为9600波特率有些新型号支持自动波特率。检查TX/RX是否交叉连接。在发送密码或数据前确保给BSL足够的处理时间增加字节间延时。4. JTAG与Spy-Bi-Wire接口开发与调试的生命线JTAG是开发和调试阶段的标准接口功能远比BSL强大可以进行单步调试、断点、内存/寄存器实时查看和修改。4.1 标准四线JTAG接口如“表 9-7”所示标准JTAG需要4根信号线加上TEST和RSTTCK (PJ.3)测试时钟输入由调试器提供。TMS (PJ.2)测试模式选择控制JTAG状态机转换。TDI (PJ.1)测试数据输入数据串行移入芯片。TDO (PJ.0)测试数据输出数据串行从芯片移出。TEST/SBWTCK必须拉低或根据调试器要求控制以启用JTAG功能。RST/NMI/SBWTDIO用于对设备进行复位控制。工作原理JTAG本质上是一个边界扫描链可以访问芯片内部的所有寄存器和内存。调试器如TI的MSP-FET 或开源的OpenOCDFTDI芯片通过TCK和TMS精确控制一个状态机将指令和数据通过TDI移入结果通过TDO移出。这允许调试器直接控制CPU的暂停、运行读写任何内存地址包括FRAM、RAM、外设寄存器。4.2 两线Spy-Bi-WireSBW接口SBW是TI在MSP430上引入的两线制调试接口极大节省了引脚。“表 9-8”列出了其引脚需求TEST/SBWTCK时钟线。RST/NMI/SBWTDIO双向数据线。SBW通过时分复用的方式在两根线上实现了JTAG四线的功能。它在引脚紧张的小封装芯片上特别有用。需要注意的是SBW接口的物理电平时序与标准JTAG不同调试器必须支持SBW模式。现在主流的TI调试器如MSP-FET和仿真器都同时支持JTAG和SBW。4.3 JTAG/SBW实战配置与高级调试技巧硬件连接检查清单电源确保调试器能为目标板供电如果使用调试器供电或目标板已自行稳定供电。电压必须在芯片工作范围内如1.8V-3.6V。连接对照“表 9-7”或“表 9-8”确认每一根线都正确连接。特别注意TEST引脚的电平在JTAG模式下通常需要拉低。复位电路目标板上的复位电路RC网络可能会干扰调试器的复位信号。在复杂的电路中有时需要在复位引脚串联一个100欧姆电阻来隔离调试器与目标板复位电路。开发环境中的配置以TI Code Composer Studio为例创建或导入项目后进入项目属性 - Debug - “Texas Instruments MSP430 Debugging”。在“Connection”中选择你的调试器型号如“TI MSP-FET”。在“Device”中准确选择你的芯片型号如“MSP430FR6043”。在“Interface”中选择“4-wire JTAG”或“Spy-Bi-Wire (2-wire JTAG)”。这个选择必须与硬件连接方式严格对应。配置正确的时钟频率通常保持默认即可。高级调试技巧——利用“JTAG Mailbox” 资料在“9.13.8 System Module (SYS)”中提到“The SYS module also includes a data exchange mechanism through JTAG called a JTAG mailbox”。这是一个非强大的功能允许运行中的用户程序与外部的JTAG调试器进行双向通信而无需停止CPU。原理芯片内部有一小段共享内存区域和一组状态标志。用户程序可以将数据写入“邮箱”并设置一个标志。调试器通过JTAG接可以轮询或中断方式读取这个邮箱。反之亦然。应用场景实时数据监控在不影响程序实时性的情况下将传感器数据、变量值定期写入邮箱供调试器读取并绘制波形图。动态配置调试器通过邮箱向运行中的程序发送新的参数如PID系数、阈值实现“在线调参”。简单命令交互构建一个简单的命令行接口通过调试器向程序发送命令。使用方法需要查阅具体型号的《Technical Reference Manual》找到JTAG邮箱相关的寄存器如JMBI0OUTJMBI1INJMBINIFGJMBOUTIFG。用户程序端需要处理JMBINIFG中断来自SYSSNIV来接收数据调试器端则可以通过脚本如CCS的Scripting或自定义GDB命令来访问。5. 内存子系统FRAM、RAM、MPU与中断的关联MSP430FR系列的核心特性是其非易失性FRAM。理解其内存架构对于编写可靠的中断程序和利用BSL/JTAG至关重要。5.1 FRAM控制器与等待状态如“9.9 FRAM Controller A (FRCTL_A)”所述FRAM支持字节/字访问但有一个关键限制当MCLK频率超过8MHz时必须配置等待状态。这是因为FRAM的写入速度需要时间如果CPU以过高频率连续写入会导致数据错误。配置示例如果你的系统主频MCLK是16MHz你需要配置FRCTL寄存器为FRAM访问插入1个或更多等待周期。这通常在系统时钟初始化代码中完成。忽略这一点是导致程序在高频下运行不稳定的常见原因。5.2 内存保护单元MPU与IP封装MPU是提升系统鲁棒性的利器。“9.12 Memory Protection Unit (MPU)”介绍了其功能特别是IP封装IP Encapsulation。你可以将一段关键的代码或数据区域例如加密算法库、出厂校准参数声明为“受保护的IP段”。MPU可以阻止来自“外部”例如通过JTAG的非法读取或者应用程序其他部分的越权访问的读操作。如何与中断协同MPU的访问违规会触发中断见SYSSNIV中的MPUSEGxIFG。你可以在这些中断的服务程序里记录违规访问的地址和类型这对于检测和防御某些软件攻击或排查意外的指针错误非常有帮助。5.3 RAM分区与低功耗保持“9.10 RAM”和“9.11 Tiny RAM”描述了RAM的布局。RAM被分成多个扇区在超低功耗模式LPM3/LPM4下可以单独关闭以节省漏电功耗。但数据会丢失。而Tiny RAM仅22字节在LPM3/LPM4下始终保持供电。中断程序的设计启示如果你的中断服务程序ISR需要在CPU从LPM3/LPM4唤醒后执行并且ISR中使用了全局变量那么这些变量不能存放在可被断电的RAM扇区中。你有两个选择1) 将这些变量声明在Tiny RAM中通过#pragma或链接器命令指定2) 避免进入会关闭该RAM扇区的低功耗模式。这需要在系统功耗规划和软件设计初期就考虑清楚。6. 外设中断与DMA的联动实战MSP430FR丰富的外设是其实时处理能力的体现而DMA直接内存访问则是解放CPU、进一步降低功耗的神器。6.1 外设中断源概览从你提供的庞大表格表9-11 表9-12等可以看出几乎每个外设都能产生中断定时器TAx TBx的捕获/比较/溢出、ADC转换完成、UART收发完成、I2C事件、甚至硬件乘法器MPY操作完成。这些中断标志IFG是事件发生的信号。配置外设中断的通用步骤初始化外设如配置定时器模式、ADC通道。清除该外设的中断标志IFG 0。使能该外设的特定中断如TA0CCTL0 | CCIE使能TA0 CCR0比较中断。在总中断使能GIE打开的情况下当事件发生CPU就会跳转到对应的中断向量。6.2 DMA控制器中断的“效率倍增器”“9.13.9 DMA Controller”和“表 9-11”展示了DMA的强大。DMA可以在不打扰CPU的情况下在外设和内存之间搬运数据。经典应用模式——ADC连续采样配置ADC为连续转换模式使能ADC转换完成中断。配置DMA通道设置源地址为ADC转换结果寄存器ADC12MEM0目标地址为RAM中的一个数组设置传输字长为ADC结果宽度如12位对应2字节设置触发源为“ADC12 end of conversion”触发号26。当ADC完成一次转换并产生中断标志时这个标志不会触发CPU中断而是触发DMA进行一次数据传输。DMA自动将ADC结果搬到RAM数组并更新地址指针。当DMA传输完预设的数据块比如256个样本后DMA会产生自己的中断DMAxIFG。CPU只需要处理DMA传输完成中断在对应的ISR中对这整块256个样本数据进行批量处理如滤波、计算。在这个过程中CPU大部分时间可以处于低功耗睡眠状态只有DMA在忙碌地搬运数据。DMA触发源配置“表 9-11”是DMA配置的钥匙。你需要根据需求选择正确的触发源。例如如果你想用定时器TA0的周期来触发DMA搬运实现固定采样率就选择触发源1TA0CCR0 CCIFG。DMA通道0-5的触发源是独立可选的这允许你构建复杂的数据流。性能优化心得对于高速数据流如音频采样务必使用DMA。我曾在一个超声波流量计项目中使用MSP430FR6043的USS模块和DMA将ADC采样数据直接搬运到LEA低功耗加速器的输入缓冲区整个数据搬运过程零CPU参与CPU只在LEA计算完成后被中断唤醒读取结果系统平均功耗降低了70%以上。7. 常见问题排查与调试经验实录即使理解了所有原理实际开发中仍会遇到各种问题。下面是我总结的一些典型问题及其排查思路。7.1 中断不触发或触发异常症状程序似乎永远进不了中断服务程序。检查1总中断使能GIE。在main()函数初始化后是否执行了__enable_interrupt()或设置了状态寄存器这是最容易被新手遗忘的一步。检查2外设特定中断使能。例如使能定时器中断不仅要配置TAxCTL还要配置对应捕获比较寄存器的TAxCCTLn中的CCIE位。检查3中断标志IFG。在使能中断前先清除对应的IFG位。有些外设的中断标志在使能时如果已经置位可能会立即触发一次中断。检查4中断向量地址。确认编译器/链接器是否正确地将你的ISR函数地址放置到了中断向量表中。在IAR或CCS中通常使用#pragma vectorTIMER0_A0_VECTOR或__interrupt void TA0_0_ISR(void)这样的语法来声明ISR编译器会自动处理向量表。检查5低功耗模式。确认你进入的低功耗模式LPM是否关闭了该外设工作所需的时钟例如如果使能了基于ACLK的定时器中断但进入了关闭ACLK的LPM4模式中断自然无法产生。症状中断频繁触发甚至卡死在ISR中。检查1中断标志清除。在ISR内部是否清除了触发本次中断的标志位如果没有清除ISR返回后该标志位依然有效会立即再次触发中断导致程序“饿死”在ISR里。检查2中断嵌套与优先级。MSP430默认不支持中断嵌套即在ISR中响应其他中断。如果在一个低优先级ISR执行期间发生了高优先级中断高优先级中断需要等待当前ISR执行完。但如果你的ISR执行时间过长可能会影响系统实时性。确保ISR尽可能短小精悍只做最必要的处理如设置标志、搬运数据将复杂计算放到主循环中。7.2 BSL/JTAG连接失败症状调试器无法接提示“No device found”或“Failed to initialize”。检查1电源与复位。用万用表测量目标板VCC电压是否稳定且在芯片范围内如3.3V。用示波器观察RST引脚在连接瞬间调试器是否会发出复位脉冲。目标板自己的复位电路如阻容可能干扰调试器尝试临时移除复位电路的电容器。检查2TEST/SBWTCK引脚。对于JTAG模式确保此引脚被拉低通常调试器会主动控制。对于SBW模式确保连接正确。该引脚不能浮空。检查3时钟与程序干扰。如果芯片正在运行一个非常“激进”的程序例如高速切换与JTAG复用的IO口或修改了系统时钟配置导致JTAG时钟失效可能会干扰调试连接。尝试先按住复位键再点击连接或者在设计上增加一个“调试模式”跳线让程序初始化时不配置与调试接口冲突的引脚。检查4芯片锁死。如果程序错误地配置了JTAG/SBW相关的引脚功能如将其设为普通输出并驱动为高电平或者BSL密码区域被破坏可能导致调试接口被“锁死”。此时需要尝试通过BSL接口如果还能进入进行全片擦除或者使用“TEST引脚上的特殊时序进行“出厂复位”具体方法见芯片的Errata或TI技术文档这通常需要将TEST引脚拉至高电压如VCC。7.3 程序在FRAM中运行异常症状代码在RAM中调试正常下载到FRAM后运行出错或数据异常。检查1等待状态Wait States。这是首要怀疑对象。确认你的系统时钟频率MCLK是否超过8MHz如果超过是否在初始化代码中正确配置了FRCTL寄存器设置了足够的等待状态一个快速的验证方法是在初始化代码开头强制将FRCTL0的FRCTLPW密码写入然后设置FRCTL0_L NWAITS_1假设插入1个等待状态。检查2链接器命令文件.cmd。确认你的.cmd文件是否正确地将代码段.text、常量段.const和数据初始化段.data分配到了FRAM区域例如FRAM而不是默认的RAM。TI提供的芯片专用.cmd文件通常已配置好但如果你做了自定义修改需要仔细核对。检查3数据持久化。FRAM是非易失的这意味着全局变量在芯片掉电再上电后其值会保持除非你主动擦写。这与RAM的行为完全不同。如果你希望变量在每次上电时初始化必须在代码中显式地赋值或者利用__no_init关键字将其分配到RAM中。否则上次运行的值会干扰本次逻辑。7.4 低功耗目标无法达成症状实测功耗远高于数据手册标称的睡眠电流。检查1未使用的IO口。这是最大的“功耗刺客”。所有未使用的GPIO引脚必须设置为输出方向并输出一个固定电平高或低或者设置为输入并启用内部上拉/下拉电阻绝对禁止浮空。浮空的引脚会因感应电压而在输入缓冲器上产生漏电流。检查2外设时钟与模块使能。在进入低功耗模式前是否关闭了所有不必要的外设模块时钟如UCA0CTLW0 | UCSWRST来复位并关闭USCI是否将ADC、REF等模拟模块的电源关闭检查3RAM保持。如果你进入了LPM3/LPM4但程序又需要在唤醒后使用某些全局变量你必须确保这些变量所在的RAM扇区没有被断电。参考“9.10 RAM”检查SYSRAMLP等控制寄存器确保需要的RAM扇区在低功耗模式下保持供电。检查4调试接口影响。连接着调试器JTAG/SBW进行功耗测量是不准确的因为调试器本身会向芯片注入电流。测量真实低功耗必须在完全断开调试器仅由电池或清洁电源供电的情况下进行。可以使用一个跳线或开关来断开调试接口。