OpenOCD学习笔记 3-配置基本知识

一般情况下要实现一个完整的调试配置,只需要2个配置文件,比如:

openocd –f interface/yourInterface.cfg –f yourBoard.cfg

yourInterface可以在scripts\interface下找到使用的调试器,一般可以直接使用,而board的配置文件不一定符合要求,可能需要参考scripts\board修改。

一般情况下board.cfg会引用scripts\target下的MCU配置文件,例如scripts\boardstm32f0discovery.cfg中对应的MCU配置文件是stm32f0x.cfg

source [find target/stm32f0x.cfg]

cfg文件间可以设置变量通信。通过关键字set设置参数,另外,OpenOCD约定以下划线‘_’开始的变量为临时变量。

以stm32f0x.cfg为例

if { [info exists CHIPNAME] } {

   set _CHIPNAME $CHIPNAME

} else {

   set _CHIPNAME stm32f0x

}

这里是判断是否有定义CHIPNAME,如果有定义则设置临时变量_CHIPNAME,否则就设置为默认的stm32f0x。而在stm32f0x.cfg前可以设置CHIPNAME,比如set CHIPNAME stm32f0x。

常用变量约定:

1. CHIPNAME

命名CHIP的名字,比如stm32f0x。

2. ENDIAN

芯片的大小端模式,默认是小端,如果芯片不支持可以不设定。

3. CPUTAPID

当使用JTAG时,OpenOCD可以检测JTAG IDCODE寄存器。

4. _TARGETNAME

按照惯例,此变量由目标配置脚本(例如stm32f0x.cgf)创建。board配置文件可以使用这个变量来配置诸如“reset init”脚本之类的东西,或者特定于该板和该目标的其他东西。如果芯片有两个目标,则名称为_TARGETNAME0, _TARGETNAME1等等。

cfg文件中符号’#’表示注释,’$’表示引用

注意,运行配置时并不是按照配置的顺序执行的,例如执行

interface cmsis-dap

adapter_name

第二个是显示调试器的名字,但是执行的结果是:

cmsis-dap

Info : Listening on port 6666 for tcl connections

Info : Listening on port 4444 for telnet connections

Info : CMSIS-DAP: SWD  Supported

Info : CMSIS-DAP: JTAG Supported

Info : CMSIS-DAP: FW Version = 1.0

Info : CMSIS-DAP: Interface Initialised (JTAG)

Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 1 TDO = 1 nTRST = 0 nRESET = 1

Error: CMSIS-DAP command CMD_DAP_SWJ_CLOCK failed.

adapter_name返回的名字在前面。

还有,多个命令叠加时有可能打印的信息会被跳过,原因不知。例如

interface cmsis-dap

adapter_name

transport list

打印的信息就没有adapter_name的输出结果了

The following transports are available:

        jtag

        aice_jtag

        swd

        stlink_swim

        hla_jtag

        hla_swd

Info : Listening on port 6666 for tcl connections

Info : Listening on port 4444 for telnet connections

Info : CMSIS-DAP: SWD  Supported

Info : CMSIS-DAP: JTAG Supported

Info : CMSIS-DAP: FW Version = 1.0

Info : CMSIS-DAP: Interface Initialised (JTAG)

Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 1 TDO = 1 nTRST = 0 nRESET = 1

Error: CMSIS-DAP command CMD_DAP_SWJ_CLOCK failed.

什么是TAP?

TAP是Test Access Port的缩写,是JTAG的核心。TAPs提供多种功能,包括:

1. 调试(TAP cpu)

一个CPU TAP可以用于GDB调试

2. Flash编程(TAP flash)

一些芯片可以直接通过JTAG对flash进行编程。有些则不是,让CPU来做。

3. 程序下载

下载程序到RAM,然后运行这个程序(需要CPU支持)

4. 边界扫描(TAP bs)

大多数的CPU都支持边界扫描(边界扫描主要用于芯片内部测试)。

设置TAPs是配置文件的主要目的。

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值