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?