Other Parts Discussed in Thread: CODECOMPOSER
Tool/software:
Is there a way to enable the CAN peripherals while a debug session is paused?
I'm writing unit tests via DSS, I'd like my test script to pause the application, write a CAN msg, then manually invoke the application's CAN RX interrupt:
# get the current location where DSSUtils paused (at end of initialization() called from stdby_Init())
curLocation = self.__class__.dss_utils.debug_session.memory.readRegister("PC")
# send a valid NOP cmd
msgt = ntcanfd.CanMsgT()
msgt.id11 = 0x018
msgt.set_data8_len(8)
msgt.set_data8_byte(0x11, 0x0, 0x0, 0x13, 0x88, 0xFF, 0xFF, 0x0)
# send CAN message in background
result = self.can_net1.can_send(msgt)
# invoke the CAN RX interrupt to make the application receive the CAN msg
self.__class__.dss_utils.debug_session.memory.writeRegister("PC", CAN_rx_isr_start_address)
bp = self.__class__.dss_utils.debug_session.breakpoint.add(CAN_rx_isr_end_address)
self.__class__.dss_utils.debug_session.target.run()
self.__class__.dss_utils.debug_session.breakpoint.remove(bp)
# go back to the previous location (end of initialization())
self.__class__.dss_utils.debug_session.memory.writeRegister("PC", curLocation)
# continue to the end of stdby_Init
bp = self.__class__.dss_utils.debug_session.breakpoint.add(stdby_Init_end_address)
self.__class__.dss_utils.debug_session.target.run()
self.__class__.dss_utils.debug_session.breakpoint.remove(bp)
However, whenever the debug session is paused, the CAN message is not being transmitted (I'm monitoring all CAN traffic with an external tool, ESD's CANreal).
If instead of pausing the application, I let it run in the background (via debug_session.target.runAsynch()), the CAN msg is transmitted successfully.
Thank you




