<?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>VPR hibernate</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/128569/vpr-hibernate</link><description>i&amp;#39;m writing bare-metal code for the FLPR (which was loaded by a bare-metal launcher running on the M33).... 
 when my FLPR code &amp;quot;idles&amp;quot; using the WFI instruction, power consumptions remains around 500uA -- which is consistent with what i&amp;#39;ve read elsewhere</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 01 Jul 2026 12:22:24 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/128569/vpr-hibernate" /><item><title>RE: VPR hibernate</title><link>https://devzone.nordicsemi.com/thread/568654?ContentTypeID=1</link><pubDate>Wed, 01 Jul 2026 12:22:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c4f8c13e-cd16-419f-948b-7d8991ad23f9</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks for sharing these measurements. This is very interesting to look at!&lt;/p&gt;
&lt;p&gt;Given that the rest of the system state is similar, regardless of running off of Cortex M33 or the RISC-V, I guess it makes sense that they perform equal (or very much close to).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: VPR hibernate</title><link>https://devzone.nordicsemi.com/thread/568624?ContentTypeID=1</link><pubDate>Wed, 01 Jul 2026 02:09:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9808023f-e539-42ef-a895-9eb367ce24df</guid><dc:creator>bios-bob</dc:creator><description>&lt;p&gt;an early &lt;a href="https://github.com/em-foundation/bluejoule-gatt/blob/main/reports/09-nrf54-on-chip-core-results-cortex-m33-vs-riscv.md"&gt;peek&lt;/a&gt; into the fruits of my labor -- a tiny BLE peripheral stack (written in&amp;nbsp;EM&amp;bull;Script) which runs on the FLPR and executes from a *single* 16K SRAM block....&amp;nbsp; quite remarkably, it&amp;#39;s power profile is essentially identical to the same code running on the main M33 cpu....&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: VPR hibernate</title><link>https://devzone.nordicsemi.com/thread/568559?ContentTypeID=1</link><pubDate>Mon, 29 Jun 2026 14:30:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ad210cbe-1b0f-40d4-bc05-dc9ff5e0041a</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi Bob,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;That is great to hear! Let me know if you run into any VPR related issues, or have any questions.&lt;/p&gt;
&lt;p&gt;I hope you have a wonderful day!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;H&amp;aring;kon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: VPR hibernate</title><link>https://devzone.nordicsemi.com/thread/568550?ContentTypeID=1</link><pubDate>Mon, 29 Jun 2026 13:22:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8840ab9e-83ec-476b-97de-4c858e38f7fb</guid><dc:creator>bios-bob</dc:creator><description>&lt;p&gt;hi hakon,&lt;/p&gt;
&lt;p&gt;this actually filled in the missing pieces for me....&lt;/p&gt;
&lt;p&gt;my bare-metal FLPR program is now able to awake from an idle state that consumes only 1.2uA....&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: VPR hibernate</title><link>https://devzone.nordicsemi.com/thread/568524?ContentTypeID=1</link><pubDate>Mon, 29 Jun 2026 08:56:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:afefb46b-5538-43ea-9187-2abb7b390fac</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;Hi Bob,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I must first apologise for throwing a lot of links and information at you. The support for lower power modes on VPR is considered experimental at this time, as the functionality is still work-in-progress.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Since you mention errata, I will share the link here for reference&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.nordicsemi.com/r/bundle/errata_nrf54l15_rev2/page/err/nrf54l15/rev2/latest/err_l15_new.html"&gt;https://docs.nordicsemi.com/r/bundle/errata_nrf54l15_rev2/page/err/nrf54l15/rev2/latest/err_l15_new.html&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;and it is specifically erratum 16, 17, 18 that is affecting the VPR peripheral directly.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We have a generic introduction to the nRF54L-series VPR here:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.nordicsemi.com/r/bundle/ngl_004/page/gl/ngl_004/frontpage.html"&gt;https://docs.nordicsemi.com/r/bundle/ngl_004/page/gl/ngl_004/frontpage.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
[quote user=""]&lt;p&gt;when my FLPR code &amp;quot;idles&amp;quot; using the WFI instruction, power consumptions remains around 500uA -- which is consistent with what i&amp;#39;ve read elsewhere....&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;[/quote]
&lt;p&gt;This is because the default sleep state is WAIT (actually &amp;quot;RESET&amp;quot;, but this is very similar in terms of keeping clocks running):&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.nordicsemi.com/r/bundle/ps_nrf54l15/page/vpr.html-register.nordic.vprnordicsleepctrl"&gt;https://docs.nordicsemi.com/r/bundle/ps_nrf54l15/page/vpr.html-register.nordic.vprnordicsleepctrl&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To reach a deeper sleep, the .SLEEPSTATE field must be changed to for instance DEEPSLEEP/HIBERNATE. However; this also requires the application to actively retain RAM.&lt;/p&gt;
&lt;p&gt;The documentation in the datasheet is not that verbose, and we have a specific chapter in the previously&amp;nbsp;linked VPR guidelines:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.nordicsemi.com/r/bundle/ngl_004/page/gl/ngl_004/sleep_mode_operation.html"&gt;https://docs.nordicsemi.com/r/bundle/ngl_004/page/gl/ngl_004/sleep_mode_operation.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hibernation / RAM retaining support for VPR was added recently, and it is available in the ncs v3.4.0-rc releases (v3.4.0-rc2 being the latest):&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/nrfconnect/sdk-zephyr/commit/0f7c3590bdae4aff059357b3f46378166a8a4659"&gt;https://github.com/nrfconnect/sdk-zephyr/commit/0f7c3590bdae4aff059357b3f46378166a8a4659&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/zephyrproject-rtos/zephyr/pull/106190"&gt;https://github.com/zephyrproject-rtos/zephyr/pull/106190&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And there is a improved solution just being merged in upstream zephyr as well:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/zephyrproject-rtos/zephyr/pull/111480"&gt;https://github.com/zephyrproject-rtos/zephyr/pull/111480&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You should be on a bleeding edge tag (v3.4.0-rc1 or newer) to obtain errata workarounds as well as hibernate support for VPR.&lt;/p&gt;
&lt;p&gt;Hibernate is the default sleep mode in v3.4.0-rc1 and newer, so no need to do an active change.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PS:&lt;/p&gt;
&lt;p&gt;Errata #18 (&lt;a href="https://docs.nordicsemi.com/r/bundle/errata_nrf54l15_rev2/page/err/nrf54l15/rev2/latest/anomaly_l15_18.html"&gt;https://docs.nordicsemi.com/r/bundle/errata_nrf54l15_rev2/page/err/nrf54l15/rev2/latest/anomaly_l15_18.html&lt;/a&gt;) is not handled yet in the code base.&lt;/p&gt;
&lt;p&gt;The workaround here is effectively to do a dummy-write to the NRF_VPR memory map after waking up from WFI. In zephyr, this is where it goes to idle:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/nrfconnect/sdk-zephyr/blob/main/arch/riscv/core/cpu_idle.c#L16"&gt;https://github.com/nrfconnect/sdk-zephyr/blob/main/arch/riscv/core/cpu_idle.c#L16&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And you should append something like this &lt;strong&gt;after waking up&lt;/strong&gt; from WFI:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;int volatile * const vpr_reg = (int *) 0x5004C804;
*vpr_reg = 0x1234;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Please note that the above workaround is not finalised, so the polished solution&amp;nbsp;will likely look a bit different.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Let me know if you have any questions or run into any issues.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;/p&gt;
&lt;p&gt;Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>