你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

用rt_thread 环境编写,DAP-LINK 下载烧录,每一次空芯片下载之后就无法二次下载。求解

[复制链接]
重启试试 提问时间:2025-3-20 09:43 / 未解决

开始下载程序:2025-03-20 09:16:57 D:\RT-ThreadStudio>cd /d D:\RT-ThreadStudio\repo\Extract\Debugger_Support_Packages\RealThread\PyOCD\0.1.3 D:\RT-ThreadStudio\repo\Extract\Debugger_Support_Packages\RealThread\PyOCD\0.1.3>pyocd.exe flash --target=STM32F103VC --erase=auto --frequency=1000000 D:\RT-ThreadStudio\workspace\jsy_system_ctrl\Debug\rtthread.bin 0001672:CRITICAL:main:No ACK received Traceback (most recent call last): File "pyocd\probe\cmsis_dap_probe.py", line 249, in read_dp File "pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 836, in read_reg File "pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 830, in read_reg_cb File "pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 143, in get_result File "pyocd\utility\concurrency.py", line 28, in _locking File "pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 667, in flush File "pyocd\utility\concurrency.py", line 28, in _locking File "pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 915, in _read_packet File "pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 449, in decode_data File "pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 418, in _decode_transfer_block_data File "pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 341, in _check_response pyocd.probe.pydapaccess.dap_access_api.DAPAccessIntf.TransferError: No ACK received The above exception was the direct cause of the following exception: Traceback (most recent call last): File "pyocd__main.py", line 362, in run File "pyocd__main__.py", line 520, in do_flash File "pyocd\core\session.py", line 302, in enter__ File "pyocd\core\session.py", line 420, in open File "pyocd\board\board.py", line 85, in init File "pyocd\core\coresight_target.py", line 160, in init File "pyocd\utility\sequencer.py", line 213, in invoke File "pyocd\utility\sequencer.py", line 208, in invoke File "pyocd\coresight\dap.py", line 303, in _connect File "pyocd\coresight\dap.py", line 167, in connect File "pyocd\coresight\dap.py", line 194, in read_idr File "pyocd\probe\cmsis_dap_probe.py", line 251, in read_dp File "<string>", line 3, in raise_from pyocd.core.exceptions.TransferError: No ACK received 执行完毕, 耗时:2516ms.

收藏 评论2 发布时间:2025-3-20 09:43

举报

2个回答
xmshao 回答时间:6 天前
看看芯片是否做了读保护;


看看程序里是否占用了调试脚导致连接不畅;


看看BOOT脚的配置是否为主程序启动;
vincent2012 回答时间:6 天前

AI给的:

针对DAP-LINK在空芯片第一次烧录后无法二次下载的问题,以下是分步解决方案:

检查硬件连接与供电‌

确认DAP-LINK与目标板的SWD接口(SWDIO、SWCLK、GND)连接正确且接触良好。 使用万用表测量目标板供电电压,确保在STM32F103VC的工作范围内(通常3.3V)。

降低SWD通信频率‌ 修改烧录命令中的--frequency参数为较低值,如100kHz:

pyocd.exe flash --target=STM32F103VC --erase=auto --frequency=100000 D:\path\to\rtthread.bin

强制在复位状态下连接‌ 添加--connect=under-reset参数,使pyocd在芯片复位期间连接:

pyocd.exe flash --target=STM32F103VC --erase=auto --frequency=100000 --connect=under-reset D:\path\to\rtthread.bin

手动复位操作‌

烧录前按住目标板的复位按钮。 执行烧录命令后,待命令提示连接时释放复位按钮。

检查程序是否禁用SWD接口‌

确认第一次烧录的程序未修改SWD引脚配置(如PA13/SWDIO、PA14/SWCLK)。 若程序中误关闭了SWD功能,需通过BOOT模式清除选项字节: 将BOOT0引脚接高电平,复位进入系统存储器启动模式。 使用STM32CubeProgrammer连接UART或USB DFU,清除读保护(RDP)并恢复选项字节。

尝试完整芯片擦除‌ 修改--erase参数为chip,确保彻底擦除可能存在的保护设置:

pyocd.exe flash --target=STM32F103VC --erase=chip --frequency=100000 D:\path\to\rtthread.bin

更新工具链与PyOCD版本‌

升级PyOCD至最新版本(如0.36.0):

pip install --upgrade pyocd

确认已安装STM32F1系列支持包:

pyocd pack install STM32F1

验证DAP-LINK功能‌ 使用其他软件(如Keil MDK、OpenOCD)测试DAP-LINK是否能正常识别芯片,排除硬件故障。

示例操作流程:‌

#进入PyOCD目录(根据实际路径调整)

cd D:\RT-ThreadStudio\repo\Extract\Debugger_Support_Packages\RealThread\PyOCD\0.1.3

# 使用低频率+复位模式烧录

pyocd.exe flash --target=STM32F103VC --erase=chip --frequency=100000 --connect=under-reset D:\RT-ThreadStudio\workspace\jsy_system_ctrl\Debug\rtthread.bin

通过以上步骤,可系统性排除SWD通信故障,确保在空芯片或已编程芯片上稳定烧录。若问题依旧,建议检查目标板PCB设计是否存在信号完整性问题,或尝试更换DAP-LINK调试器。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版