pyocd / pyocd/pyOCD

TransferTimeoutError for LPC546xx

Open
#406 9 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug needs feedback target
Dominant language
Python
Stars
1.5k
Forks
560
Avg merge
1h 41m
Merged PRs (30d)
3

Description

While debugging LPC546XX, using pyocd 0.12.0, I get the following error.

0000246:WARNING:svd:Failed to load SVD file LPC54608.svd
0000247:INFO:cmsis_dap_core:DAP SWD MODE initialized
0000263:INFO:dap:DP IDR = 0x2ba01477
0000276:INFO:dap:AP#0 IDR = 0x24770011
0000287:INFO:rom_table:AP#0 ROM table #0 @ 0xe00ff000 (designer=43b part=4c4)
0000296:INFO:rom_table:[0]<e000e000:SCS-M4 class=14 designer=43b part=00c>
0000302:INFO:rom_table:[1]<e0001000:DWT class=14 designer=43b part=002>
0000308:INFO:rom_table:[2]<e0002000:FPB class=14 designer=43b part=003>
0000315:INFO:rom_table:[3]<e0000000:ITM class=14 designer=43b part=001>
0000320:INFO:rom_table:[4]<e0040000:TPIU-M4 class=9 designer=43b part=9a1 devtype=11 archid=0000 devid=0:0:ca1>
0000325:INFO:rom_table:[5]<e0041000:ETM-M4 class=9 designer=43b part=925 devtype=13 archid=0000 devid=0:0:0>
0000332:INFO:cortex_m:CPU core is Cortex-M4
0000338:INFO:cortex_m:FPU present
0000345:INFO:dwt:4 hardware watchpoints
0000348:INFO:fpb:6 hardware breakpoints, 4 literal comparators
0000358:INFO:semihost:Telnet: server started on port 4444
0000358:INFO:gdbserver:GDB server started at port:3333
Started by GNU MCU Eclipse
0000803:INFO:gdbserver:One client connected!
0000957:INFO:gdbserver:Semihosting enabled
0001157:INFO:gdbserver:Attempting to load Argon
0001158:INFO:gdbserver:Attempting to load RTX5
0001158:INFO:gdbserver:RTX5 loaded successfully
[---|---|---|---|---|---|---|---|---|----]
[========================================]
0027144:INFO:flash_builder:Programmed 444348 bytes (14 pages) at 17.02 kB/s
0035197:ERROR:gdbserver:Unhandled exception in handleMsg: 
Traceback (most recent call last):
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\gdbserver.py", line 530, in handleMsg
    reply = handler()
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\gdbserver.py", line 964, in getRegisters
    return self.createRSPPacket(self.target_facade.getRegisterContext())
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\context_facade.py", line 55, in getRegisterContext
    vals = self._context.readCoreRegistersRaw(reg_num_list)
  File "c:\python27\lib\site-packages\pyOCD\rtos\rtx5.py", line 138, in readCoreRegistersRaw
    inException = self._get_ipsr() > 0
  File "c:\python27\lib\site-packages\pyOCD\rtos\rtx5.py", line 195, in _get_ipsr
    return self._parent.readCoreRegister('xpsr') & 0xff
  File "c:\python27\lib\site-packages\pyOCD\debug\context.py", line 87, in readCoreRegister
    regValue = self.readCoreRegisterRaw(regIndex)
  File "c:\python27\lib\site-packages\pyOCD\debug\context.py", line 99, in readCoreRegisterRaw
    vals = self.readCoreRegistersRaw([reg])
  File "c:\python27\lib\site-packages\pyOCD\debug\cache.py", line 484, in readCoreRegistersRaw
    return self._regcache.readCoreRegistersRaw(reg_list)
  File "c:\python27\lib\site-packages\pyOCD\debug\cache.py", line 111, in readCoreRegistersRaw
    self._check_cache()
  File "c:\python27\lib\site-packages\pyOCD\debug\cache.py", line 88, in _check_cache
    if self._context.core.isRunning():
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 630, in isRunning
    return self.getState() == Target.TARGET_RUNNING
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 607, in getState
    dhcsr = self.readMemory(CortexM.DHCSR)
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 441, in readMemory
    result = self.ap.readMemory(addr, transfer_size, now)
  File "c:\python27\lib\site-packages\pyOCD\coresight\ap.py", line 258, in readMemory
    result = readMemCb()
  File "c:\python27\lib\site-packages\pyOCD\coresight\ap.py", line 240, in readMemCb
    res = result_cb()
  File "c:\python27\lib\site-packages\pyOCD\coresight\dap.py", line 316, in readAPCb
    result = result_cb()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 663, in read_reg_cb
    res = transfer.get_result()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 119, in get_result
    self.daplink.flush()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 594, in flush
    self._read_packet()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 749, in _read_packet
    decoded_data = cmd.decode_data(raw_data)
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 419, in decode_data
    data = self._decode_transfer_data(data)
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 317, in _decode_transfer_data
    raise DAPAccessIntf.TransferTimeoutError()
TransferTimeoutError
0051846:ERROR:gdbserver:Unhandled exception in handleMsg: 
Traceback (most recent call last):
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\gdbserver.py", line 532, in handleMsg
    reply = handler(msg[msgStart:])
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\gdbserver.py", line 753, in vCommand
    return self.vCont(cmd)
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\gdbserver.py", line 804, in vCont
    return self.resume(None)
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\gdbserver.py", line 676, in resume
    self.target.resume()
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 639, in resume
    if self.getState() != Target.TARGET_HALTED:
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 607, in getState
    dhcsr = self.readMemory(CortexM.DHCSR)
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 441, in readMemory
    result = self.ap.readMemory(addr, transfer_size, now)
  File "c:\python27\lib\site-packages\pyOCD\coresight\ap.py", line 258, in readMemory
    result = readMemCb()
  File "c:\python27\lib\site-packages\pyOCD\coresight\ap.py", line 240, in readMemCb
    res = result_cb()
  File "c:\python27\lib\site-packages\pyOCD\coresight\dap.py", line 316, in readAPCb
    result = result_cb()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 663, in read_reg_cb
    res = transfer.get_result()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 119, in get_result
    self.daplink.flush()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 594, in flush
    self._read_packet()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 749, in _read_packet
    decoded_data = cmd.decode_data(raw_data)
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 419, in decode_data
    data = self._decode_transfer_data(data)
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 317, in _decode_transfer_data
    raise DAPAccessIntf.TransferTimeoutError()
TransferTimeoutError
0051855:ERROR:gdbserver:Unhandled exception in handleMsg: 
Traceback (most recent call last):
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\gdbserver.py", line 530, in handleMsg
    reply = handler()
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\gdbserver.py", line 964, in getRegisters
    return self.createRSPPacket(self.target_facade.getRegisterContext())
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\context_facade.py", line 55, in getRegisterContext
    vals = self._context.readCoreRegistersRaw(reg_num_list)
  File "c:\python27\lib\site-packages\pyOCD\rtos\rtx5.py", line 138, in readCoreRegistersRaw
    inException = self._get_ipsr() > 0
  File "c:\python27\lib\site-packages\pyOCD\rtos\rtx5.py", line 195, in _get_ipsr
    return self._parent.readCoreRegister('xpsr') & 0xff
  File "c:\python27\lib\site-packages\pyOCD\debug\context.py", line 87, in readCoreRegister
    regValue = self.readCoreRegisterRaw(regIndex)
  File "c:\python27\lib\site-packages\pyOCD\debug\context.py", line 99, in readCoreRegisterRaw
    vals = self.readCoreRegistersRaw([reg])
  File "c:\python27\lib\site-packages\pyOCD\debug\cache.py", line 484, in readCoreRegistersRaw
    return self._regcache.readCoreRegistersRaw(reg_list)
  File "c:\python27\lib\site-packages\pyOCD\debug\cache.py", line 111, in readCoreRegistersRaw
    self._check_cache()
  File "c:\python27\lib\site-packages\pyOCD\debug\cache.py", line 88, in _check_cache
    if self._context.core.isRunning():
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 630, in isRunning
    return self.getState() == Target.TARGET_RUNNING
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 607, in getState
    dhcsr = self.readMemory(CortexM.DHCSR)
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 441, in readMemory
    result = self.ap.readMemory(addr, transfer_size, now)
  File "c:\python27\lib\site-packages\pyOCD\coresight\ap.py", line 258, in readMemory
    result = readMemCb()
  File "c:\python27\lib\site-packages\pyOCD\coresight\ap.py", line 240, in readMemCb
    res = result_cb()
  File "c:\python27\lib\site-packages\pyOCD\coresight\dap.py", line 316, in readAPCb
    result = result_cb()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 663, in read_reg_cb
    res = transfer.get_result()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 119, in get_result
    self.daplink.flush()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 594, in flush
    self._read_packet()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 749, in _read_packet
    decoded_data = cmd.decode_data(raw_data)
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 419, in decode_data
    data = self._decode_transfer_data(data)
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 317, in _decode_transfer_data
    raise DAPAccessIntf.TransferTimeoutError()
TransferTimeoutError
0051931:ERROR:gdbserver:Unhandled exception in handleMsg: 
Traceback (most recent call last):
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\gdbserver.py", line 530, in handleMsg
    reply = handler()
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\gdbserver.py", line 964, in getRegisters
    return self.createRSPPacket(self.target_facade.getRegisterContext())
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\context_facade.py", line 55, in getRegisterContext
    vals = self._context.readCoreRegistersRaw(reg_num_list)
  File "c:\python27\lib\site-packages\pyOCD\rtos\rtx5.py", line 138, in readCoreRegistersRaw
    inException = self._get_ipsr() > 0
  File "c:\python27\lib\site-packages\pyOCD\rtos\rtx5.py", line 195, in _get_ipsr
    return self._parent.readCoreRegister('xpsr') & 0xff
  File "c:\python27\lib\site-packages\pyOCD\debug\context.py", line 87, in readCoreRegister
    regValue = self.readCoreRegisterRaw(regIndex)
  File "c:\python27\lib\site-packages\pyOCD\debug\context.py", line 99, in readCoreRegisterRaw
    vals = self.readCoreRegistersRaw([reg])
  File "c:\python27\lib\site-packages\pyOCD\debug\cache.py", line 484, in readCoreRegistersRaw
    return self._regcache.readCoreRegistersRaw(reg_list)
  File "c:\python27\lib\site-packages\pyOCD\debug\cache.py", line 111, in readCoreRegistersRaw
    self._check_cache()
  File "c:\python27\lib\site-packages\pyOCD\debug\cache.py", line 88, in _check_cache
    if self._context.core.isRunning():
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 630, in isRunning
    return self.getState() == Target.TARGET_RUNNING
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 607, in getState
    dhcsr = self.readMemory(CortexM.DHCSR)
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 441, in readMemory
    result = self.ap.readMemory(addr, transfer_size, now)
  File "c:\python27\lib\site-packages\pyOCD\coresight\ap.py", line 258, in readMemory
    result = readMemCb()
  File "c:\python27\lib\site-packages\pyOCD\coresight\ap.py", line 240, in readMemCb
    res = result_cb()
  File "c:\python27\lib\site-packages\pyOCD\coresight\dap.py", line 316, in readAPCb
    result = result_cb()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 663, in read_reg_cb
    res = transfer.get_result()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 119, in get_result
    self.daplink.flush()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 594, in flush
    self._read_packet()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 749, in _read_packet
    decoded_data = cmd.decode_data(raw_data)
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 419, in decode_data
    data = self._decode_transfer_data(data)
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 317, in _decode_transfer_data
    raise DAPAccessIntf.TransferTimeoutError()
TransferTimeoutError
0051943:ERROR:gdbserver:Unhandled exception in handleMsg: 
Traceback (most recent call last):
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\gdbserver.py", line 530, in handleMsg
    reply = handler()
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\gdbserver.py", line 964, in getRegisters
    return self.createRSPPacket(self.target_facade.getRegisterContext())
  File "c:\python27\lib\site-packages\pyOCD\gdbserver\context_facade.py", line 55, in getRegisterContext
    vals = self._context.readCoreRegistersRaw(reg_num_list)
  File "c:\python27\lib\site-packages\pyOCD\rtos\rtx5.py", line 138, in readCoreRegistersRaw
    inException = self._get_ipsr() > 0
  File "c:\python27\lib\site-packages\pyOCD\rtos\rtx5.py", line 195, in _get_ipsr
    return self._parent.readCoreRegister('xpsr') & 0xff
  File "c:\python27\lib\site-packages\pyOCD\debug\context.py", line 87, in readCoreRegister
    regValue = self.readCoreRegisterRaw(regIndex)
  File "c:\python27\lib\site-packages\pyOCD\debug\context.py", line 99, in readCoreRegisterRaw
    vals = self.readCoreRegistersRaw([reg])
  File "c:\python27\lib\site-packages\pyOCD\debug\cache.py", line 484, in readCoreRegistersRaw
    return self._regcache.readCoreRegistersRaw(reg_list)
  File "c:\python27\lib\site-packages\pyOCD\debug\cache.py", line 111, in readCoreRegistersRaw
    self._check_cache()
  File "c:\python27\lib\site-packages\pyOCD\debug\cache.py", line 88, in _check_cache
    if self._context.core.isRunning():
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 630, in isRunning
    return self.getState() == Target.TARGET_RUNNING
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 607, in getState
    dhcsr = self.readMemory(CortexM.DHCSR)
  File "c:\python27\lib\site-packages\pyOCD\coresight\cortex_m.py", line 441, in readMemory
    result = self.ap.readMemory(addr, transfer_size, now)
  File "c:\python27\lib\site-packages\pyOCD\coresight\ap.py", line 258, in readMemory
    result = readMemCb()
  File "c:\python27\lib\site-packages\pyOCD\coresight\ap.py", line 240, in readMemCb
    res = result_cb()
  File "c:\python27\lib\site-packages\pyOCD\coresight\dap.py", line 316, in readAPCb
    result = result_cb()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 663, in read_reg_cb
    res = transfer.get_result()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 119, in get_result
    self.daplink.flush()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 594, in flush
    self._read_packet()
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 749, in _read_packet
    decoded_data = cmd.decode_data(raw_data)
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 419, in decode_data
    data = self._decode_transfer_data(data)
  File "c:\python27\lib\site-packages\pyOCD\pyDAPAccess\dap_access_cmsis_dap.py", line 317, in _decode_transfer_data
    raise DAPAccessIntf.TransferTimeoutError()
TransferTimeoutError

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the LPC546xx session with pyOCD 0.12.0 and follow the traceback through gdbserver.py, rtx5.py, cortex_m.py, and pyDAPAccess/dap_access_cmsis_dap.py, especially _decode_transfer_data(). Trace the CMSIS-DAP transfer response that raises TransferTimeoutError; done means the reported debugging flow no longer produces the unhandled exception.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
devtools, embedded-iot
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.