You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在uVision的OnResetExec函数体中执行LOAD命令?

Keil OnResetExec中实现复位后增量加载RAM程序的方法

首先明确:LOAD %L INCREMENTAL 这种写法不符合Keil uVision调试脚本的语法规范,所以会提示语法错误。要在复位后自动重载RAM里的程序,得用uVision支持的合法命令来实现,下面是两种可行方案:

方案1:直接指定目标文件加载

OnResetExec是复位后自动执行的调试脚本函数,你可以直接写入要加载的项目目标文件路径,加上INCREMENTAL参数实现增量加载:

OnResetExec() {
  LOAD "你的项目文件.axf" INCREMENTAL;
}

INCREMENTAL参数是uVision支持的,它只会加载上次加载后修改过的部分,刚好适配复位后RAM被擦除的场景,能快速恢复程序。

方案2:动态获取当前加载的文件

如果不想硬编码文件名,可以用GETL()命令获取当前正在调试的目标文件路径,再传给LOAD命令:

OnResetExec() {
  FILE current_file = GETL();
  LOAD current_file INCREMENTAL;
}

这样不管你切换哪个项目,脚本都能自动加载当前的目标文件,通用性更强。

额外注意点

  • 要确认Bootloader的调试通道在复位后是开放的,有些硬件复位会关闭调试接口,得提前在Bootloader里做好配置。
  • 增量加载对RAM代码生效最优,如果程序包含Flash部分,INCREMENTAL会自动跳过已匹配的Flash区域,只更新RAM内容,无需额外设置。
  • 如果还是报错,检查下uVision版本,旧版本可能不支持INCREMENTAL参数,建议升级到uVision5及以上版本试试。

内容的提问来源于stack exchange,提问作者stevod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 03:12:04