我需要用一个固件对几块板进行编程:一个数字对于严肃的批处理/工厂编程来说太小了,但是对于使用调试器执行此操作来说数字太高了。我要这个:
- 将电路板与调试探针连接起来并为其供电
- 运行脚本来刷新程序并运行它
- 断开并重新启动步骤 1。
需要对一些电路板进行编程……
大纲
通过“ 使用 GDB 进行命令行编程和调试 ”,我几乎掌握了一切。所以我只需要将事情组合成一个解决方案。因为它会有所不同,具体取决于您使用的是 P&E Multilink 还是 Segger J-Link,所以我介绍了这两种方法。我使用的是基于 Eclipse 的 Kinetis Design Studio v3.0.0,但也可以使用命令行 gdb 安装。
P&E 多链路
我正在使用以下批处理文件启动 P&E GDB 服务器,然后启动 gdb 客户端。相应地更改路径:
REM Start P&E GDB Server with single session
call "cmd /c start C:\Freescale\KDS_3.0.0\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_2.0.8.201504092111\win32\pegdbserver_console.exe -startserver -singlesession -device=Freescale_K6x_K64FN1M0M12"
REM start gdb with script
C:\Freescale\KDS_3.0.0\arm-none-eabi-gdb -x gdbScript.txt
P&E 服务器的选项 -singlesession 是一个很好的特性:它会在会话结束后终止服务器。我在上面的示例中使用的是 Freescale K64F,因此请确保 -device 选项与您的目标匹配。
gdb 使用选项 -x 使用此 gdb 脚本文件:
REM Start P&E GDB Server with single session
call "cmd /c start C:\Freescale\KDS_3.0.0\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_2.0.8.201504092111\win32\pegdbserver_console.exe -startserver -singlesession -device=Freescale_K6x_K64FN1M0M12"
REM start gdb with script
C:\Freescale\KDS_3.0.0\arm-none-eabi-gdb -x gdbScript.txt
赛格 J-Link
使用 Segger J-Link,我需要先启动 GDB 服务器(确保它尚未运行):
REM Start P&E GDB Server with single session
call "cmd /c start C:\Freescale\KDS_3.0.0\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_2.0.8.201504092111\win32\pegdbserver_console.exe -startserver -singlesession -device=Freescale_K6x_K64FN1M0M12"
REM start gdb with script
C:\Freescale\KDS_3.0.0\arm-none-eabi-gdb -x gdbScript.txt
SEGGER GDB 服务器正在运行
在一个单独的 cmd/shell 窗口中,我运行这个脚本:
REM Start P&E GDB Server with single session
call "cmd /c start C:\Freescale\KDS_3.0.0\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_2.0.8.201504092111\win32\pegdbserver_console.exe -startserver -singlesession -device=Freescale_K6x_K64FN1M0M12"
REM start gdb with script
C:\Freescale\KDS_3.0.0\arm-none-eabi-gdb -x gdbScript.txt
Segger GDB 脚本
该脚本包含以下内容来加载文件、运行它然后断开连接:
REM Start P&E GDB Server with single session
call "cmd /c start C:\Freescale\KDS_3.0.0\eclipse\plugins\com.pemicro.debug.gdbjtag.pne_2.0.8.201504092111\win32\pegdbserver_console.exe -startserver -singlesession -device=Freescale_K6x_K64FN1M0M12"
REM start gdb with script
C:\Freescale\KDS_3.0.0\arm-none-eabi-gdb -x gdbScript.txt
确保更新设备和目标图像/路径设置。
与 P&E 版本的不同之处在于 Segger J-Link 服务器保持运行。我还没有找到使该部分自动化的方法。
概括
批处理一组电路板不需要 IDE 或复杂的设置:您只需要一些 gdb 脚本,我可以在一系列电路板中一个接一个地编程和运行一个电路板。