如何根据这些说明来制作Linux终端外壳?

时间:2019-05-14 19:25:03

标签: terminal raspberry-pi gdb raspbian atmel

我一直在尝试按照在Atmel ATSAMD51G19A的Raspberry Pi上运行的说明制作.sh脚本:


  1. 在新的终端窗口中启动openocd:

sudo openocd -f openocdcfg.cfg

如果OpenOCD成功连接到设备,它将保持运行状态。

  1. 在第二个终端窗口中,运行以下命令:

gdb-multiarch AtmelStart.elf

  1. 在gdb中键入这些内容(在提示时说是):
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。谢谢您的帮助。

1 个答案:

答案 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询问您是/否的问题。