<?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>Official BLE and UART Combined DFU bootloader?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/72015/official-ble-and-uart-combined-dfu-bootloader</link><description>Hello, 
 I see a number of threads on the Nordic devzone where people are asking about official support for a DFU bootloader that combines BLE and UART for transports. Most of these posts lead to long discussions of debugging issues with manually combining</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 06 May 2021 14:51:52 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/72015/official-ble-and-uart-combined-dfu-bootloader" /><item><title>RE: Official BLE and UART Combined DFU bootloader?</title><link>https://devzone.nordicsemi.com/thread/308586?ContentTypeID=1</link><pubDate>Thu, 06 May 2021 14:51:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:efdbfebf-e2fb-4cc7-a1fc-7ade38017619</guid><dc:creator>droberson</dc:creator><description>&lt;p&gt;Hey Isotta,&lt;/p&gt;
&lt;p&gt;If you can&amp;#39;t find the answers to your questions on the Devzone or in this thread, I recommend creating a new ticket so Nordic can help you. I have detailed all of my sticking points in the posts above.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Derek&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Official BLE and UART Combined DFU bootloader?</title><link>https://devzone.nordicsemi.com/thread/308582?ContentTypeID=1</link><pubDate>Thu, 06 May 2021 14:47:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:59d89fb9-4f43-46f4-864e-f56cc96034a6</guid><dc:creator>Isotta</dc:creator><description>&lt;p&gt;Hi droberson an favor. I have to combine on nordic DK RF52840 a bootloader UART+BLE. I read that you did this integration, can you help me? I&amp;#39;m new on nordic. Thanks in advance :-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Official BLE and UART Combined DFU bootloader?</title><link>https://devzone.nordicsemi.com/thread/297731?ContentTypeID=1</link><pubDate>Thu, 04 Mar 2021 10:24:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5c64cc00-8588-46da-9379-b874cc18a497</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Thanks a lot for the feedback and the info Derek. This&amp;nbsp;is very useful for other developers :)&lt;br /&gt; Please let me know if you have further questions.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Official BLE and UART Combined DFU bootloader?</title><link>https://devzone.nordicsemi.com/thread/297667?ContentTypeID=1</link><pubDate>Thu, 04 Mar 2021 07:15:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f368a4fe-b39d-4aeb-a980-41c7203a5dc3</guid><dc:creator>droberson</dc:creator><description>&lt;p&gt;Hey Hung,&lt;/p&gt;
&lt;p&gt;After hours of debugging, I am able to confirm that I successfully combined the BLE and UART DFU examples from SDK 15.3 and tested UART DFU of a 75KB application at 9600 baud. There were a few major things I needed to do in order to get it to work which are summarized below for anyone else who comes across this post:&lt;/p&gt;
&lt;p&gt;1. Allocate more flash space for the bootloader by moving the start address up.&lt;/p&gt;
&lt;p&gt;2. Set&amp;nbsp;&lt;strong&gt;&lt;/strong&gt;NRF_DFU_PROTOCOL_REDUCED to 0 in sdk_config.h&amp;nbsp; &amp;nbsp;(Otherwise the DFU transfer will fail on UART)&lt;/p&gt;
&lt;p&gt;See this thread for details on #2:&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/60124/how-to-add-buttonless_dfu-and-serial_dfu-functions-at-the-same-time/245977"&gt;https://devzone.nordicsemi.com/f/nordic-q-a/60124/how-to-add-buttonless_dfu-and-serial_dfu-functions-at-the-same-time/245977&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. If not using hardware flow control, set&amp;nbsp;NRF_DFU_SERIAL_UART_USES_HWFC to 0 in sdk_config.h and reduce the baud rate of the UART to 9600.&lt;/p&gt;
&lt;p&gt;4. Don&amp;#39;t use&amp;nbsp;nRF Command Line Tools version 10.12.1 (Latest release as of 3/3/21) because mergehex.exe in this release is broken. Details:&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/69987/latest-mergehex-output-fails-to-be-programmed-mergehex-9-8-1-produces-different-hex-than-10-12-1"&gt;devzone.nordicsemi.com/.../latest-mergehex-output-fails-to-be-programmed-mergehex-9-8-1-produces-different-hex-than-10-12-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While I am at it, if anyone is looking to debug the SDK 15.3 bootloader using Keil uVision refer to this thread:&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/45910/debugging-serial-uart-bootloader-sdk-15-3"&gt;https://devzone.nordicsemi.com/f/nordic-q-a/45910/debugging-serial-uart-bootloader-sdk-15-3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My next step is to integrate the USB transport. Hopefully this will be much easier now that I have overcome the above hurdles.&lt;/p&gt;
&lt;p&gt;Thanks for your help!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For those looking to merge the USB CDC ACM transport with the BLE transport, make sure the USB DFU file is compiled before the BLE DFU file, otherwise the USB transport will fail to initialize because the power module was previously initialized by the SoftDevice. This ensures that the USB transport module registers before the BLE module transport.&lt;/p&gt;
&lt;p&gt;To do this in Keil, make sure the files in your project list are in this order:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;Window Top&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;nrf_dfu_serial_usb.c:&amp;nbsp;&lt;/span&gt;common\components\libraries\bootloader\serial_dfu\nrf_dfu_serial_usb.c&lt;/p&gt;
&lt;p&gt;&lt;span&gt;nrf_dfu_ble.c:&amp;nbsp;&lt;/span&gt;common\components\libraries\bootloader\ble_dfu\nrf_dfu_ble.c&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To better demonstrate:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/6646.USB_5F00_before_5F00_BLE_5F00_otherwise_5F00_usb_5F00_fails_5F00_init.png" /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Official BLE and UART Combined DFU bootloader?</title><link>https://devzone.nordicsemi.com/thread/296667?ContentTypeID=1</link><pubDate>Fri, 26 Feb 2021 23:48:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1bb405a2-cf85-47f5-ad0b-d4990c63a9d2</guid><dc:creator>droberson</dc:creator><description>&lt;p&gt;Hey Hung,&lt;/p&gt;
&lt;p&gt;I will implement and test at 9600 baud next week and report my results. If I have no issues, I will close this ticket.&lt;/p&gt;
&lt;p&gt;Thanks for your help in clarifying!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Official BLE and UART Combined DFU bootloader?</title><link>https://devzone.nordicsemi.com/thread/296497?ContentTypeID=1</link><pubDate>Fri, 26 Feb 2021 11:17:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:436e73c4-c4a3-4d03-8e3c-295f785ecd1d</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Derek,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. No, we don&amp;#39;t have official bootloader example that combined the 2 transports. But the modification needed is minimal, you just need to include the transport .c and .h file and it should work.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. Yes HWFC is needed, unless you use a very low baudrate, such as 9600bps. The reason is that the potential overflow when the CPU is halted when doing flash write and flash erase.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>