【Trace32】使用Python调用cmm脚本,实现劳特巴赫Trace32的自动化操作

文章目录

  • 1. cmm脚本命令
  • 2. 使用python调用cmm脚本

1. cmm脚本命令

cmm脚本自动化操作Trace32的常用命令如下:

注:
1.cmm脚本命令不区分大小写
2.;分号为cmm脚本的注释

1.重启单板

SYStem.RESetTarget 
r.s pc _start

注:SYStem.RESetTarget 相当于执行了可视化界面中的 In Target Reset

2.文件操作

; 打开 result.txt 文件,如果文件不存在就创建
OPEN #1 D:\result.txt /CREATE

; 关闭 result.txt 文件
CLOSE #1

注:#1就是文件指针,相当于 f=open("result.txt","wb") 中的 f

3.打印信息

; 表示将来有打印的信息,将会保存到 result.txt 文件中
Printer.File D:\result.txt

; 表示把 g_result 变量打印到文件中,此时会打印到 D:\result.txt 文件中
winprint.var.watch g_result

4.观测变量

; 在watch窗口显示 g_result 变量的值
Var.Watch g_result

5.运行和结束程序

; 运行程序
Go

;停止运行程序
Break

6.运行程序,并走到函数内部停下(断住)

; 运行程序,走到 max 函数首行停下
Go.direct max

; 运行程序,走到 max 函数内部停下
Go.direct max+0x08

注:
1.max+0x08,其中的0x08为相对于max函数首行的偏移量
2.想要知道函数内部某行的断点地址是多少,可以先手动断点跑,断住以后观测劳特巴赫左下角就能知道断点地址

7.打断点和取消断点

; 在 max 函数首行打断点
Break.Set max

; 在 max 函数内部打断点
Break.Set max+0x08
; 清除所有断点
Break.Reset

; 清除某个断点
Break.Reset 断点地址

8.等待上一条命令执行结束

Wait !run()

注:Go.direct 等命令,需要配合该命令使用,否则脚本运行的时候可能会报错,因为程序运行到某个函数还需要时间,如果还没运行到此处,就执行下一条命令,可能会报错。

例:以下命令表示,运行到max函数,然后返回函数的值

Go.direct max
Wait !run()
Go.Return

解析:如果说,此时还未走到 max 函数中,就执行了Go.Return语句,那么此时没有值可以返回,就会报错,因此此处需要加上 Wait !run()

9.延时等待

; 延时等待1秒
wait 1.s 

10.设置变量值

; 设置变量 g_result 的值为1
V %e g_result = 1

11.加载源代码

; 加载Code文件夹下的源代码
y.spath.SetRecurseDir  D:\Code

12.烧录elf文件

; 执行 test.cmm 脚本来烧录test.elf文件
c:/T32/bin/windows64/t32rem.exe localhost port=20000 do test.cmm test.elf

注:test.cmm 脚本是用例烧录 elf 的 cmm 脚本

2. 使用python调用cmm脚本

t32rem.exe 可以用于执行cmm命令,根据Trace32的默认安装路径可知,t32rem.exe 的默认路径为 C:\T32\bin\Windows64\t32rem.exe

t32rem.exe可用于执行单行cmm命令,也可以直接执行cmm脚本,语法如下:

执行单行cmm命令:

t32rem.exe localhost port=20000 cmm命令

执行cmm脚本:

t32rem.exe localhost port=20000 do cmm脚本

注:localhost表示本机,port=20000为Trace32的默认端口号

使用python执行cmm命令:以重启单板为例

1.使用python执行单行cmm命令

import os

# 重启单板并运行
cmd1 = "C:/T32/bin/Windows64/t32rem.exe localhost port=20000 SYStem.RESetTarget"
cmd2 = "C:/T32/bin/Windows64/t32rem.exe localhost port=20000 r.s pc _start"
cmd3 = "C:/T32/bin/Windows64/t32rem.exe localhost port=20000 Go"
os.system(cmd1)
os.system(cmd2)
os.system(cmd3)

2.使用python执行cmm脚本

新建文件 restart.cmm,内容如下:

SYStem.RESetTarget
r.s pc _start
Go

在同级目录下,再新建一个test.py,内容如下:

import os

# 重启单板并运行
cmd = "C:/T32/bin/Windows64/t32rem.exe localhost port=20000 do restart.cmm"
os.system(cmd)

你可能感兴趣的:(Trace32,cmm脚本,practice脚本,劳特巴赫,自动化,python)