<?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>Ack not received DFU UART</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/17019/ack-not-received-dfu-uart</link><description>Hello, 
 I&amp;#39;m having problems running the DFU over serial bootloader example. The nrfutil command to update the application fails with message &amp;quot;timed out waiting for acknowledgement from device&amp;quot;. 
 When I connect a logic analyzer to the UART pins I can</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 05 Jan 2017 16:21:56 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/17019/ack-not-received-dfu-uart" /><item><title>RE: Ack not received DFU UART</title><link>https://devzone.nordicsemi.com/thread/65302?ContentTypeID=1</link><pubDate>Thu, 05 Jan 2017 16:21:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:309305cf-af8d-4798-9c23-a8395a1b9960</guid><dc:creator>ScottD</dc:creator><description>&lt;p&gt;Ahh, thanks for the reply.  I misunderstood your previous comment and thought you fixed the issue by changing the timeouts.  I fixed my issue as well.  I was having problems with the timing of the USB connection in Linux and added delays elsewhere to remedy.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Ack not received DFU UART</title><link>https://devzone.nordicsemi.com/thread/65301?ContentTypeID=1</link><pubDate>Thu, 05 Jan 2017 10:43:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5e43d976-e608-4e5f-aa07-41d1b1d7f507</guid><dc:creator>Geeogham</dc:creator><description>&lt;p&gt;I used the default timeouts in the script. I found another issue in the example provided in the SDK11 for the DFU bootloader. The softdevice used to build the example image does not match the softdevice provided with the SDK.
Can you check if the image you&amp;#39;re trying to flash supports the softdevice on your device?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Ack not received DFU UART</title><link>https://devzone.nordicsemi.com/thread/65300?ContentTypeID=1</link><pubDate>Thu, 29 Dec 2016 16:48:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b3567b7b-7ac9-4f7e-905b-053129c7d786</guid><dc:creator>ScottD</dc:creator><description>&lt;p&gt;@Geeogham:  I think I am having a similar issue on my system.  Could you possibly provide the updated timeouts you used in the python script to address this issue?  Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Ack not received DFU UART</title><link>https://devzone.nordicsemi.com/thread/65299?ContentTypeID=1</link><pubDate>Thu, 20 Oct 2016 15:36:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c286d22f-b64f-43e2-9df7-d00c3094b65c</guid><dc:creator>Geeogham</dc:creator><description>&lt;p&gt;Thanks Bjorn, I&amp;#39;ve solved the problem using the timeouts defined in the python script.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Ack not received DFU UART</title><link>https://devzone.nordicsemi.com/thread/65298?ContentTypeID=1</link><pubDate>Thu, 20 Oct 2016 06:50:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e0b9371e-236d-49a1-80f4-0cb0b90a4bfc</guid><dc:creator>bjorn-spockeli</dc:creator><description>&lt;p&gt;@geeogham: I suggest that you take a look at &lt;a href="https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/nordicsemi/dfu/dfu_transport_serial.py"&gt;this&lt;/a&gt; python script from pc-nrfutil, which is used to perform serial DFU. Around line 60 you&amp;#39;ll see several the definitions of several delays, e.g. how long you should wait before sending more data over the UART after you have sent the start packet.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Ack not received DFU UART</title><link>https://devzone.nordicsemi.com/thread/65297?ContentTypeID=1</link><pubDate>Fri, 14 Oct 2016 07:44:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b498b1fd-78e6-41b0-a793-280ddb4e780f</guid><dc:creator>Geeogham</dc:creator><description>&lt;p&gt;I think I&amp;#39;ve found the problem: the bootloader starts erasing the swap to receive the application image while the ack for the start packet is still being transmitted. Accessing the flash blocks the CPU from sending more bytes to the UART, which explains the gaps in the transmission.&lt;/p&gt;
&lt;p&gt;Basically ack_transmit() tries to send as many bytes as possible and relies on the next TX done interrupt to send more bytes when the UART is busy. So the call to ack_transmit() first sends 2 bytes then returns before the entire packet has been transmitted and process_dfu_packet() can run and start to prepare the flash. Erasing a page in flash disables all interrupts, so the UART interrupts are processed late and we see these 2 ms gaps (consistent with the time it takes to erase a page) between bytes sent over the UART.&lt;/p&gt;
&lt;p&gt;Has anyone had the same problem?
It seems a synchronization mechanism is needed to delay accessing the flash until after the ack has been transmitted.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>