<?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>Single bank DFU update in SDK16 fails</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/89973/single-bank-dfu-update-in-sdk16-fails</link><description>Hello, 
 I am trying to do a single bank DFU update using nRF Connect app and have SDK 16 on my device. I have set NRF_DFU_SINGLE_BANK_APP_UPDATES to 1. Bot looking at postvalidate (attached below) in nrf_dfu_validation.c, it automatically swicthes to</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 28 Jul 2022 18:28:31 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/89973/single-bank-dfu-update-in-sdk16-fails" /><item><title>RE: Single bank DFU update in SDK16 fails</title><link>https://devzone.nordicsemi.com/thread/379187?ContentTypeID=1</link><pubDate>Thu, 28 Jul 2022 18:28:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a54930b0-4fe3-4384-a5f9-9ef6482d7c15</guid><dc:creator>Shruuts</dc:creator><description>&lt;p&gt;Hey Terje,&lt;/p&gt;
&lt;p&gt;I am currently changing the code as follows to get single bank update to work. Please let me know if you see any issues with this. Thanks.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;nrf_dfu_result_t postvalidate(uint32_t data_addr, uint32_t data_len, bool is_trusted)&lt;/p&gt;
&lt;p&gt;.&lt;/p&gt;
&lt;p&gt;.&lt;/p&gt;
&lt;p&gt;.&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt; if (ret_val == NRF_DFU_RES_CODE_SUCCESS)&lt;br /&gt; {&lt;br /&gt; // Mark the update as complete and valid.&lt;br /&gt; s_dfu_settings.bank_1.image_crc = crc32_compute((uint8_t *)data_addr, data_len, NULL);&lt;br /&gt; s_dfu_settings.bank_1.image_size = data_len;&lt;br /&gt;&lt;span style="background-color:#ffff00;"&gt;#if NRF_DFU_SINGLE_BANK_APP_UPDATES&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ffff00;"&gt; s_dfu_settings.bank_0.image_crc = s_dfu_settings.bank_1.image_crc;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ffff00;"&gt; s_dfu_settings.bank_0.image_size = data_len;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color:#ffff00;"&gt;#endif // NRF_DFU_SINGLE_BANK_APP_UPDATES&lt;/span&gt;&lt;br /&gt; }&lt;br /&gt; .&lt;/p&gt;
&lt;p&gt;.&lt;/p&gt;
&lt;p&gt;.&lt;/p&gt;
&lt;p&gt;return ret_val;&lt;br /&gt;}&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Single bank DFU update in SDK16 fails</title><link>https://devzone.nordicsemi.com/thread/378597?ContentTypeID=1</link><pubDate>Mon, 25 Jul 2022 23:44:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d746e9fc-75e3-46a4-b035-0c0e0cc2fd06</guid><dc:creator>Shruuts</dc:creator><description>&lt;p&gt;Hey Terje,&lt;/p&gt;
&lt;p&gt;Any update on this? Thanks.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Single bank DFU update in SDK16 fails</title><link>https://devzone.nordicsemi.com/thread/377732?ContentTypeID=1</link><pubDate>Tue, 19 Jul 2022 21:37:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d1a00868-c79a-435a-8dab-cc3708b8f588</guid><dc:creator>Shruuts</dc:creator><description>&lt;p&gt;Hey Terje,&lt;/p&gt;
&lt;p&gt;I set the --sd-req to 0xCD (I am using s112 v7.0.1) and I incremented the application version with the exact same outcome.&lt;/p&gt;
&lt;p&gt;Before:&lt;/p&gt;
&lt;p&gt;nrfjprog --memrd 0x7E000 --n 128 --family nrf52&lt;br /&gt;0x0007E000: D8D55457 00000002 00000001 00000002 |WT..............|&lt;br /&gt;0x0007E010: 00000000 00000000 0004625C C5DFD660 |........\b..`...|&lt;br /&gt;0x0007E020: 00000001 00000000 00000000 00000000 |................|&lt;br /&gt;0x0007E030: 00000000 00000000 00000000 00000000 |................|&lt;br /&gt;0x0007E040: 00000000 00000000 00000000 00000000 |................|&lt;br /&gt;0x0007E050: 00000000 00000000 00000000 FFFFFFFF |................|&lt;br /&gt;0x0007E060: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................|&lt;br /&gt;0x0007E070: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................|&lt;/p&gt;
&lt;p&gt;After:&lt;/p&gt;
&lt;p&gt;nrfjprog --memrd 0x7E000 --n 128 --family nrf52&lt;br /&gt;0x0007E000: C66D1D39 00000002 00000002 00000002 |9.m.............|&lt;br /&gt;0x0007E010: 00000000 00000000 00000000 00000000 |................|&lt;br /&gt;0x0007E020: 00000001 0004625C FFDD4169 00000000 |....\b..iA......|&lt;br /&gt;0x0007E030: 00000000 00000000 00000000 00000000 |................|&lt;br /&gt;0x0007E040: 00000000 00000000 00019000 00000000 |................|&lt;br /&gt;0x0007E050: 00000000 00000000 00000000 FFFFFFFF |................|&lt;br /&gt;0x0007E060: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................|&lt;br /&gt;0x0007E070: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................|&lt;/p&gt;
&lt;p&gt;I am also setting&amp;nbsp;NRF_BL_DFU_ALLOW_UPDATE_FROM_APP to 1. Although setting it to 0 does not make a difference either.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Single bank DFU update in SDK16 fails</title><link>https://devzone.nordicsemi.com/thread/377695?ContentTypeID=1</link><pubDate>Tue, 19 Jul 2022 15:15:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f7143f6b-6cbf-47dd-a04c-1f1506ff7a72</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Have you tried setting the &lt;code&gt;--sd-req&lt;/code&gt; to the SoftDevice used (or is this serial DFU / no SoftDevice installed)?&lt;/p&gt;
&lt;p&gt;Also, application version, has it strictly increased from what was already stored?&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Terje&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Single bank DFU update in SDK16 fails</title><link>https://devzone.nordicsemi.com/thread/377257?ContentTypeID=1</link><pubDate>Fri, 15 Jul 2022 20:03:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4ba425c4-eae0-41b9-b82e-667780a4c9c9</guid><dc:creator>Shruuts</dc:creator><description>&lt;p&gt;Here is my command to generate the application package:&lt;/p&gt;
&lt;p&gt;nrfutil pkg generate --hw-version 52 --sd-req 0x00&amp;nbsp;--key-file private.pem&amp;nbsp;--application-version 0x01 --application main.hex app_dfu_package.zip&lt;/p&gt;
&lt;p&gt;Version for nrfutil: v6.1.3.&lt;/p&gt;
&lt;p&gt;Btw, if I ignore the error from nrf_bootloader.c and let the application code boot anyway, it works. So the code is written to the correct place.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Single bank DFU update in SDK16 fails</title><link>https://devzone.nordicsemi.com/thread/377232?ContentTypeID=1</link><pubDate>Fri, 15 Jul 2022 14:44:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b5e88095-0609-40ce-ba25-3e71aa11331b</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Yes, this looks a bit strange. What is the full command you used for generating the DFU package, and with what version of nrfutil?&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Terje&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Single bank DFU update in SDK16 fails</title><link>https://devzone.nordicsemi.com/thread/377052?ContentTypeID=1</link><pubDate>Thu, 14 Jul 2022 21:49:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c0df1786-2e97-458e-977a-25e08b7a554c</guid><dc:creator>Shruuts</dc:creator><description>&lt;p&gt;Hey Terje,&lt;/p&gt;
&lt;p&gt;I am seeing a failure with my code. I am setting&amp;nbsp;&lt;span&gt;NRF_DFU_FORCE_DUAL_BANK_APP_UPDATES to 0.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I send a DFU package (zip file created by nrfutil) using nRFConnect app. Before the update, when reading the MBR and Bootloader settings I get:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;nrfjprog --memrd 0x7E000 --n 128 --family nrf52&lt;br /&gt;0x0007F000: B77F69C5 00000002 00000001 00000002 |.i..............|&lt;br /&gt;0x0007F010: 00000000 00000000 0004625C FFDD4169 |........\b..iA..|&lt;br /&gt;0x0007F020: 00000001 00000000 00000000 00000000 |................|&lt;br /&gt;0x0007F030: 00000000 00000000 00000000 00000000 |................|&lt;br /&gt;0x0007F040: 00000000 00000000 00019000 00000000 |................|&lt;br /&gt;0x0007F050: 00000000 00000000 00000000 FFFFFFFF |................|&lt;br /&gt;0x0007F060: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................|&lt;br /&gt;0x0007F070: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................|&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Here, bank 0 has the correct details of size and crc. After the update, I get&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;nrfjprog --memrd 0x7E000 --n 128 --family nrf52&lt;br /&gt;0x0007F000: 2869FC68 00000002 00000001 00000002 |h.i(............|&lt;br /&gt;0x0007F010: 00000000 00000000 00000000 00000000 |................|&lt;br /&gt;0x0007F020: 00000001 0004625C FFDD4169 00000000 |....\b..iA......|&lt;br /&gt;0x0007F030: 00000000 00000000 00000000 00000000 |................|&lt;br /&gt;0x0007F040: 00000000 00000000 00019000 00000000 |................|&lt;br /&gt;0x0007F050: 00000000 00000000 00000000 FFFFFFFF |................|&lt;br /&gt;0x0007F060: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................|&lt;br /&gt;0x0007F070: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................|&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Here bank 0 is the active bank, but the size of code is 0. This makes the check for valid application fail in line 301 in nrf_bootloader.c:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;else if (!boot_validate(&amp;amp;s_dfu_settings.boot_validation_app, nrf_dfu_bank0_start_addr(), &lt;span style="text-decoration:underline;"&gt;&lt;strong&gt;s_dfu_settings.bank_0.image_size&lt;/strong&gt;&lt;/span&gt;, do_crc))&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;My file size before and after the update is the same since I am only changing a version number as a test.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Single bank DFU update in SDK16 fails</title><link>https://devzone.nordicsemi.com/thread/377014?ContentTypeID=1</link><pubDate>Thu, 14 Jul 2022 14:19:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:942b6c5b-b2b6-425c-808e-647a847c492e</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;The references to bank 1 that you refer to are to the value stored in the DFU settings. From what I understand, those settings will contain the correct values for when doing single bank DFU, so that the functionality of the DFU bootloader is correct for that scenario. (E.g. containing same data for both bank_0 and bank_1 when single bank is used.)&lt;/p&gt;
&lt;p&gt;Setting NRF_DFU_SINGLE_BANK_APP_UPDATES should ensure single-bank update is used for the application.&lt;/p&gt;
&lt;p&gt;In addition, there is an NRF_DFU_FORCE_DUAL_BANK_APP_UPDATES (which may conflict with NRF_DFU_SINGLE_BANK_APP_UPDATES), please check that you have not set that one as well.&lt;/p&gt;
&lt;p&gt;Apart from that, do you see any error or is it failing in any way, or is your inquiry based only on code inspection?&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Terje&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>