<?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>DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/86027/dfu-approach-from-cloud-to-esp32-to-nrf52840</link><description>Hi, 
 My setup include a nRF52840-DK board that has an ESP32 WiFi module connected to it via UART. The idea is to source the new firmware from a server located in the cloud. 
 GCC toolchain, 
 Running FreeRTOS, 
 SDK 15.2.0 
 
 I am getting really confused</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 24 Jan 2023 14:37:53 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/86027/dfu-approach-from-cloud-to-esp32-to-nrf52840" /><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/406294?ContentTypeID=1</link><pubDate>Tue, 24 Jan 2023 14:37:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e4c59a41-8bbc-414d-a36c-d81e4343c0a5</guid><dc:creator>Bosemani_Raja</dc:creator><description>&lt;p&gt;Hai &lt;a href="https://devzone.nordicsemi.com/members/jasongeo"&gt;JasonGeo&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Currently I&amp;#39;m also planning for this implementation.&lt;/p&gt;
&lt;p&gt;After reading this discussion I&amp;#39;m bit relief.&lt;/p&gt;
&lt;p&gt;Do you have&amp;nbsp;any points or examples?&lt;/p&gt;
&lt;p&gt;If you share this will be very helpful!&lt;/p&gt;
&lt;p&gt;Best regards&lt;/p&gt;
&lt;p&gt;Bose&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/363500?ContentTypeID=1</link><pubDate>Tue, 19 Apr 2022 09:22:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:54c64e83-56ad-4aa6-8c7d-bf63bdffcea5</guid><dc:creator>JasonGeo</dc:creator><description>&lt;p&gt;Happy Easter and thank you for your reply.&lt;br /&gt;&lt;br /&gt;Ok, will give what you suggested a try. Am more relief now that I don&amp;#39;t really need to follow the protocol but only the steps you mentioned!&lt;br /&gt;&lt;br /&gt;Will revert back when I am succesful with the process.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/363471?ContentTypeID=1</link><pubDate>Tue, 19 Apr 2022 08:27:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bab34409-59e9-4bf4-9960-bb40bea9a078</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Jason,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m sorry for the late response. It was Easter vacation here in Norway last week.&amp;nbsp;&lt;br /&gt;Regarding your question, no you don&amp;#39;t need to implement any serial opcode. In fact you just need to find a way to receive your image and store it to the correct location (slot 1) and then call the function nrf_dfu_validation_pst_data_execute() just as in the code that I pointed to in previous replies.&lt;/p&gt;
&lt;p&gt;The most important part is&amp;nbsp;that you write to the bootloader setting correctly and trigger a reset to get to the bootloader. The bootloader will then swap the image when it read the bootloader setting.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;So it doesn&amp;#39;t matter how you receive the image and that you don&amp;#39;t have the DFU master on the cloud to send the image chunks the same way as the DFU serial protocol.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;You can read more about the init package &lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.1.0/lib_bootloader_dfu_validation.html?cp=8_1_3_5_1_1_0#lib_bootloader_dfu_init"&gt;here.&lt;/a&gt;&amp;nbsp;I would suggest to test with the background DFU example from Vidar that I pointed to as well.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/363407?ContentTypeID=1</link><pubDate>Tue, 19 Apr 2022 02:09:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e429b644-ba41-45cf-ac8b-db4a1178943f</guid><dc:creator>JasonGeo</dc:creator><description>&lt;p&gt;Hi Hung,&lt;br /&gt;&lt;br /&gt;Do you have some time to go over the questions?&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve got the build issue sorted out. It has to do with the linking order of the libraries. So don&amp;#39;t need to worry about the last part of the ticket.&lt;br /&gt;&lt;br /&gt;Would appreciate if you can help with the rest of the queries.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/362756?ContentTypeID=1</link><pubDate>Mon, 11 Apr 2022 07:38:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1c2d6da3-92cc-4f22-b494-45bb42340ff6</guid><dc:creator>JasonGeo</dc:creator><description>&lt;p&gt;Thanks Hung for the detailed explaination. It helps in my understanding and goes to show there is still lots to learn!&lt;/p&gt;
&lt;p&gt;I think I am a step more closer to my understanding and implementation of background DFU now.&lt;/p&gt;
&lt;p&gt;Still trying to get my head over something.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s not possible for me to implement a DFU master on the cloud server to send the nrf52 application the bytes chunks while observing the serial DFU&lt;br /&gt;protocol.&lt;/p&gt;
&lt;p&gt;My application has to act like the DFU Master as well as the slave at the same time because the server will only do&lt;br /&gt;whatever my application request from it. So I was thinking maybe after the app receiving a chunk of data from the server, the app then put on the DFU Master&lt;br /&gt;&amp;quot;role&amp;quot; and &amp;quot;package&amp;quot; the data chunk with a serial DFU opcode and then call another local function which will decode the OP code in a serial DFU opcode switch/case block and &lt;br /&gt;eventaully pass the data to nrf_dfu_req_handler_on_req() to be written to flash?&lt;/p&gt;
&lt;p&gt;Will background DFU still work if I did not implement the full serial DFU opcodes processing e.g. can I skip SERIAL_DFU_OP_CODE_CREATE_OBJECT, SERIAL_DFU_OP_CODE_GET_SERIAL_MTU etc.&lt;br /&gt;and just implement SERIAL_DFU_OP_CODE_WRITE_OBJECT and probably SERIAL_DFU_OP_CODE_CALCULATE_CRC, SERIAL_DFU_OP_CODE_EXECUTE_OBJECT?&lt;/p&gt;
&lt;p&gt;Or I don&amp;#39;t even need to implement this serial protocol and just call nrf_dfu_req_handler_on_req() directly each time I receive a data chunk?&lt;/p&gt;
&lt;p&gt;Why do we need to send the init packet first and then execute the init packet. Also after every data chunk we need to execute object?&lt;/p&gt;
&lt;p&gt;I am also having some build issue at the moment after pulling in the dfu modules from the bootloader for the application.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s saying&lt;br /&gt;undefined reference to `nrf_cc310_bl_ecdsa_verify_secp256r1&amp;#39;&lt;br /&gt;undefined reference to `nrf_cc310_bl_hash_sha256_init&amp;#39;&lt;br /&gt;undefined reference to `nrf_cc310_bl_hash_sha256_update&amp;#39;&lt;/p&gt;
&lt;p&gt;but I&amp;#39;ve already included all the source modules for crypto and the libraries as well.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/362503?ContentTypeID=1</link><pubDate>Fri, 08 Apr 2022 07:52:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b0e0ccee-20c6-4a7e-9ead-99ffced1736a</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Jason,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The bootloader and the application are 2 separated image. So you can&amp;#39;t use the normal &amp;quot;extern&amp;quot; to&amp;nbsp;get the visibility of the variable(s) from bootloader to application.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There is a way to share data and function between the 2 images is to use the &lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.0.0%2Flib_svc.html"&gt;SVCI interface.&lt;/a&gt; You can have a look at the ble_app_buttonless example , where we use SVCI to either send bond information or advertising name to the bootloader via this interface.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;But anyway, for bootloader setting, it&amp;#39;s easier that you access flash directly from the application than trying to communicate with bootloader via SVCI on this. What you need to do is to read the bootloader setting from flash and write new value to flash after you finished receiving image. Then you reset to the bootloader. The bootloader will read the bootloader setting in flash and continue accordingly.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;This also applied for the linker script, they are 2 different applications and not related to each other when you compiling.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/362474?ContentTypeID=1</link><pubDate>Fri, 08 Apr 2022 03:02:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c550f1a1-a6b0-4680-8031-57dad538ad24</guid><dc:creator>JasonGeo</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I am still working on the DFU, progress has been slow.&lt;/p&gt;
&lt;p&gt;I am trying to access the global variable s_dfu_settings, that has been loaded into memory by my bootloader app hex, in my application code (a separate hex)&lt;/p&gt;
&lt;p&gt;I tried to print the value in the settings e.g. app_version or bank_0.image_size and the result is always zero. I did things like &lt;pre class="ui-code" data-mode="c_cpp"&gt;extern &amp;quot;C&amp;quot; nrf_dfu_settings_t s_dfu_settings;&lt;/pre&gt;&amp;nbsp;in my app code but didn&amp;#39;t help. I am puzzled why I can&amp;#39;t see s_dfu_settings in my app code.&lt;/p&gt;
&lt;p&gt;However, when I do direct pointer access to the memory address from app, I can access the settings and values.&lt;/p&gt;
&lt;p&gt;The bootloader code is built with&amp;nbsp;nrf_dfu_settings.c included in the makefile. Do I have to include&amp;nbsp;nrf_dfu_settings.c this same file in my application build? I did the inclusion but still can&amp;#39;t &amp;quot;see&amp;quot; the global variable s_dfu_settings.&lt;/p&gt;
&lt;p&gt;Also do i need to include&amp;nbsp;&amp;nbsp;bootloader_settings_page (r) : ORIGIN = 0x000FF000, LENGTH = 0x1000 in my linker script for my application since it&amp;#39;s included in the linker script for the bootloader.&lt;/p&gt;
&lt;p&gt;Hope I am making sense here.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/359651?ContentTypeID=1</link><pubDate>Wed, 23 Mar 2022 14:57:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fff42fa4-5f0f-47e9-88d8-ad1ad325c908</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Jason,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Please&amp;nbsp;have a look at the function&amp;nbsp;nrf_dfu_bank1_start_addr() in nrf_dfu_utils.c . It&amp;#39;s used&amp;nbsp;in this function update_data_addr_get()&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Basically Bank1 starts right after Bank0 . So it dynamically changes depending on the size of the application which placed at bank0. This is only applied for dual bank update.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/359638?ContentTypeID=1</link><pubDate>Wed, 23 Mar 2022 14:32:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5caa3e88-b466-4347-89b4-f450c26b493f</guid><dc:creator>JasonGeo</dc:creator><description>&lt;p&gt;Thanks Hung, I will see if I can update my SDK version.&lt;/p&gt;
&lt;p&gt;Can you help with question 1 please?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/359592?ContentTypeID=1</link><pubDate>Wed, 23 Mar 2022 11:56:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e20aaa58-3db5-436b-b180-73a21f28017e</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Jason,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;I think we need to align the SDK version that you are using. There&amp;nbsp;were some change between SDK v15.2 and SDK v15.3&lt;br /&gt;I was looking at SDK v15.3 . And I would suggest to port from v15.2 to SDK v15.3 , Here is what I have in&amp;nbsp;&lt;span&gt;on_data_obj_execute_request_sched()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/pastedimage1648036546312v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#39;s important that you find a working example of background DFU and can actually do some background DFU to test. After we can use it as the golden sample to port it to your application.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m not sure if I have pointed you to the&amp;nbsp;example by my coworker Vidar in my blog &lt;a href="https://devzone.nordicsemi.com/guides/short-range-guides/b/software-development-kit/posts/getting-started-with-nordics-secure-dfu-bootloader#h21sjziaqedvq7246h1tdi5lxp57zry"&gt;here&lt;/a&gt;.&amp;nbsp; Could you please try to test if it works for you ?&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/359505?ContentTypeID=1</link><pubDate>Wed, 23 Mar 2022 07:43:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:89ee8d8a-5af0-46f2-bea8-ec47ab7dabd3</guid><dc:creator>JasonGeo</dc:creator><description>&lt;p&gt;Thanks Hung, that should get me off the ground.&lt;/p&gt;
&lt;p&gt;Couple of questions.&lt;/p&gt;
&lt;p&gt;1. How do I set or find where Bank1 address is allocated in Flash memory? Because the app needs to point to the starting address to start writing to it and also to be sure it&amp;#39;s at least after main application size in flash.&lt;/p&gt;
&lt;p&gt;2.&amp;nbsp;&lt;span&gt;Maybe because I have 2 sdk_config.h files, one used for the main app and the other for the bootloader project, however I can&amp;#39;t find the&amp;nbsp;symbol&amp;nbsp;NRF_DFU_IN_APP=1 in&amp;nbsp;both configs.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;3. Do I set the following to 1 in both sdk_config.h files for app and bootloader?&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;NRF_DFU_SETTINGS_ALLOW_UPDATE_FROM_APP&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;NRF_DFU_SETTINGS_IN_APP&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;NRF_DFU_FORCE_DUAL_BANK_APP_UPDATES&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;They are currently set to zero.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;4. On my copy of&amp;nbsp;on_data_obj_execute_request_sched(), where is the part that&amp;#39;s receiving the image chunks and writing to flash? I am having trouble finding those operations. Also it mentioned about scheduler, is the function using back the same FreeRTOS scheduler I have running for the application or is it a specific one provided by Nordic SDK?&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/pastedimage1648020641891v1.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;5. In my copy of nrf_bootloader.c module, I don&amp;#39;t see the lines you highlighted in the picture. Maybe I have a different version from yours? I&amp;#39;ve attached a copy of mine.&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/4442.nrf_5F00_bootloader.c"&gt;devzone.nordicsemi.com/.../4442.nrf_5F00_bootloader.c&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/359332?ContentTypeID=1</link><pubDate>Tue, 22 Mar 2022 10:28:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:719e4f64-d94d-4ffc-bb5e-2f6258b57796</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Jason,&amp;nbsp;&lt;br /&gt;&lt;br /&gt;You are right. In your case the nRF52 application should do the main job of getting the image and storing it into bank1 memory (background DFU).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And it&amp;#39;s correct that you don&amp;#39;t need to modify the bootloader for the task as it should be compatible except for declaring&amp;nbsp;NRF_DFU_IN_APP=1 in sdk_config.h&lt;br /&gt;What you need to do in the application is to write to bootloader setting when you are done receiving the image.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I haven&amp;#39;t looked into the background DFU example for awhile, but my suggestion is to look at these functions:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;- nrf_dfu_req_handler_on_req() inside that&amp;nbsp;on_data_obj_execute_request_sched() is important, it&amp;#39;s where the image trunks are received and once it&amp;#39;s fully received,&amp;nbsp;nrf_dfu_validation_post_data_execute() -&amp;gt; postvalidate() will be called.&amp;nbsp;&lt;br /&gt;When you reset the bootloader the bootloader will do this:&amp;nbsp;&lt;br /&gt;&lt;img src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/pastedimage1647944791890v1.jpeg" alt=" " /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;It will start the progress of swapping the image.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;In the application, settings need to be written nrf_dfu_settings_write_and_backup() inside on_data_obj_execute_request_sched()&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/359250?ContentTypeID=1</link><pubDate>Tue, 22 Mar 2022 01:48:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:17cbc17b-e6c4-4bd2-8459-1e76c1976bdf</guid><dc:creator>JasonGeo</dc:creator><description>&lt;p&gt;Hi Hung, thanks for your support.&lt;/p&gt;
&lt;p&gt;The ESP32 connects to the nrf52840 DK board via UART and the nrf52 issues AT commands to it to send and receive data to the cloud. The main application runs on the nrf52 and ESP32 is purely for connectivity.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The build system we are using is CMake with GCC and at the end of the CMakeList file, there are rules to make DFU archives using the nrfutil.&lt;/p&gt;
&lt;p&gt;In the light of this, can you recommend the best approach to undertake for our system? Will it be background DFU? If so, I will focus on making background DFU happen.&lt;/p&gt;
&lt;p&gt;From your suggestion, it seems like we do not need to modify the bootloader code, only the bootloader settings need to be modified? Where can I find the example code for a suitable bootloader?&lt;/p&gt;
&lt;p&gt;Thanks for the links, I will have a good read about them.&lt;/p&gt;
&lt;p&gt;Hope to hear from you soon.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: DFU approach from cloud to ESP32 to nRF52840</title><link>https://devzone.nordicsemi.com/thread/359110?ContentTypeID=1</link><pubDate>Mon, 21 Mar 2022 12:25:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:db081a32-925e-4a53-866d-42b5d84b832d</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Jason,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you are working with nRF5SDK then the article from Simon is not relevant as it&amp;#39;s applied for NCS SDK.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Could you let me know how you are setting up the ESP and the NRF52 in your application ? Where the main application running on ? Are you using the ESP32 as the connectivity chip or the main application running on it? This would decide how the background DFU should work in your case.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You mentioned &amp;quot;I have a .zip package from the build output&amp;quot;. I&amp;#39;m not aware of a toolchain that can build the .zip output, could you elaborate more how your build system consist of ? Usually we use nrfutil.exe tool to generate .zip file.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Regarding your question about bootloader setting you can have a look &lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.1.0/lib_bootloader.html?cp=8_1_3_5_0_0#lib_bootloader_settings_page"&gt;here&lt;/a&gt;. I have a blog post &lt;a href="https://devzone.nordicsemi.com/guides/short-range-guides/b/software-development-kit/posts/getting-started-with-nordics-secure-dfu-bootloader#h61sjziauupw1j397q9s9ldr01q4j6d5"&gt;here &lt;/a&gt;that covers a little bit about bootloader settting and also give you some explanation on how the bootloader works. You can also find the link to a background DFU example at the end of the blog.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;What we do in the background DFU approach is to receive the image to bank 1 (swap bank , defined in the bootloader setting) and after the image is fully received, write to the bootloader setting&amp;nbsp;about the progress and then reset to the bootloader to do post validation and the actual image swap.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;You can also find the &lt;a href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.thread_zigbee.v2.0.0/thread_example_dfu.html?cp=8_7_4_1_2_4"&gt;Background DFU example &lt;/a&gt;in Thread and Zigbee SDK where we receive the image via Thread/Zigbee and then reset to bootloader to do the swap.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>