<?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>ERASEUICR not erasing UICR</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/109037/eraseuicr-not-erasing-uicr</link><description>I have a problem erasing data written to the NRF_UICR-&amp;gt;CUSTOMER registers. 
 I want to store the hardware version and serial number in these registers, but the serial number may change once in the lifetime of the product. Thus I would like to be able</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 12 Mar 2024 14:28:00 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/109037/eraseuicr-not-erasing-uicr" /><item><title>RE: ERASEUICR not erasing UICR</title><link>https://devzone.nordicsemi.com/thread/473467?ContentTypeID=1</link><pubDate>Tue, 12 Mar 2024 14:28:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:77e9d31e-0ec5-4a64-b7c8-6c732f12aed2</guid><dc:creator>Sigurd Hellesvik</dc:creator><description>&lt;p&gt;I realize that this is not possible after all with the new APPROTECT version. See my colleguas answer at &amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/109167/nrf52840-uicr-not-erasable-when-rbp-is-set"&gt;NRF52840: UICR not erasable when RBP is set?&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ERASEUICR not erasing UICR</title><link>https://devzone.nordicsemi.com/thread/473279?ContentTypeID=1</link><pubDate>Mon, 11 Mar 2024 16:52:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:23a11d8a-ab15-4657-a21d-7353c1131b88</guid><dc:creator>DaRu</dc:creator><description>&lt;p&gt;I&amp;#39;ve taken a loot at the approctect disabling, only did&lt;/p&gt;
&lt;div style="background-color:#1c1e23;color:#ffffff;font-family:Consolas, Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:12px;font-weight:normal;line-height:16px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#ffffff;"&gt;NRF_APPROTECT-&amp;gt;DISABLE = APPROTECT_DISABLE_DISABLE_SwDisable;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;as first thing in main().&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve added code to disable the NRF_UICR approtect as follows;&lt;/p&gt;
&lt;div style="background-color:#1f1f1f;color:#cccccc;font-family:Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;int&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#dcdcaa;"&gt;main&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;(&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;void&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;__NOP&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;__NOP&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;__NOP&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#6a9955;"&gt;//Configure for write&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRF_NVMC&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#9cdcfe;"&gt;CONFIG&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NVMC_CONFIG_WEN_Wen&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NVMC_CONFIG_WEN_Pos&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#c586c0;"&gt;while&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;(&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRF_NVMC&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#9cdcfe;"&gt;READY&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;==&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NVMC_READY_READY_Busy&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;){;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#6a9955;"&gt;//Disable protection&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRF_UICR&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#9cdcfe;"&gt;APPROTECT&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;UICR_APPROTECT_PALL_HwDisabled&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;UICR_APPROTECT_PALL_Pos&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#c586c0;"&gt;while&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;(&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRF_NVMC&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#9cdcfe;"&gt;READY&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;==&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NVMC_READY_READY_Busy&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;){;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#6a9955;"&gt;//Undo configuration&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRF_NVMC&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#9cdcfe;"&gt;CONFIG&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NVMC_CONFIG_WEN_Ren&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NVMC_CONFIG_WEN_Pos&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#c586c0;"&gt;while&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;(&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRF_NVMC&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#9cdcfe;"&gt;READY&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;==&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NVMC_READY_READY_Busy&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;){;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRF_APPROTECT&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#9cdcfe;"&gt;DISABLE&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;APPROTECT_DISABLE_DISABLE_SwDisable&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Afterwards I&amp;#39;ve implemented a check to determine if the UICR setting has stuck;&lt;/p&gt;
&lt;div style="background-color:#1f1f1f;color:#cccccc;font-family:Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#c586c0;"&gt;if&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;((&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRF_UICR&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#9cdcfe;"&gt;APPROTECT&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;UICR_APPROTECT_PALL_Msk&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;) &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;==&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;UICR_APPROTECT_PALL_HwDisabled&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;UICR_APPROTECT_PALL_Pos&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;)){&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Which tells me that it has worked, as in the UICR register is indeed set to disabled&lt;/p&gt;
&lt;p&gt;While this has caused some progress, this creates a weird behavior, where instead of counting up, it will oscillate between 0x00000000 and 0x00000001 on restarts.&lt;br /&gt;So for some reason it seems to only reset the last bit changed?&lt;/p&gt;
&lt;p&gt;To be more specific;&lt;/p&gt;
&lt;p&gt;The first value returned is 0xFFFFFFFF, then it adds 1 and writes + NVIC_SystemReset();&lt;/p&gt;
&lt;p&gt;The second value is 0x00000000, then adds 1 again, write and reset&lt;/p&gt;
&lt;p&gt;The third value is 0x00000000, then adds 1 again, write and reset&lt;/p&gt;
&lt;p&gt;The third value is 0x00000001, then adds 1, writes and reset&lt;/p&gt;
&lt;p&gt;The fifth value is 0x00000000 again. It adds 1, writes and reset&lt;/p&gt;
&lt;p&gt;The sixth value is 0x00000001 again. Then add, write and reset.&lt;/p&gt;
&lt;p&gt;The values after that will oscillate between 0 and 1.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;If I tell it to add 2 instead, it will output nearly the same;&lt;/p&gt;
&lt;p&gt;First 0xFFFFFFFF,&lt;/p&gt;
&lt;p&gt;Second 0x00000001,&lt;/p&gt;
&lt;p&gt;Third 0x00000001,&lt;/p&gt;
&lt;p&gt;Fourth 0x000000003,&lt;/p&gt;
&lt;p&gt;Fifth 0x00000001&lt;/p&gt;
&lt;p&gt;Sixth 0x00000003.&lt;/p&gt;
&lt;p&gt;And then oscillate between 1 and 3.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ERASEUICR not erasing UICR</title><link>https://devzone.nordicsemi.com/thread/473265?ContentTypeID=1</link><pubDate>Mon, 11 Mar 2024 15:36:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e2ae886b-daf9-4e8d-a5b7-cb6aeaf7b95d</guid><dc:creator>Sigurd Hellesvik</dc:creator><description>&lt;p&gt;We had an fix to approtect a while ago, so approtect behaves differently for different nRF52840 revisions. See &amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/nordic/nordic-blog/b/blog/posts/working-with-the-nrf52-series-improved-approtect"&gt;Working with the nRF52 Series&amp;#39; improved APPROTECT&lt;/a&gt;&amp;nbsp;for a list.&lt;/p&gt;
&lt;p&gt;We can see the difference between the old and new at &lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/security/ap_protect.html"&gt;Enabling access port protection mechanism&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/1057.pastedimage1710171285977v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;As you can see, The new one (Hardware and software) is automatically enabled on reset.&lt;/p&gt;
&lt;p&gt;You can not erase UICR with approtect enabled.&lt;/p&gt;
&lt;p&gt;You say that you have disabled approtect in the post here, but I suspect you might have missed part of it. Did you verify that approtect was indeed disabled by flashing the device without --recover?&lt;/p&gt;
[quote user="DaRu"]However, I&amp;#39;ve looked up the possible return values of the&amp;nbsp;&lt;code&gt;nrfx_nvmc_uicr_erase()&lt;/code&gt; function (e.g. &lt;code&gt;NRFX_SUCCESS&lt;/code&gt;)[/quote]
&lt;p&gt;I checked, and looks like this function will return NRFX_SUCCESS if approtect is locked, so that unfortunately does not give us the info we are looking for.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ERASEUICR not erasing UICR</title><link>https://devzone.nordicsemi.com/thread/473258?ContentTypeID=1</link><pubDate>Mon, 11 Mar 2024 15:23:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4166be07-52a0-4aba-8a0e-9b5448913816</guid><dc:creator>DaRu</dc:creator><description>&lt;p&gt;Sort of nice to hear that I&amp;#39;m not the only one with this problem.&lt;/p&gt;
&lt;p&gt;My &lt;code&gt;NRF_FICR-&amp;gt;INFO.VARIANT&lt;/code&gt; is &lt;strong&gt;0x41414630 / AAF0&lt;/strong&gt;. But the datasheet lists AAF0 as 0x41414530, which is weird as 0x45 is an &amp;#39;E&amp;#39;.&lt;/p&gt;
&lt;p&gt;However, I&amp;#39;ve looked up the possible return values of the&amp;nbsp;&lt;code&gt;nrfx_nvmc_uicr_erase()&lt;/code&gt; function (e.g. &lt;code&gt;NRFX_SUCCESS&lt;/code&gt;)&amp;nbsp; and those are actually 0x0BAD0000 + the error indicator.&lt;/p&gt;
&lt;p&gt;This is in nrfx_errors.h;&lt;/p&gt;
&lt;div style="background-color:#1f1f1f;color:#cccccc;font-family:Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#c586c0;"&gt;#define&lt;/span&gt;&lt;span style="color:#569cd6;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#569cd6;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;0x0BAD0000&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#b5cea8;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style="background-color:#1f1f1f;color:#cccccc;font-family:Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;typedef&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#569cd6;"&gt;enum&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_SUCCESS&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;0&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; &amp;nbsp;///&amp;lt; Operation performed successfully.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_INTERNAL&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;1&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; &amp;nbsp;///&amp;lt; Internal error.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_NO_MEM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;2&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; &amp;nbsp;///&amp;lt; No memory for operation.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_NOT_SUPPORTED&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;3&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; &amp;nbsp;///&amp;lt; Not supported.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_INVALID_PARAM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;4&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; &amp;nbsp;///&amp;lt; Invalid parameter.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_INVALID_STATE&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;5&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; &amp;nbsp;///&amp;lt; Invalid state, operation disallowed in this state.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_INVALID_LENGTH&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;6&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; &amp;nbsp;///&amp;lt; Invalid length.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_TIMEOUT&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;7&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; &amp;nbsp;///&amp;lt; Operation timed out.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_FORBIDDEN&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;8&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; &amp;nbsp;///&amp;lt; Operation is forbidden.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_NULL&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;9&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; &amp;nbsp;///&amp;lt; Null pointer.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_INVALID_ADDR&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;10&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; ///&amp;lt; Bad memory address.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_BUSY&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;11&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; ///&amp;lt; Busy.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_ALREADY_INITIALIZED&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;12&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; ///&amp;lt; Module already initialized.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_DRV_TWI_ERR_OVERRUN&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_DRIVERS_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;0&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; ///&amp;lt; TWI error: Overrun.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_DRV_TWI_ERR_ANACK&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_DRIVERS_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;1&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;),&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; ///&amp;lt; TWI error: Address not acknowledged.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color:#4fc1ff;"&gt;NRFX_ERROR_DRV_TWI_ERR_DNACK&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;=&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; (&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRFX_ERROR_DRIVERS_BASE_NUM&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;+&lt;/span&gt;&lt;span style="color:#cccccc;"&gt; &lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;2&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;)&lt;/span&gt;&lt;span style="color:#6a9955;"&gt; &amp;nbsp;///&amp;lt; TWI error: Data not acknowledged.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#cccccc;"&gt;} &lt;/span&gt;&lt;span style="color:#4ec9b0;"&gt;nrfx_err_t&lt;/span&gt;&lt;span style="color:#cccccc;"&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ERASEUICR not erasing UICR</title><link>https://devzone.nordicsemi.com/thread/473216?ContentTypeID=1</link><pubDate>Mon, 11 Mar 2024 13:58:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6ccdcac5-61a3-483b-963d-b077db09ad03</guid><dc:creator>andreasd</dc:creator><description>&lt;p&gt;&lt;code&gt;nrfx_nvmc_uicr_erase&lt;/code&gt; should actually not be able to return the value you mentioned (at least not the one in the nRF5 SDK version 17). It always returns &lt;code&gt;NRFX_SUCCESS.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Anyway, I have a similar problem (which is why I stumbled upon this), but apparently only with a specific chip revision. I&amp;#39;m calling &lt;code&gt;nrfx_nvmc_uicr_erase&lt;/code&gt;, but when I check &lt;code&gt;NRF_UICR-&amp;gt;CUSTOMER&lt;/code&gt; directly afterwards, it&amp;#39;s not &lt;code&gt;0xFFFFFFFF&lt;/code&gt; (I can only &amp;quot;debug via buzzer&amp;quot;, since I have ready products w/o debug connectors on my desk. Would need to do some tinkering to get the Chip revision out).&lt;/p&gt;
&lt;p&gt;Edit: &lt;code&gt;NRF_FICR-&amp;gt;INFO.VARIANT&lt;/code&gt; is 0x41414430 / AAD0&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ERASEUICR not erasing UICR</title><link>https://devzone.nordicsemi.com/thread/473011?ContentTypeID=1</link><pubDate>Fri, 08 Mar 2024 16:31:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:82f65520-c71a-4118-bd24-cc37e1bdb1ad</guid><dc:creator>DaRu</dc:creator><description>&lt;p&gt;I have written a few debug lines, such that upon startup the first customer register is read and send to my serial terminal. Then that value from the customer register is incremented by one and inserted as the first uint32 of a dummy serial number, then given to the write function to be written. &lt;/p&gt;
&lt;p&gt;The write function will perform a NVIC_SystemReset() to update the UICR configuration, this will then reset the nrf and begin the cycle anew.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The result in the nrf52832 is a nicely incrementing output in the terminal on every boot.&lt;/p&gt;
&lt;p&gt;But in the nrf52840 the message in the terminal is always the same; 0x00, 0x00, 0x00, 0x00 followed by the rest of the dummy serial.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;As for the output of the nrfx_nvmc_uicr_erase(), it was 0x0BAD0000.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ERASEUICR not erasing UICR</title><link>https://devzone.nordicsemi.com/thread/472959?ContentTypeID=1</link><pubDate>Fri, 08 Mar 2024 13:19:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:98565c20-1f17-4dbf-9d2d-d18b0b71c069</guid><dc:creator>Sigurd Hellesvik</dc:creator><description>&lt;p&gt;In that case:&lt;/p&gt;
&lt;p&gt;Could you explain how you see that it does not work?&lt;/p&gt;
&lt;p&gt;What does nrfx_nvmc_uicr_erase() return?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ERASEUICR not erasing UICR</title><link>https://devzone.nordicsemi.com/thread/472912?ContentTypeID=1</link><pubDate>Fri, 08 Mar 2024 11:04:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7c53cde8-cca7-4f36-9168-c0e75489affd</guid><dc:creator>DaRu</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve tried the &lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrfx/drivers/nvmc/driver.html#c.nrfx_nvmc_uicr_erase"&gt;nrfx_nvmc_uicr_erase&lt;/a&gt;(), but it doesn&amp;#39;t help, the nrf52840 isn&amp;#39;t able to erase the UICR.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve also tried this on the nrf52832, where it does work, but there it was already working in the first place.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: ERASEUICR not erasing UICR</title><link>https://devzone.nordicsemi.com/thread/472900?ContentTypeID=1</link><pubDate>Fri, 08 Mar 2024 10:20:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d2b22c1e-6d9e-45ad-b60b-d38d7e75ddab</guid><dc:creator>Sigurd Hellesvik</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Try &lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrfx/drivers/nvmc/driver.html#c.nrfx_nvmc_uicr_erase"&gt;nrfx_nvmc_uicr_erase&lt;/a&gt;().&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Sigurd Hellesvik&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>