No ACK when connecting to MAX32625PICO via USB
Open
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.5k
- Forks
- 560
- Avg merge
- 1h 41m
- Merged PRs (30d)
- 3
Description
OS: Windows 11
Python: 3.10.0
pyOCD: 0.36.0
Target: MAX32625PICO development board
I have a MAX32625PICO development board connected to my PC via a USB cable. Listing available devices (pyOCD list) successfully finds it:
# Probe/Board Unique ID Target
----------------------------------------------------------------------------------------
0 Arm CMSIS-DAP v1 04161701a0b903f800000000000000000000000097969906 ✔︎ max32625
Analog Devices MAX32625PICO
However, when I try to reset it (pyOCD reset -v -v) I get:
>pyOCD reset -v -v
0001099 D Project directory: C:\Windows\System32 [session]
0001162 D Project directory: C:\Windows\System32 [session]
0001177 D CMSIS-DAP v1 probe 04161701a0b903f800000000000000000000000097969906: firmware version 0259, protocol version 2.1.0 [dap_access_cmsis_dap]
0001177 D closing interface [hidapi_backend]
0001193 I Target type is max32625 [board]
0001193 D Board: Analog Devices MAX32625PICO [cmsis_dap_probe]
0001193 D Target: Maxim MAX32625 [cmsis_dap_probe]
0001208 D Running task load_svd [sequencer]
0001208 D Running task pre_connect [sequencer]
0001208 D Running task dp_init [sequencer]
0001208 D Running task lock_probe [sequencer]
0001208 D Running task get_probe_capabilities [sequencer]
0001222 D Running task connect [sequencer]
0001240 D Default wire protocol selected; using SWD [dap]
0001256 D Sending deprecated SWJ sequence to select SWD [swj]
0001381 D DP IDCODE read failed; resending SWJ sequence (use dormant=False) [dap]
0001381 D Sending deprecated SWJ sequence to select SWD [swj]
0001397 D DP IDCODE read failed; resending SWJ sequence (use dormant=False) [dap]
0001397 D Sending SWJ sequence to select SWD; using dormant state [swj]
0001412 D DP IDCODE read failed; resending SWJ sequence (use dormant=False) [dap]
0001412 D Sending SWJ sequence to select SWD; using dormant state [swj]
0001428 D DP IDCODE read failed; resending SWJ sequence (use dormant=False) [dap]
0001428 D uninit session <pyocd.core.session.Session object at 0x000002602A4315A0> [session]
0001428 D closing interface [hidapi_backend]
0001428 C No ACK received [__main__]
Traceback (most recent call last):
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\probe\cmsis_dap_probe.py", line 539, in read_dp
result = self._link.read_reg(reg_id, now=now)
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 1086, in read_reg
return read_reg_cb()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 1080, in read_reg_cb
res = transfer.get_result()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 161, in get_result
self.daplink.flush()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\utility\concurrency.py", line 29, in _locking
return func(self, *args, **kwargs)
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 885, in flush
self._read_packet()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\utility\concurrency.py", line 29, in _locking
return func(self, *args, **kwargs)
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 1166, in _read_packet
decoded_data = cmd.decode_data(raw_data)
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 482, in decode_data
data = self._decode_transfer_block_data(data)
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 451, in _decode_transfer_block_data
self._check_response(data[3])
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 372, in _check_response
raise DAPAccessIntf.TransferError("No ACK received")
pyocd.probe.pydapaccess.dap_access_api.DAPAccessIntf.TransferError: No ACK received
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\__main__.py", line 161, in run
status = cmd.invoke()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\subcommands\reset_cmd.py", line 107, in invoke
session.open(init_board=(not is_hw_reset))
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\core\session.py", line 553, in open
self._board.init()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\board\board.py", line 143, in init
self.target.init()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\coresight\coresight_target.py", line 123, in init
super().init()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\core\soc_target.py", line 174, in init
seq.invoke()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\utility\sequencer.py", line 213, in invoke
resultSequence.invoke()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\utility\sequencer.py", line 208, in invoke
resultSequence = call()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\coresight\dap.py", line 467, in _connect
connector.connect()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\coresight\dap.py", line 257, in connect
self._idr = self.read_idr()
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\coresight\dap.py", line 286, in read_idr
dpidr = self._probe.read_dp(DP_IDR, now=True)
File "C:\Users\kieran\AppData\Local\Programs\Python\Python310\lib\site-packages\pyocd\probe\cmsis_dap_probe.py", line 542, in read_dp
raise self._convert_exception(error) from error
pyocd.core.exceptions.TransferError: No ACK received
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the pyOCD reset -v -v entry point and trace the CMSIS-DAP connection through pyocd/probe/pydapaccess/dap_access_cmsis_dap.py and pyocd/coresight/dap.py. Compare the successful pyOCD list path with the failed DP IDCODE reads, and verify the MAX32625PICO can reset successfully without the No ACK received error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- embedded-iot
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100