我一直在尝试按照在Atmel ATSAMD51G19A的Raspberry Pi上运行的说明制作.sh脚本:
sudo openocd -f openocdcfg.cfg
如果OpenOCD成功连接到设备,它将保持运行状态。
gdb-multiarch AtmelStart.elf
target remote :3333
lo
file User.elf
lo
mon reset
显示设备现在应该正在运行ncdisplay代码。
现在,将固件刷新到Atmel MCU上没有问题。创建.sh脚本的第3部分时,我只会遇到问题。到目前为止,这是我的脚本第3部分的样子
(gdb) -ex target remote :3333
(gdb) -ex lo
(gdb) -ex file User.elf
(gdb) -ex y
(gdb) -ex y
(gdb) -ex lo
(gdb) -ex mon reset
(gdb) -ex q
上面列出的所有命令都不会在终端的gdb中执行。我也不确定在编写脚本时如何在gdb中包括'y'和'yes'。终端只是保持空闲状态,等待用户键入命令。
我仍在学习有关Linux和Debian / Ubuntu的很多知识。另外,这是我第一次使用gdb。谢谢您的帮助。
答案 0 :(得分:0)
GDB使用-x
命令行参数,该参数允许您传递一组要运行的命令,有关更多详细信息,请参见https://sourceware.org/gdb/current/onlinedocs/gdb/File-Options.html#File-Options。
因此,您可以将GDB命令放在一个单独的文件中(叫它cmd.gdb
),然后执行gdb-multiarch -x cmd.gdb AtmelStart.elf
。
如果GDB正在处理命令文件中的命令,则它将以yes
回答是/否提示,因此GDB不会停止。
如果您确实想坚持使用-ex
,则可以尝试将此命令添加到列表-ex 'set confirm off'
的开头,这应该会阻止GDB询问您是/否的问题。