我正在尝试使用以下位置提供的脚本运行 OpenOCD: https://gitlab.cs.hs-rm.de/CaroloCup/openocd-am57xx-scripts
特别是,只是简单的主脚本
am57_mpu_0.cfg
。
命令是:
openocd -f interface/jlink.cfg -f ./jlink_config.cfg -f ./am57_mpu_0.cfg
失败并显示:
./am57_mpu_0.cfg:110: Error: wrong # args: should be "expr expression"
虽然 110 号线对我来说看起来很正常:
set _dbgbase [expr 0x80000000 | ($_coreid << 13)]
出于测试目的,我尝试将其简化为:
set _dbgbase [expr (40+1)]
但仍然有同样的错误。
我将感谢任何提示我做错了什么。
TCL 中的语法发生变化,要求将表达式括在 {} 中。
语法更改发生在 2022 年 7 月。但是 Fedora 存储库安装了最后一个版本 0.11,该版本是在 2021 年打包的。
因此,问题是为什么 Fedora 更新不包含版本 0.12 的最新更新,其中所有脚本都已更新为具有这些 {}。
抱歉,根据上面 leonp 给出的答案添加此内容作为回复,而不是评论(我没有足够的声誉点):
将表达式更改为:
set _dbgbase [expr 0x80000000 | ($_coreid << 13)]
至:
set _dbgbase [expr {0x80000000 | ($_coreid << 13)}]
{} 添加在关键字 expr 之后、最后 ] 之前。