nRF54L15 blinky will not return from k_msleep()

Hi, 

I am currently developing on the BL54L15 Ezurio development kit with the Nordic chip. 

I am using the Nordic v3.0.1 SDK and toolchain with the new manufacturer board files from the zephyr repository https://github.com/zephyrproject-rtos/zephyr/tree/main/boards/ezurio/bl54l15_dvk

I have tried both the blinky and button sample - but code execution seems to stop when reaching the k_msleep() function. I have not had this issue with the nRF54L15 development kit using the same SDK and toolchain.

When I try to enter debug mode (following the usual way outlined in the dev academy course) - I get the following message: 

'Unable to start debugging. GDP exited unexpectedly with exit code -3 (0xFFFFFFFD). Could not connect to target. No target voltage detected or connection failed.'



I understand that nordic is not responsible for manufacturing this board - however I was wondering if you could suggest any starting points for debugging the fault in k_msleep in case there is an error in the board files or hardware. 

Thank you very much. 

Parents Reply Children
  • Hi Ryan,

    Thanks for sharing your findings!

    I'm currently testing on the Raytac AN54L15Q-DB (raytac_an54l15q_db) and I ran into the exact same issue you described — although in my case it happened while using just the k_sleep() function. It's a bit unfortunate that this behavior and the required configurations are not better documented.

    I also added the following line to my prj.conf file:

    # Start SYSCOUNTER on driver init 
    CONFIG_NRF_GRTC_START_SYSCOUNTER=y

    After doing that, everything works perfectly on the Raytac AN54L15Q-DB!

    This option is specific to the GRTC timer used on the nRF54-series (like the nRF54L15), and it's different from the system timer setups on older chips like the nRF52 or nRF53. Without explicitly starting the SYSCOUNTER, time-based functions like k_sleep(), k_msleep(), k_timer() or any other timed delay or scheduling feature may silently fail — which makes it a somewhat tricky issue to track down.

    Interestingly, the official Nordic nrf54l15_dk board does work out of the box, because it includes this option in its board-level defconfig. The Raytac and Ezurio board’s BSP leaves it out, which is likely the root cause of the issue when using it as a custom board.

    If you’re using this board more often, it’s probably a good idea to add CONFIG_NRF_GRTC_START_SYSCOUNTER=y directly to your board’s defconfig to avoid needing it in every project.

    Just to clarify: this issue is not related to the presence or absence of an external crystal (LF or HF). The GRTC timer can run on the internal clock sources just fine, and the missing SYSCOUNTER start is purely a configuration oversight — not a hardware issue. So unless you need long-term timing accuracy or precise radio timing (e.g., for BLE), an external crystal is not required for k_sleep() or system timers to function.

    Thanks again for pointing this out!

    Best regards,
    Herke


Related