NDK 常见问题(FAQs)¶
Q1:为什么我使用 JLink (SWD) 烧录一个工程后,无法(或很难)再次烧录?¶
正常来说,如果 JLink 接线没问题的话,您是可以反复烧录 App 工程的,若您发现在空板上使用 JLink 烧录 App 工程很容易成功,但再次烧录则不容易成功,则有可能是以下两个原因:
您在 App 代码的初始化流程中修改了 P00/P01 引脚的功能,将其由默认的 SWD 功能切换为其他功能(如GPIO),那么当试图使用 JLink 进行烧录的时候,SWD 通信将无法正常进行
您的 App 工程会频繁地或长期地进入芯片的 DeepSleep 或 Standby 低功耗流程,在这两种低功耗模式下,SWD 通信将无法正常进行
若遇到上述情况,您可以尝试将 JLink 的 RESET 引脚接到 SoC 的 RESET 引脚上,然后再进行烧录,很多时候可以解决问题。
进一步地,若方案仍处于调试阶段,则还可以在 sdk_config.h
中使能 Log/Debug Cofnig - Enable Startup Long Delay 配置,这样在每次系统启动的初始化阶段会被插入一段约 1s 的延时,从而大大提高复位后 SWD 的通信成功率。
注:此处的长延时会显著增加系统的平均功耗和启动时间,因此在方案的产品量产阶段不建议开启。
若上述方法仍然无法成功或不方便使用,那么您还可以尝试以下两种方法:
执行 JLink 脚本 ForceEraseVectorTable_PAN107x.bat(位于:
<pan1070-ndk>\05_TOOLS\调试工具
目录下),此脚本会尝试将 Flash 上的启动代码擦掉,若成功,后续即可正常使用 JLink 重新烧录使用 Panchip 量产烧录工具 PANLINK 烧录固件或将 Flash 内容全部擦除
注:这两种方法也是需要将 SoC 的 RESET 引脚是连接到 PANLINK/JLink 的。