Hello,
The regular upload is not working anymore with my xiao-nrf54l15 board. So I am trying to unlock via mass erase as a workaround:
Do you know how to fix this error?
* Executing task: C:\Users\user\.platformio\penv\Scripts\platformio.exe run --target upload --environment seeed-xiao-nrf54l15
Processing seeed-xiao-nrf54l15 (platform: https://github.com/Seeed-Studio/platform-seeedboards.git; framework: zephyr; board: seeed-xiao-nrf54l15)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
board id is nrf,will call board_build/nrf/nrf_build.py
CONFIGURATION: https://docs.platformio.org/page/boards/Seeed Studio/seeed-xiao-nrf54l15.html
PLATFORM: Seeed Studio Xiao Series (1.0.0+sha.47379f3) > Seeed Studio XIAO nRF54L15
HARDWARE: NRF54L15 128MHz, 256KB RAM, 1.50MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, jlink)
PACKAGES:
- framework-zephyr @ 3.40100.0 (4.1.0)
- tool-bossac-nordicnrf52 @ 1.10901.201022 (1.9.1)
- tool-cmake @ 3.30.2
- tool-dtc @ 1.4.7
- tool-ninja @ 1.9.0
- tool-openocd @ 3.1200.0 (12.0)
- tool-sreccat @ 1.164.0 (1.64)
- toolchain-gccarmnoneeabi @ 1.80201.181220 (8.2.1)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 0 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Checking size .pio\build\seeed-xiao-nrf54l15\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [ ] 2.3% (used 6084 bytes from 262144 bytes)
Flash: [ ] 1.7% (used 27508 bytes from 1572864 bytes)
Configuring upload protocol...
AVAILABLE: cmsis-dap, custom, jlink
CURRENT: upload_protocol = custom
Uploading .pio\build\seeed-xiao-nrf54l15\firmware.hex
2025-09-05 13:05:42,328 [INFO] Auto-selected probe: 92CC15C9 (Seeed Studio Seeed Studio XIAO nrf54 CMSIS-DAP)
2025-09-05 13:05:42,329 [INFO] Connecting to target...
2025-09-05 13:05:42,429 [INFO] Target type is nrf54l
2025-09-05 13:05:42,483 [INFO] Asserting reset prior to connect
2025-09-05 13:05:42,560 [INFO] DP IDR = 0x6ba02477 (v2 rev6)
2025-09-05 13:05:42,649 [INFO] AHB-AP#0 IDR = 0x84770001 (AHB-AP var0 rev8)
2025-09-05 13:05:42,663 [INFO] AHB-AP#1 IDR = 0x84770001 (AHB-AP var0 rev8)
2025-09-05 13:05:42,673 [INFO] AP#2 IDR = 0x32880000 (AP var0 rev3)
2025-09-05 13:05:42,673 [INFO] Checking CTRL-AP IDR
2025-09-05 13:05:42,697 [WARNING] NRF54L15 APPROTECT enabled: will try to unlock via mass erase
2025-09-05 13:05:43,424 [INFO] AHB-AP#0 Class 0x1 ROM table #0 @ 0xe00fe000 (designer=244 part=01c)
2025-09-05 13:05:43,427 [INFO] [0]<e00ff000:ROM class=1 designer=43b:Arm part=4c9>
2025-09-05 13:05:43,428 [INFO] AHB-AP#0 Class 0x1 ROM table #1 @ 0xe00ff000 (designer=43b:Arm part=4c9)
2025-09-05 13:05:43,432 [INFO] [0]<e000e000:SCS M33 class=9 designer=43b:Arm part=d21 devtype=00 archid=2a04 devid=0:0:0>
2025-09-05 13:05:43,435 [INFO] [1]<e0001000:DWT M33 class=9 designer=43b:Arm part=d21 devtype=00 archid=1a02 devid=0:0:0>
2025-09-05 13:05:43,437 [INFO] [2]<e0002000:BPU M33 class=9 designer=43b:Arm part=d21 devtype=00 archid=1a03 devid=0:0:0>
2025-09-05 13:05:43,440 [INFO] [3]<e0000000:ITM M33 class=9 designer=43b:Arm part=d21 devtype=43 archid=1a01 devid=0:0:0>
2025-09-05 13:05:43,448 [INFO] [5]<e0041000:ETM M33 class=9 designer=43b:Arm part=d21 devtype=13 archid=4a13 devid=0:0:0>
2025-09-05 13:05:43,454 [INFO] [1]<e0040000:TPIU M33 class=9 designer=43b:Arm part=d21 devtype=11 archid=0000 devid=ca1:0:0>
2025-09-05 13:05:43,466 [INFO] CPU core #0: Cortex-M33 r1p0, v8.0-M architecture
2025-09-05 13:05:43,466 [INFO] Extensions: [DSP, FPU, FPU_V5, MPU, SEC]
2025-09-05 13:05:43,466 [INFO] FPU present: FPv5-SP-D16-M
2025-09-05 13:05:43,470 [INFO] 4 hardware watchpoints
2025-09-05 13:05:43,472 [INFO] 8 hardware breakpoints, 1 literal comparators
2025-09-05 13:05:43,480 [INFO] Deasserting reset post connect
2025-09-05 13:05:43,488 [ERROR] An error occurred: Memory transfer fault @ 0x00ffc31c-0x00ffc31f
Traceback (most recent call last):
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\probe\cmsis_dap_probe.py", line 601, in read_ap_result_callback
value = result()
^^^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 1080, in read_reg_cb
res = transfer.get_result()
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 161, in get_result
self.daplink.flush()
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\utility\concurrency.py", line 29, in _locking
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 885, in flush
self._read_packet()
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\utility\concurrency.py", line 29, in _locking
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user\.platformio\penv\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\user\.platformio\penv\Lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 484, in decode_data
data = self._decode_transfer_data(data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 390, in _decode_transfer_data
self._check_response(data[2])
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\probe\pydapaccess\dap_access_cmsis_dap.py", line 368, 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 "C:\Users\user\.platformio\platforms/Seeed Studio/scripts/xiao_nrf54l15_recover_flash.py", line 234, in main
with ConnectHelper.session_with_chosen_probe(unique_id=probe_id, **session_options) as session:
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\core\session.py", line 415, in __enter__
self.open()
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\core\session.py", line 557, in open
self._board.init()
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\board\board.py", line 156, in init
self.target.init()
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\coresight\coresight_target.py", line 123, in init
super().init()
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\core\soc_target.py", line 174, in init
seq.invoke()
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\utility\sequencer.py", line 208, in invoke
resultSequence = call()
^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\target\family\target_nRF54L.py", line 152, in check_part_info
partno = self.read32(0x00FFC31C)
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\core\memory_interface.py", line 116, in read32
return self.read_memory(addr, 32, now)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\core\soc_target.py", line 232, in read_memory
return self.selected_core_or_raise.read_memory(addr, transfer_size, now)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\coresight\cortex_m.py", line 630, in read_memory
result = self.ap.read_memory(addr, transfer_size, now)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\utility\concurrency.py", line 29, in _locking
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\coresight\ap.py", line 1188, in _read_memory
result = read_mem_cb()
^^^^^^^^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\coresight\ap.py", line 1166, in read_mem_cb
res = result_cb() # type: ignore # ignore possibly unbound result_cb
^^^^^^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\coresight\dap.py", line 923, in read_ap_cb
result = result_cb()
^^^^^^^^^^^
File "C:\Users\user\.platformio\penv\Lib\site-packages\pyocd\probe\cmsis_dap_probe.py", line 606, in read_ap_result_callback
raise self._convert_exception(error) from error
pyocd.core.exceptions.TransferFaultError: Memory transfer fault @ 0x00ffc31c-0x00ffc31f
*** [upload] Error 2
==================================================================================================================================== [FAILED] Took 12.97 seconds ====================================================================================================================================