I’m working with a custom board based on the nRF52833. It uses an external 32 kHz TCXO (SiT1552) as the LFCLK source.
-
In my main Zephyr app I set:
CONFIG_CLOCK_CONTROL_NRF_K32SRC_EXT_FULL_SWING=yand in mcuboot i set CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y. This boots fine if I power cycle the board, but then when the app does a software reboot (sys_reboot(...)orNVIC_SystemReset()), the system hangs indefinitely. Power-cycling causes it to again boot into the primary image normally. -
If I switch mcuboot to also use
EXT_FULL_SWING, then after reset I see the UART log:mcuboot: Jumping to the first image slotbut then nothing. I investigated with a debugger and it the app never seems to reach
main()or even anySYS_INITroutines. Whenever I break, it's just in the zephyr kernel's idle thread.
So, to summarize:
-
App works with TCXO only if mcuboot uses RC, but any software reboots causes hang.
-
If both use TCXO, app never boots.
- If both use RC, then every thing works normally (but i of course want to use the external tcxo).
Versions:
zephyr: nrfconnect sdk-zephyr v3.5.99
nrf: nrfconnect sdk-nrf v2.6.1
Any help on this is greatly appreciated.
Thanks
EDIT: I forgot to mention that I have indeed verified that the program is getting past the `lfclk_spinwait` function, so it does seem to be detecting that the clock has started. I placed a breakpoint at `clock_control_nrf.c:540` after the `!nrf_clock_is_running` loop, and it does indeed reach that point.
