m1n1/proxyclient/hv/trace_i2c.py
Hector Martin 3d523f27ad hv/trace_i2c.py: New example trace script
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-01-16 19:39:03 +09:00

41 lines
1.1 KiB
Python

# SPDX-License-Identifier: MIT
from m1n1.trace.i2c import I2CTracer
I2CTracer = I2CTracer._reloadcls()
i2c_tracers = {}
for node in hv.adt["/arm-io"]:
if node.name.startswith("i2c"):
n = int(node.name[3:])
i2c_tracers[n] = I2CTracer(hv, f"/arm-io/i2c{n}", verbose=0)
i2c_tracers[n].stop()
i2c_tracers[n].start()
if hv.ctx:
for irq in getattr(node, "interrupts"):
hv.trace_irq(node.name, irq, 1, hv.IRQTRACE_IRQ)
from m1n1.gpiola import GPIOLogicAnalyzer
if not hv.started:
for cpu in list(hv.adt["cpus"]):
if cpu.name == "cpu3":
print(f"Removing ADT node {cpu._path}")
del hv.adt["cpus"][cpu.name]
if not hv.started or hv.ctx is not None:
m = GPIOLogicAnalyzer(u, "arm-io/gpio",
pins={"scl": 0xc9, "sda": 0xc7},
div=1, on_pin_change=True, cpu=3)
m.load_regmap(list(i2c_tracers[1].regmaps.values())[0],
regs={"SMSTA", "XFSTA"})
def start_la():
m.start(1000000, bufsize=0x80000)
hv.cont()
def stop_la():
m.complete()
m.show()