Hello,
I'm trying to use the SKB501 Module from Skylab, containing a nRF52840.
Programming and Erasing the Chip with an Elpotronic Programmer works fine.
But Programming and Erasing just works once with a CMSIS-DAP Programmer. I tried a CMSIS-DAP from AliExpress (https://aliexpress.com/item/1005003843743542.html) and also the picoprobe firmware for RP2040, which also provides a CMSIS-DAP interface.
After erasing the flash with the Elpotronic Programmer, I can program the module one time with pyOCD together with one of the CMSIS-DAP Programmers. After this one time programming process, I can't reprogram or erase the device. I get the following error:
➜ minimal git:(f8f1133823) ✗ west build -b nrf52840_mdk -t flash
-- west build: running target flash
[0/1] Flashing nrf52840_mdk
-- west flash: rebuilding
ninja: no work to do.
-- west flash: using runner pyocd
-- runners.pyocd: Flashing file: /home/user/ncs/zephyr/samples/basic/minimal/build/zephyr/zephyr.hex
0001160 C No ACK received [__main__]
Traceback (most recent call last):
File "/home/user/.local/lib/python3.10/site-packages/pyocd/probe/cmsis_dap_probe.py", line 440, in read_dp
result = self._link.read_reg(reg_id, now=now)
File "/home/user/.local/lib/python3.10/site-packages/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 1066, in read_reg
return read_reg_cb()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 1060, in read_reg_cb
res = transfer.get_result()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 157, in get_result
self.daplink.flush()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/utility/concurrency.py", line 29, in _locking
return func(self, *args, **kwargs)
File "/home/user/.local/lib/python3.10/site-packages/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 870, in flush
self._read_packet()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/utility/concurrency.py", line 29, in _locking
return func(self, *args, **kwargs)
File "/home/user/.local/lib/python3.10/site-packages/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 1146, in _read_packet
decoded_data = cmd.decode_data(raw_data)
File "/home/user/.local/lib/python3.10/site-packages/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 478, in decode_data
data = self._decode_transfer_block_data(data)
File "/home/user/.local/lib/python3.10/site-packages/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 447, in _decode_transfer_block_data
self._check_response(data[3])
File "/home/user/.local/lib/python3.10/site-packages/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 368, 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 "/home/user/.local/lib/python3.10/site-packages/pyocd/__main__.py", line 161, in run
status = cmd.invoke()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/subcommands/load_cmd.py", line 96, in invoke
with session:
File "/home/user/.local/lib/python3.10/site-packages/pyocd/core/session.py", line 391, in __enter__
self.open()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/core/session.py", line 529, in open
self._board.init()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/board/board.py", line 139, in init
self.target.init()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/core/soc_target.py", line 147, in init
seq.invoke()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/utility/sequencer.py", line 213, in invoke
resultSequence.invoke()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/utility/sequencer.py", line 208, in invoke
resultSequence = call()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/coresight/dap.py", line 443, in _connect
connector.connect()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/coresight/dap.py", line 252, in connect
self._idr = self.read_idr()
File "/home/user/.local/lib/python3.10/site-packages/pyocd/coresight/dap.py", line 281, in read_idr
dpidr = self._probe.read_dp(DP_IDR, now=True)
File "/home/user/.local/lib/python3.10/site-packages/pyocd/probe/cmsis_dap_probe.py", line 443, in read_dp
raise self._convert_exception(error) from error
pyocd.core.exceptions.TransferError: No ACK received
FATAL ERROR: command exited with status 1: pyocd flash -e sector -t nrf52840 /home/user/ncs/zephyr/samples/basic/minimal/build/zephyr/zephyr.hex
FAILED: zephyr/cmake/flash/CMakeFiles/flash /home/user/ncs/zephyr/samples/basic/minimal/build/zephyr/cmake/flash/CMakeFiles/flash
cd /home/user/ncs/zephyr/samples/basic/minimal/build && /usr/bin/cmake -DTARGET=flash -DDEPENDENCIES="" -P /home/user/ncs/zephyr/cmake/flash/check_runner_dependencies.cmake && /usr/bin/cmake -E env /usr/bin/python3.10 -m west flash
ninja: build stopped: subcommand failed.
FATAL ERROR: command exited with status 1: /usr/bin/cmake --build /home/user/ncs/zephyr/samples/basic/minimal/build --target flash
Any idea how to fix this? Is the nRF52840 not compatible with CMSIS-DAP Programmers?
The Pinout of the SKB501 Module is as following. GND is connected to GND, VCC is connected to 3.3V. SWDIO/SWDCLK is connected to the programmer. RESET is connected with 10k to VCC. Do I need to connect more pins, or can I leave the remaining pins floating?
