pyocd / pyocd/pyOCD

pyOCD lpc55s69 "savemem" fails for size larger than 0x28000 using

Open
#804 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Example succeeds

pyocd commander -t lpc55s69 -c "savemem 0x00000000 0x00028000 dump.bin"
Saved 163840 bytes to dump.bin

Example fails

$ pyocd_launch commander -t lpc55s69 -c "savemem 0x00000000 0x00028001 dumppa.bin"
Error: transfer failed
Traceback (most recent call last):
  File "/home/jaakor01/workspace/pyOCD/pyocd/probe/cmsis_dap_probe.py", line 294, in read_ap_result_callback
    return result()
  File "/home/jaakor01/workspace/pyOCD/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 810, in read_reg_cb
    res = transfer.get_result()
  File "/home/jaakor01/workspace/pyOCD/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 141, in get_result
    self.daplink.flush()
  File "/home/jaakor01/workspace/pyOCD/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 665, in flush
    self._read_packet()
  File "/home/jaakor01/workspace/pyOCD/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 894, in _read_packet
    decoded_data = cmd.decode_data(raw_data)
  File "/home/jaakor01/workspace/pyOCD/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 449, in decode_data
    data = self._decode_transfer_data(data)
  File "/home/jaakor01/workspace/pyOCD/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 356, in _decode_transfer_data
    self._check_response(data[2])
  File "/home/jaakor01/workspace/pyOCD/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 335, in _check_response
    raise DAPAccessIntf.TransferFaultError()
pyocd.probe.pydapaccess.dap_access_api.DAPAccessIntf.TransferFaultError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/jaakor01/workspace/pyOCD/pyocd/tools/pyocd.py", line 709, in run
    result = self.command_list[cmd](args)
  File "/home/jaakor01/workspace/pyOCD/pyocd/tools/pyocd.py", line 991, in handle_savemem
    data = bytearray(self.target.aps[self.selected_ap].read_memory_block8(addr, count))
  File "/home/jaakor01/workspace/pyOCD/pyocd/core/memory_interface.py", line 102, in read_memory_block8
    mem = self.read8(addr)
  File "/home/jaakor01/workspace/pyOCD/pyocd/core/memory_interface.py", line 64, in read8
    return self.read_memory(addr, 8, now)
  File "/home/jaakor01/workspace/pyOCD/pyocd/coresight/ap.py", line 142, in _locking
    return func(self, *args, **kwargs)
  File "/home/jaakor01/workspace/pyOCD/pyocd/coresight/ap.py", line 583, in _read_memory
    result = read_mem_cb()
  File "/home/jaakor01/workspace/pyOCD/pyocd/coresight/ap.py", line 565, in read_mem_cb
    res = result_cb()
  File "/home/jaakor01/workspace/pyOCD/pyocd/coresight/dap.py", line 412, in read_ap_cb
    result = result_cb()
  File "/home/jaakor01/workspace/pyOCD/pyocd/probe/cmsis_dap_probe.py", line 297, in read_ap_result_callback
    six.raise_from(self._convert_exception(error), error)
  File "<string>", line 3, in raise_from
pyocd.core.exceptions.TransferFaultError: SWD/JTAG Transfer Fault @ 0x00028000-0x00028000

Note: Using default onboard debug probe, not updated to DAPLINK.

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 with handle_savemem in pyocd/tools/pyocd.py and follow its read_memory_block8 call through the memory and probe layers named in the traceback. Reproduce the lpc55s69 commands with the onboard debug probe, then verify that reads larger than 0x28000 complete successfully without a transfer fault.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli, embedded-iot
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.