TRACE32——Go.direct

TRACE32——Go.direct

TRACE32调试过程中,会经常对芯片/内核进行控制,比如全速运行、暂停、单步等等。这篇文章先介绍全速运行Go.direct :

Go   //等同于Go.direct

Go命令一般用于控制芯片/内核的全速、实时运行,命令不区分大小写,也可以缩写成一个字母

g

该命令等同于TRACE32主界面点击如下快捷按钮:

TRACE32——Go.direct_第1张图片

或者等同于TRACE32菜单栏的Run-Go按钮

或者使用键盘F7进行控制:

TRACE32——Go.direct_第2张图片

执行Go命令或者点击Go按钮后,TRACE32界面的右下角会显示running,表示当前CPU的状态。

TRACE32——Go.direct_第3张图片

如果此时重复执行*Go*命令或者重复点击Go按钮,会出现错误提示emulation running ,提示您当前CPU已经处于运行状态了。

TRACE32——Go.direct_第4张图片

如果设有**断点(Break.list)/事件捕获(TrOnchip.state)**等停止条件,点击Go按钮后,CPU可能会自动被暂停,TRACE32窗口右下角会显示对应的状态:

除此之外,基于Go命令还有一些衍生的命令或者用法:

结合程序断点使用

正常我们设置好断点后,都需要点击Go,来使CPU内核跑起来并达到断点处:

Break.set myfunc
Go

我们也可以把上面两个命令结合起来:

Go myfunc

这样我们可以把程序一直运行到myfunc函数的入口处。

当然,写地址效果是一样的:

Go 0x40300210

结合读写断点使用

Var.go myvar /Write

这条命令便可以把程序运行到myvar变量被改写的位置。

快速回到上一层函数

有时,当程序正好停在某一个函数内,例如下图的func8(),我希望快速地执行完当前函数的所有代码,并返回到上一层调用者的位置:

TRACE32——Go.direct_第5张图片

我们可以使用如下命令

Go.up

执行完后,可以看到PC指针已经跳出func8()

TRACE32——Go.direct_第6张图片

上面介绍的Go命令,不等同于 System.Mode Go ,也就是说不等同于如下窗口的Go按钮

TRACE32——Go.direct_第7张图片

此处Go按钮的完整作用是:

Step1:复位芯片(如果接有复位信号)

Step2:TRACE32尝试连上芯片内核并建立调试通信

Step3: 控制芯片内核全速运行

关于Go命令的更多介绍,请参考如下文档:

  • \pdf\general_ref_g.pdf\Go章节
  • https://www2.lauterbach.com/pdf/general_ref_g.pdf

你可能感兴趣的:(车载,汽车)