与GDB的批量编程:西格·林克和P&E·多林克


我需要用一个固件对几个板进行编程:对于严肃的批量/工厂编程来说,这个数字太小了,但是对于使用调试器来说,这个数字太高了。我想要这个:

  1. 将电路板与调试探针连接并通电
  2. 运行一个脚本来刷新程序并运行它
  3. 断开并重新开始步骤1。

需要对几块板进行编程…

概述

用”Command Line Programming and Debugging with GDB“我几乎什么都准备好了。所以我只需要把事情结合成一个解决方案。因为它是不同的,取决于你是使用P&E多链接还是塞格杰链接,我已经介绍了这两种方法。我正在使用基于Eclipse的Kinetis Design Studio 3 . 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服务器的选项-单会话是一个很好的特性:它将在会话结束后终止服务器。在上面的例子中,我使用的是飞思卡尔K64F,所以请确保-device选项与您的目标相匹配。

gdb使用选项-x使用这个gdb脚本文件:


# gdbscript.txt: script for gdb. Run it with
# gdb -x <commandFile>

# disable confirmation messages (y or no):
set confirm off

# connect to P&E gdb server:
target remote localhost:7224

# reset target:
monitor reset

# load symbols for application (not necessary for flashing only):
# file MyProject/Debug/MyProject.elf

# load application:
load MyProject/Debug/MyProject.elf

# detach from target. As a side effect, this will start it:
detach

# quit gdb:
quit

西格杰-林克

有了西格J-Link,我需要首先启动GDB服务器(确保它还没有运行):

c:\Freescale\KDS_3.0.0\segger\JLinkGDBServerCL.exe

西格GDB服务器正在运行

在单独的cmd/shell窗口中,我运行以下脚本:

c:\Freescale\KDS_3.0.0\toolchain\bin\arm-none-eabi-gdb.exe -x gdbscript.txt

西格·GDB剧本

该脚本包含以下内容来加载文件,运行它,然后断开连接:


# gdb script
target remote localhost:2331
monitor device MK64FN1M0xxx12
monitor reset
load ./Debug/FRDM-K64F_FreeRTOS_8.2.1.elf
# load symbols, not necessary for flashing only
# file ./Debug/FRDM-K64F_FreeRTOS_8.2.1.elf
monitor go
disconnect
quit

请确保更新设备和目标图像/路径设置。

与P&E版本的不同之处在于塞格J-Link服务器一直在运行。我还没有找到一种方法使那部分自动化。

摘要

不需要集成开发环境或复杂的设置来批量编程一组板:你所需要的只是一些gdb脚本,我可以在一系列板中一个接一个地编程和运行一个板。