Python RCL 调试劳德巴赫

Python RCL 调试劳德巴赫

  • 比较旧的调试方式是TRACE32 Remote API, 看起来比较麻烦

  • 新的是RCL

  • trace32的安装路径下有官方的python教程, 用浏览器可以打开

    • /demo/api/python/rcl/doc/html/index.html
  • 需要先安装python库, 也在trace32安装路径下

    • /demo/api/python/rcl/doc/dist
    • pip install lauterbach_trace32_rcl-latest-py3-none-any.whl
  • 原理是python与Trace32客户端通过TCP通信, 所以需要先配置config.t32文件, 填入端口等等

    <mandatory blank line>
    
    RCL=NETASSIST
    PORT=20000
    PACKLEN=1024
    
    RCL=NETTCP
    PORT=20000
    
    <mandatory blank line>
    
  • 然后先打开trace32, 再在python中连接

    import lauterbach.trace32.rcl as t32
    dbg = t32.connect(node='localhost', port=20000, protocol="TCP", timeout=10.0)
    dbg.print("Hello World!")
    
  • 点进rcl可以看到提供的接口, 这里用类封装了一些常用的, 比如调用cmm脚本, 打印, 暂停, 继续, 设置系统变量等; 还有设置地址,变量,控制内存,断点等等功能

import lauterbach.trace32.rcl as t32
import datetime
import time

def time_now():
  return datetime.datetime.now().strftime("[%Y-%m-%d %H:%M:%S]")

class classLauterbach():
  def __init__(self) -> None:
    self.dbg = t32.connect(node="localhost", port=20000, protocol="TCP", timeout=10.0)

  def print(self, msg):
    self.dbg.print(msg)

  def my_script(self):
    self.dbg.cmm(cmd="./my_script.cmm", timeout=15.0)
    
  def pause(self):
    self.dbg.break_()
    self.dbg.print(f"{time_now()} mcu pause")

  def go(self):
    self.dbg.go()
    self.dbg.print(f"{time_now()} mcu go")

  def system_down(self):
    self.dbg.cmd("SYStem.Mode Down")
    self.dbg.print(f"{time_now()} mcu system down")

  def system_up(self):
    self.dbg.cmd("SYStem.Mode Up")
    self.dbg.print(f"{time_now()} mcu system up")

if __name__ == '__main__':
  Lauterbach = classLauterbach()
  Lauterbach.system_up()
  print(f"{time_now()} system up")
  time.sleep(30)
  Lauterbach.pause()
  time.sleep(30)
  Lauterbach.go()
  time.sleep(30)

ref

Python 脚本调用trace32自动执行

你可能感兴趣的:(单片机,python,嵌入式硬件)