<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nRF54L15 hangs in MCUBoot</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/128836/nrf54l15-hangs-in-mcuboot</link><description>On nRF54L15, MCUboot prints Jumping to the first image slot and then spins forever, never starting the application: 
 sys_clock_disable() switches the GRTC SYSCOUNTER off in nrfx_grtc_uninit() and only then releases the LFCLK, which aborts the LFCLK RC</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 31 Jul 2026 15:40:19 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/128836/nrf54l15-hangs-in-mcuboot" /><item><title>RE: nRF54L15 hangs in MCUBoot</title><link>https://devzone.nordicsemi.com/thread/569753?ContentTypeID=1</link><pubDate>Fri, 31 Jul 2026 15:40:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:846307d2-b5c6-43f5-9aed-0a1ed3c866c3</guid><dc:creator>gjea</dc:creator><description>&lt;p&gt;Thanks for the quick turnaround. I applied PR #4332 to my local v3.4.0 tree and tested it on the nRF54L15 DK with the attached reproducer. &lt;strong&gt;It does fix the reported case&lt;/strong&gt; &amp;mdash; the board now boots cleanly through every watchdog cycle instead of hanging on the first boot.&lt;/p&gt;
&lt;p&gt;Two things I think are worth looking at before it lands, though.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. The GRTC is not actually left running when &lt;code&gt;STOP_AT_UNINIT=n&lt;/code&gt;.&lt;/strong&gt; &lt;code&gt;nrfx_grtc_uninit()&lt;/code&gt; clears &lt;code&gt;MODE.SYSCOUNTEREN&lt;/code&gt; unconditionally; &lt;code&gt;STOP_AT_UNINIT&lt;/code&gt; only gates the additional &lt;code&gt;TASKS_STOP&lt;/code&gt;. I re-ran my bounded read probe with the PR applied, so the LFCLK is now kept alive, and the post-uninit read still never completes:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;grtc_probe_mode  = 0x00000000    /* MODE cleared by nrfx_grtc_uninit() */
grtc_probe_tries = 10000000      /* bound exhausted                    */
grtc_probe_sch   = 0x40000000    /* BUSY still set                     */&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So keeping the 32 kHz source does not make the counter readable &amp;mdash; it is switched off, not asleep. The PR works by removing the &lt;em&gt;caller&lt;/em&gt; (the calibration-timer abort), which is the same mechanism as the &lt;code&gt;CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC_CALIBRATION=n&lt;/code&gt; workaround, rather than by fixing the teardown order.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. The hang is still reachable wherever &lt;code&gt;STOP_AT_UNINIT=y&lt;/code&gt;&lt;/strong&gt;, which is the &lt;strong&gt;default for every non-MCUboot image&lt;/strong&gt;. &lt;code&gt;sys_clock_disable()&lt;/code&gt; is also called from &lt;code&gt;sys_reboot()&lt;/code&gt; (&lt;code&gt;zephyr/lib/os/reboot.c:42&lt;/code&gt;), and with &lt;code&gt;STOP_AT_UNINIT=y&lt;/code&gt; the PR&amp;#39;s added condition is satisfied, so the preprocessor output is identical to unpatched. Measured on the DK:&lt;/p&gt;
&lt;table border="1" cellpadding="6" cellspacing="0"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;code&gt;STOP_AT_UNINIT=n&lt;/code&gt; (MCUboot)&lt;/th&gt;
&lt;th&gt;&lt;code&gt;STOP_AT_UNINIT=y&lt;/code&gt; (default elsewhere)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;v3.4.0 as shipped&lt;/td&gt;
&lt;td&gt;hangs&lt;/td&gt;
&lt;td&gt;hangs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PR #4332&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;boots&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;hangs &amp;mdash; same PC, &lt;code&gt;MODE = 0&lt;/code&gt;, &lt;code&gt;BUSY&lt;/code&gt; set, counter frozen at 97.9 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;release LFCLK before &lt;code&gt;nrfx_grtc_uninit()&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;boots&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;boots&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Simply moving the &lt;code&gt;onoff_release()&lt;/code&gt; block above &lt;code&gt;nrfx_grtc_uninit()&lt;/code&gt; covers both columns, and I think it also matches your own diagnosis more closely: if the problem is that the 32 kHz source is released while the GRTC still needs it, the fix is to release it &lt;em&gt;before&lt;/em&gt; tearing the GRTC down rather than to skip the release in one build configuration.&lt;/p&gt;
&lt;p&gt;Separately, would you consider bounding the retry in &lt;code&gt;nrfy_grtc_sys_counter_get()&lt;/code&gt;, or early-returning when &lt;code&gt;nrfx_grtc_init_check()&lt;/code&gt; is false? It would not have prevented this hang &amp;mdash; nothing on the read side can, once the counter is off &amp;mdash; but it turns a silent lockup into a detectable error, and case 126653 shows a second, unrelated caller wedging in the same loop at &lt;code&gt;PRE_KERNEL_1&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;See the attached file &amp;#39;nrf54l15-grtc-sys-clock-disable-ordering.diff&amp;#39; for a suggested fix.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/nrf54l15_2D00_grtc_2D00_sys_2D00_clock_2D00_disable_2D00_ordering.diff"&gt;devzone.nordicsemi.com/.../nrf54l15_2D00_grtc_2D00_sys_2D00_clock_2D00_disable_2D00_ordering.diff&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF54L15 hangs in MCUBoot</title><link>https://devzone.nordicsemi.com/thread/569729?ContentTypeID=1</link><pubDate>Fri, 31 Jul 2026 10:37:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b36869ab-d7ba-4284-8bde-7a2292705270</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Update: it turns out the&amp;nbsp;32 KHz clock source is released even though the&amp;nbsp;GRTC is configured to keep running after&amp;nbsp;&lt;span&gt;sys_clock_disable(). Thanks to your report and reproducer, the developer was able to quickly identify the issue and create this PR:&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-zephyr/pull/4332/changes/14bcb67edfd6a0ecd6dd024676b6aac335338617"&gt;https://github.com/nrfconnect/sdk-zephyr/pull/4332/changes/14bcb67edfd6a0ecd6dd024676b6aac335338617&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF54L15 hangs in MCUBoot</title><link>https://devzone.nordicsemi.com/thread/569702?ContentTypeID=1</link><pubDate>Thu, 30 Jul 2026 13:47:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cb026f66-7240-4044-a0af-81b96b53519c</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Thank you for reporting this and for providing a sample to reproduce. I will need some time to review and discuss with the developers. Will update as soon as I know more.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Vidar&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>