擦除固件前,先确定要清除的是整片Flash,还是某几个扇区。芯片中可能还存有设备参数、校准信息或启动配置;若它们与程序位于不同区域,就需要先确认擦除范围。J-Link常用的操作入口有J-Flash Lite、J-Link Commander和J-Flash,选择哪一个取决于要擦除的范围及当前工具配置。
一、J-Link怎么进行固件擦除
1、确认目标区域
先从芯片手册查清Flash的bank和扇区划分,再核对设备上是否有需要保留的数据。指定地址范围时,也要留意该范围涉及哪些完整扇区。
①对照芯片手册,记录程序Flash的起止地址、bank和扇区划分。
②保存需要保留的固件文件、设备参数,标出本次允许擦除的区域。
2、使用J-Flash Lite整体擦除
J-Flash Lite启动时可选择目标器件、调试接口、Flash bank和Loader。主窗口的【Erase chip】是整体擦除入口;需要保留其他区域时,应先确认它们不在该操作的影响范围内。
①打开【J-Flash Lite】,点击器件名称旁的【...】,选择芯片的完整型号。
②在【Target interface】选择【SWD】或【JTAG】,填写【Speed】。
③核对【Flash banks】和【Loader】,点击【OK】。
④确认所涉区域可以清空后,点击【Erase chip】,查看窗口中的执行结果。
3、使用Commander指定擦除范围
J-Link Commander的Erase命令可以带起始和结束地址。不带地址执行时,会擦除当前设备的Flash,因此输入命令前应核对范围。
①打开【J-Link Commander】,输入Device<芯片型号>,按【Enter】。
②选择与板卡一致的接口和速度,输入connect,按【Enter】。
③输入Erase<起始地址><结束地址>,按【Enter】,检查返回信息。
4、在J-Flash中擦除指定扇区
需要按扇区选择范围时,可使用具备相应授权的J-Flash。项目中的扇区选择会影响手动擦除操作,执行前应再核对一次。
①依次点击【Options】→【Project settings...】,核对目标器件和Flash bank。
②在Flash设置中选中待擦除扇区,保存项目设置。
③依次点击【Target】→【Connect】。
④依次点击【Target】→【Manual Programming】→【Erase Sectors】,查看擦除日志。
二、J-Link擦除Flash失败通常是什么原因
1、目标连接或供电异常
若擦除尚未开始就提示连接失败,先检查目标板供电、参考电压和调试接口。接口速度过高也可能使连接不稳定。
①在【J-Link Commander】查看目标电压和识别出的器件信息。
②核对板卡供电,以及调试接口的VTref、GND连接。
③降低【Speed】,重新连接目标并读取一个已知可访问的地址。
2、器件、Loader或工具授权不匹配
相近型号未必使用相同的Flash布局。连接成功但找不到目标Flash,或算法无法启动时,检查bank与Loader;若只在J-Flash中无法执行擦除,还要核对该工具的授权状态。
①重新打开【J-Flash Lite】配置窗口,核对器件完整型号。
②检查【Flash banks】和【Loader】是否对应固件所在区域。
③若使用J-Flash,点击【Help】→【Licenses...】,查看当前授权信息。
3、工作RAM不可用
Flash擦除算法通常要在目标RAM中运行。日志出现“RAM check failed”时,应检查项目指定的RAM地址是否有效,以及该区域是否已经可访问。
①在J-Flash依次点击【View】→【Show log】,查找首次报错的位置。
②依次点击【Options】→【Project settings...】,查看工作RAM地址。
③对照芯片手册,核对该地址是否属于当前可用的RAM。
④修正配置后重新连接,再执行擦除。
4、芯片启用了写保护
写保护或调试锁定可能阻止擦除。部分芯片解除保护时会触发大范围擦除,其影响可能超过原本选定的固件区,因此要先确认具体器件的解锁行为。
①检查【Show log】或连接弹窗中是否出现保护、锁定提示。
②对照芯片手册,核对保护级别和解除保护时涉及的区域。
③保存仍需保留的数据,再按该器件支持的方式解除保护。
④重新连接目标,执行擦除并检查结果。
5、外部Flash尚未完成初始化
如果内部Flash可以擦除,只有QSPI等外部Flash失败,应检查存储控制器、目标Flash型号与所选Loader。复用另一块板卡的配置时,这几项尤其容易对不上。
①在【Flash banks】确认已选中目标外部Flash,并核对【Loader】。
②点击【View】→【Show log】,查找初始化或算法加载错误。
③换用与目标板存储器匹配的项目配置,再擦除指定区域。
三、如何确认擦除结果
1、执行空白检查
擦除命令结束后,还应检查目标区域是否为空白。J-Flash提供按项目所选区域进行检查的入口,比仅查看进度条更明确。
①在J-Flash项目中再次核对所选扇区。
②依次点击【Target】→【Manual Programming】→【Check Blank】,查看检查结果。
2、保留失败日志
如果重试仍失败,先确认错误发生在连接、算法加载还是实际擦除阶段。保留第一条错误信息,后续才能针对同一阶段复查。
①点击【View】→【Show log】,记录第一条错误及对应地址。
②记录芯片完整型号、Flash bank、Loader、接口速度和保护状态。
③每次只调整一项配置,再执行原擦除操作,对照日志变化。
总结
Flash中存放的内容未必只有固件。设备参数、校准信息和启动配置可能占用其他扇区,也可能位于另一组Flash bank。把这些区域在项目资料中标清楚,后续升级程序或更换调试人员时,才能准确选择擦除范围,也方便复现失败现象。希望本文能帮助大家处理J-Link固件擦除与Flash擦除失败的问题;如有J-Link相关需求,欢迎联系我们咨询。