<?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>Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/87639/example-for-using-uart-dfu-on-nrf52832-on-both-sides-of-communications</link><description>Hello, 
 I am trying to figure out which example is the closest fit for our design. We are using a 2 processor solution in our product, and the firmware for the NRF52832 has to be able to be upgraded via the UART connection to the main processor. I have</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 06 Oct 2022 08:54:44 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/87639/example-for-using-uart-dfu-on-nrf52832-on-both-sides-of-communications" /><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/389552?ContentTypeID=1</link><pubDate>Thu, 06 Oct 2022 08:54:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:17bfbad1-3087-4c26-9c1e-f40fd2c40e93</guid><dc:creator>Simon</dc:creator><description>&lt;p&gt;I just created an nRF Connect SDK solution that support DFU from chip to chip, check it out here:&amp;nbsp;&lt;a href="https://github.com/simon-iversen/ncs_samples/tree/master/central_smp_client_dfu"&gt;https://github.com/simon-iversen/ncs_samples/tree/master/central_smp_client_dfu&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/369516?ContentTypeID=1</link><pubDate>Wed, 25 May 2022 12:05:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:04df0649-2b01-41e8-879d-a8cd2826f02c</guid><dc:creator>Simon</dc:creator><description>[quote user="pkeiles"]I was also working with our local application engineer on investigating an approach&amp;nbsp;to use the serial DFU update within mcuboot directly. The downside of this approach is having to support with one of the mcumgr protocols on the main&amp;nbsp;processor downloading the image (newtmgr or smp possibly).[/quote]
&lt;p&gt;Actually, you can modify mcuboot serial recovery (perform DFU update within mcuboot directly) to not use the mcumgr protocol, like I explained earlier. Be aware that if you perform DFU through the MCUboot, you put the image directly into the primary slot (not in the secondary slot like you do when performing the DFU through the application), and swapping won&amp;#39;t happen. This is because mcuboot acts as the fallback recovery if the update fails.&lt;/p&gt;
[quote user="simoniversen"]&lt;blockquote&gt;&lt;div&gt;Pamela Keiles said:&lt;/div&gt;&lt;div&gt;Can I include all support for the firmware image update via the UART within the bootloader code? And if so, is the smp protocol the only option?&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;
&lt;p&gt;Yes, you can do this.&amp;nbsp;If you want to perform a UART DFU through mcuboot you need to use&amp;nbsp;smp/mcumgr protocol. However, only a limited set of commands are supported, as you see here:&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/boot_serial/src/boot_serial.c#L502-L527"&gt;https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/boot_serial/src/boot_serial.c#L502-L527&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you want to drop the&amp;nbsp;&lt;span&gt;smp/mcumgr, you need to modify MCUboot, which might&amp;nbsp;require&amp;nbsp;less work that using the smp/mcumgr protocol (where you need to implement the protocol on the client side).&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span&gt;The modification of mcuboot, will happen to the function &lt;a href="https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/boot_serial/src/boot_serial.c#L482"&gt;boot_serial_input()&lt;/a&gt;, and instead of parsing the incoming messages as mcumgr commands, you simply store the image blocks right into flash where it belongs.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;[/quote]
&lt;p&gt;&lt;/p&gt;
[quote user="pkeiles"]Thanks again, hopefully I have enough now to get this design piece working quickly.[/quote]
&lt;p&gt;Good luck with the implementation!&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/369384?ContentTypeID=1</link><pubDate>Tue, 24 May 2022 23:00:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:749a0473-0690-4e1c-81e1-b4284e07346a</guid><dc:creator>Pamela Keiles</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;Thank you so much for the detailed response. I was also working with our local application engineer on investigating an approach&amp;nbsp;to use the serial DFU update within mcuboot directly. The downside of this approach is having to support with one of the mcumgr protocols on the main&amp;nbsp;processor downloading the image (newtmgr or smp possibly). I think that might require more development time than the approach we have already been discussing here.&lt;/p&gt;
&lt;p&gt;What I was struggling with was creating a partition manager yml file from scratch to ensure static addresses. But now I see I can copy the build generated yml file as a starting point and adjust it if needed. I don&amp;#39;t like the dynamic approach because if something changes in the future with the bootloader itself (programmed during manufacturing), then I have to worry about any possible addressing changes. I believe it&amp;#39;s safer to use a static file and ensure the flash sections remain fixed.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ll&amp;nbsp;work with what we&amp;#39;ve already outlined and use my own very simple protocol or even xmodem to do the UART transfer from the main processor and flash programming.&lt;/p&gt;
&lt;p&gt;The only part that still seems wrong to me is that whatever&amp;nbsp;is specified in the flash data structure within the device tree file is meaningless. However it is still required to do the build (I tried removing it as a test). I suppose though as you say this is still a work in progress.&lt;/p&gt;
&lt;p&gt;Thanks again, hopefully I have enough now to get this design piece working quickly.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Pam&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/369298?ContentTypeID=1</link><pubDate>Tue, 24 May 2022 13:23:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:919ad814-2ee0-4b93-96dc-c809ef55b23a</guid><dc:creator>Simon</dc:creator><description>[quote user="pkeiles"]Those &amp;quot;other DFU examples&amp;quot; are related to using external flash, I&amp;#39;m trying to write to the internal flash directly with the new application image.[/quote]
&lt;p&gt;Yes, I was just trying to point you to an example that shows how the pm_static.yml file might be used. Sorry for the confusion.&lt;/p&gt;
[quote user="pkeiles"]What is the point of defining the flash partitions in the board.dts file if they are ignored by the partition manager?[/quote]
&lt;p&gt;The reason it is set in the dts file is because that&amp;#39;s how&amp;nbsp;was done in &lt;a href="https://github.com/zephyrproject-rtos/zephyr"&gt;Zephyr&amp;nbsp;upstream&lt;/a&gt; (&lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_sdk%2Fstruct%2Fsdk_ncs_latest.html&amp;amp;cp=8_0"&gt;NCS&lt;/a&gt; contains a&lt;a href="https://github.com/nrfconnect/sdk-zephyr"&gt; downstream version of Zephyr&lt;/a&gt;).&amp;nbsp;Also if you don&amp;#39;t have a &lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.0/nrf/ug_multi_image.html"&gt;multi image build&lt;/a&gt;, the DTS files will be used. Nordic created the Partition Manager to handle multi image builds, because DTS must be set before Kconfig (when building the project, it will first go through the DTS file and set the memory layout, then it will look at all the configurations (Kconfig, prj.conf and so on)). If DTS would be used, we would need to have an own dts file for all possible configurations.&lt;/p&gt;
&lt;p&gt;Be aware that Kconfig and the devicetree&amp;nbsp;in Zephyr is inherited from Linux (see the &lt;a href="https://en.wikipedia.org/wiki/Zephyr_(operating_system)#:~:text=zephyr%20uses%20kconfig%20and%20devicetree%20as%20its%20configuration%20systems%2C%20inherited%20from%20the%20linux%20kernel"&gt;Zephyr Wikipedia page&lt;/a&gt;),&amp;nbsp;which was written for computers with more memory and resources. Zephyr is&amp;nbsp;open source and work in progress.&lt;/p&gt;
&lt;p&gt;Hopefully we will soon get the same solution in NCS as Zephyr upstream now uses, the system device tree.&lt;/p&gt;
[quote user="pkeiles"] I&amp;#39;m assuming I can&amp;#39;t just not use the partition manager?[/quote]
&lt;p&gt;That is correct. You need to use the Partition Manager for now&lt;/p&gt;
[quote user="pkeiles"]This design approach seems to be so over-complicated for what I am trying to do.[/quote]
&lt;p&gt;Actually, your project is quite simple. You don&amp;#39;t need to add any pm_static.yml file or do anything. Just build your project with CONFIG_BOOTLOADER_MCUBOOT=y in the prj.conf, and then check the generated file &amp;lt;sample&amp;gt;/build/partitions.yml or (&amp;lt;sample&amp;gt;\build\zephyr\include\generated\pm_config.h). Look for &lt;strong&gt;two things&lt;/strong&gt;, the &lt;strong&gt;start address of secondary slot&lt;/strong&gt;(mcuboot_secondary) and the &lt;strong&gt;size of secondary slot&lt;/strong&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now you just need to write your new uploaded image to that location.&amp;nbsp;I also think you can just&amp;nbsp;use the generated macros from pm_config.h to get the size and address of the secondary slot.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Please get back to me if you encounter any issues with this.&lt;/p&gt;
[quote user="pkeiles"]Sorry to complain, but I&amp;#39;ve been doing this work for well over 30 years and I find that this whole Zephyr approach is not very user friendly and is very time consuming.[/quote]
&lt;p&gt;I understand your frustration. Zephyr is quite different from other approaches. It is more abstract and moves you further away from the bare metal drivers, and it is a lot of new stuff to learn if you&amp;#39;re new to this.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This texts may be an instersting read:&amp;nbsp;&lt;a href="https://www.zephyrproject.org/leveraging-open-source-software-in-your-software-development-kit-nordic-semiconductors-experience-with-the-zephyr-rtos/"&gt;https://www.zephyrproject.org/leveraging-open-source-software-in-your-software-development-kit-nordic-semiconductors-experience-with-the-zephyr-rtos/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/369129?ContentTypeID=1</link><pubDate>Mon, 23 May 2022 22:25:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1eeb560a-2c45-4004-b7a2-a436d3790e20</guid><dc:creator>Pamela Keiles</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;Those &amp;quot;other DFU examples&amp;quot; are related to using external flash, I&amp;#39;m trying to write to the internal flash directly with the new application image.&lt;/p&gt;
&lt;p&gt;What is the point of defining the flash partitions in the board.dts file if they are ignored by the partition manager? I&amp;#39;m assuming I can&amp;#39;t just not use the partition manager? This design approach seems to be so over-complicated for what I am trying to do.&lt;/p&gt;
&lt;p&gt;Sorry to complain, but I&amp;#39;ve been doing this work for well over 30 years and I find that this whole Zephyr approach is not very user friendly and is very time consuming.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks for your help and regards,&lt;/p&gt;
&lt;p&gt;Pam&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/369126?ContentTypeID=1</link><pubDate>Mon, 23 May 2022 22:05:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5e0fcad5-7daf-4a1c-a6dd-5c59a3fde664</guid><dc:creator>Simon</dc:creator><description>&lt;p&gt;When your project contains child images (like mcuboot), the Partition Manager&amp;nbsp;will be used to partition the images instead of the device tree. It will go through the pm.yml files from all the child images and dynamically place the images, and eventually it will place the app where it&amp;#39;s room left. Read the documentation for more information:&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/nrf/scripts/partition_manager/partition_manager.html"&gt;https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.1/nrf/scripts/partition_manager/partition_manager.html&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can also set the partitions statically using a pm_static.yml file, for example like it&amp;#39;s done in&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/guides/nrf-connect-sdk-guides/b/software/posts/ncs-dfu#other_dfu_samples"&gt;Other DFU samples&lt;/a&gt;, or in the &lt;a href="https://github.com/nrfconnect/sdk-nrf/blob/main/applications/machine_learning/configuration/nrf5340dk_nrf5340_cpuapp/pm_static.yml"&gt;maching learning application&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Please let me know if anything is unclear&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/369124?ContentTypeID=1</link><pubDate>Mon, 23 May 2022 21:58:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:83e42386-8996-4172-be6d-5a5cbc5421c1</guid><dc:creator>Pamela Keiles</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m struggling with accessing the flash partition area directly using the partition manager defines and the device tree specification for my board. I was referencing the &amp;quot;soc_flash_nrf&amp;quot; example, but it doesn&amp;#39;t seem to incorporate the partition manager, which I believe is automatic when using &amp;quot;mcuboot&amp;quot; correct?&lt;/p&gt;
&lt;p&gt;I have also been looking at the resultant defines in the &amp;quot;pm_config.h&amp;quot; file, and they are not what I would expect from my board.dts file.&lt;/p&gt;
&lt;p&gt;Specifically the sizes and start addresses seem wrong. Here is how the flash is defined in my device tree file:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;amp;flash0 {&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; partitions {&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; compatible = &amp;quot;fixed-partitions&amp;quot;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #size-cells = &amp;lt;1&amp;gt;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; boot_partition: partition@0 {&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; label = &amp;quot;mcuboot&amp;quot;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x00000000 0xc000&amp;gt;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; slot0_partition: partition@c000 {&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; label = &amp;quot;image-0&amp;quot;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x0000C000 0x32000&amp;gt;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; slot1_partition: partition@3e000 {&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; label = &amp;quot;image-1&amp;quot;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x0003E000 0x32000&amp;gt;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; scratch_partition: partition@70000 {&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; label = &amp;quot;image-scratch&amp;quot;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x00070000 0xa000&amp;gt;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; storage_partition: partition@7a000 {&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; label = &amp;quot;storage&amp;quot;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reg = &amp;lt;0x0007a000 0x00006000&amp;gt;;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;&amp;nbsp; &amp;nbsp; };&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;em&gt;};&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;em&gt;&amp;nbsp;&lt;/em&gt;&lt;/div&gt;
&lt;div&gt;However when I look at the resultant &amp;quot;pm_config.h&amp;quot; file, the values do not match. Maybe this is effected by this unexpected &amp;quot;PM_MCUBOOT_PAD_SIZE&amp;quot; added which messes up the defined starting locations of the slots?&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;I&amp;#39;ll keep plugging away at this, but any help you can provide would be great.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Thanks,&lt;/div&gt;
&lt;div&gt;Pam&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/368889?ContentTypeID=1</link><pubDate>Sat, 21 May 2022 15:40:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:086b64d9-0a4b-455b-b1b9-af4792c24b52</guid><dc:creator>Pamela Keiles</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;Great, I think I got the sequence from your explanations. I&amp;#39;ll be working on this part of the design the next couple of days and I&amp;#39;ll let you know if I have any other questions. I will also be trying to &amp;quot;break&amp;quot; the bootloader to make sure it recovers nicely, such as only a partial image being present in the second bank.&lt;/p&gt;
&lt;p&gt;Thanks for all your detailed help.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Pam&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/368810?ContentTypeID=1</link><pubDate>Fri, 20 May 2022 11:21:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ade1d3ea-b28b-4e53-b447-913e4539c372</guid><dc:creator>Simon</dc:creator><description>&lt;p&gt;You do it in the opposite way. After you&amp;#39;ve programmed the secondary flash with the new image, you force a reboot, then you call&amp;nbsp;&lt;span&gt;boot_write_img_confirmed() routine&amp;nbsp;from the new image (now present in the primary slot).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Like I explained in this answer:&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/support-private/support/288653#permalink=757710"&gt;https://devzone.nordicsemi.com/support-private/support/288653#permalink=757710&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/368683?ContentTypeID=1</link><pubDate>Thu, 19 May 2022 17:35:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4694ac97-e196-4b4a-b2f7-2e01ee8a2e6f</guid><dc:creator>Pamela Keiles</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;I will be performing the second slot flash update from the app, which receives it via the UART directly. So it sounds like all I have to do after programming the flash with the new image, is call the &amp;quot;boot_write_img_confirmed() routine and force a reboot, is that correct?&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Pam&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/368452?ContentTypeID=1</link><pubDate>Wed, 18 May 2022 16:07:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:61a61daa-4c01-4eb0-b3e4-a5fc8d703eb6</guid><dc:creator>Simon</dc:creator><description>&lt;p&gt;Are you referring to&amp;nbsp;&lt;span&gt;&lt;a href="https://github.com/nrfconnect/sdk-zephyr/blob/v2.7.99-ncs1/include/dfu/mcuboot.h#L181"&gt;boot_write_img_confirmed()&lt;/a&gt;? This is present inside a file named&amp;nbsp;mcuboot.h, but it is located inside the &lt;a href="https://github.com/nrfconnect/sdk-zephyr"&gt;zephyr repository&lt;/a&gt;, not &lt;a href="https://github.com/nrfconnect/sdk-mcuboot"&gt;mcuboot&lt;/a&gt;. This will not perform any validation checks or do any swapping, but just mark it as &amp;quot;confirmed&amp;quot;. It should be run from the application.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;You don&amp;#39;t need to care about the validation or swapping of the image. This will happen automatically in mcuboot when it&amp;#39;s booted:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;Validation: &lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/zephyr/main.c#L541"&gt;&lt;span&gt;mcuboot main.c --&amp;gt; boot.go&lt;/span&gt;&lt;/a&gt;()&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/bootutil/src/loader.c#L2003"&gt;loader.c --&amp;gt;&amp;nbsp;&lt;span&gt;context_boot_go()&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/bootutil/src/loader.c#L1804"&gt;&lt;span&gt;loader.c --&amp;gt; boot_prepare_image_for_update()&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/bootutil/src/loader.c#L711"&gt;&lt;span&gt;&lt;span&gt;loader.c --&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;boot_validate_slot()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Swapping (switch):
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/zephyr/main.c#L541"&gt;&lt;span&gt;mcuboot main.c --&amp;gt; boot.go&lt;/span&gt;&lt;/a&gt;()&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/bootutil/src/loader.c#L2003"&gt;loader.c --&amp;gt;&amp;nbsp;&lt;span&gt;context_boot_go()&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/bootutil/src/loader.c#L1608"&gt;loader.c --&amp;gt; boot_perform_update()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;Best regards,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Simon&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/368122?ContentTypeID=1</link><pubDate>Tue, 17 May 2022 00:58:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6c9dff5b-62ca-4235-83b9-b00fb5e7f0c0</guid><dc:creator>Pamela Keiles</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m going to try and work with the flash erase/write routines directly for the firmware update. I do remember seeing an API to call within I think mcuboot which can be used to set the newly downloaded image as valid and switch the active image slot. Do you know where this is described or an example of its usage?&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Pam&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/367846?ContentTypeID=1</link><pubDate>Fri, 13 May 2022 12:52:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e33c7bc8-fa79-45fb-a6be-6963ba122f3c</guid><dc:creator>Simon</dc:creator><description>&lt;p&gt;Yes this is absolutely possible.&lt;/p&gt;
[quote user="pkeiles"] Then after it confirms the programming is correct (via a checksum or header/tail data check?),[/quote]
&lt;p&gt;This is actually done by the bootloader, all you need from the current running application, is to place the image into the secondary slot. Then on reset, the mcuboot will check if there is a valid image present in secondary slot and swap it with the image in the primary slot if that&amp;#39;s the case. Then, it will boot the new image.&lt;/p&gt;
[quote user="pkeiles"]call the correct routines within the bootloader to mark the new image as active and execute the reset.[/quote]
&lt;p&gt;This should be done from within the image itself, like it&amp;#39;s done in the &lt;a href="https://github.com/nrfconnect/sdk-nrf/blob/416ecf1dfab27662c7f7c463de0d16a9734485ea/samples/nrf9160/http_update/application_update/src/main.c#L60"&gt;https_update sample&lt;/a&gt;, so mcuboot won&amp;#39;t revert back to the old image on the next reet.&lt;/p&gt;
&lt;p&gt;The reason it mcuboot will revert back the images on the next reset is to prevent the product from being bricked, for example if the new firmware is faulty, and causes the device to crash.&lt;/p&gt;
&lt;p&gt;Let me create a detailed list of how things happen (when performing a dfu through the application)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Application receives the image, and places it in the secondary slot&lt;/li&gt;
&lt;li&gt;The device resets&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;This can be done externally by pressing a button, or within the application itself using sys_reboot() (see \zephyr\lib\os\reboot.c)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;MCUboot will run first after a reboot and it can see that there is a new image in secondary slot. It will then check if the image is valid (see &lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.0/mcuboot/design.html#integrity-check"&gt;MCUboot--&amp;gt;Integrity check&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;If a valid image is present in the secondary slot, mcuboot wil swap it with the image in the primary slot&lt;/li&gt;
&lt;li&gt;MCUboot will then boot the new update that are now present in the primary slot&lt;/li&gt;
&lt;li&gt;The new update will run, and needs to confirm itself (&lt;span&gt;&amp;nbsp;like it&amp;#39;s done in the&amp;nbsp;&lt;/span&gt;&lt;a href="https://github.com/nrfconnect/sdk-nrf/blob/416ecf1dfab27662c7f7c463de0d16a9734485ea/samples/nrf9160/http_update/application_update/src/main.c#L60"&gt;https_update sample&lt;/a&gt;), so MCUboot won&amp;#39;t revert back on the next reset&lt;/li&gt;
&lt;/ol&gt;
[quote user="pkeiles"]I&amp;#39;m assuming the flash driver routines can just be called directly?[/quote]
&lt;p&gt;Yes, you can. Check out the flash API:&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.0/zephyr/reference/peripherals/flash.html#overview"&gt;https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.0/zephyr/reference/peripherals/flash.html#overview&lt;/a&gt;. Take a look at the example&amp;nbsp;\zephyr\samples\drivers\soc_flash_nrf to see how to use this API. The http_update sample uses the &lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.0/zephyr/reference/storage/stream/stream_flash.html"&gt;Stream Flash API&lt;/a&gt;&amp;nbsp;(through \nrf\include\dfu\dfu_target_stream.h), so that might be worth taking a look at.&lt;/p&gt;
&lt;p&gt;Good luck and best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/367705?ContentTypeID=1</link><pubDate>Thu, 12 May 2022 16:59:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6a70a9e6-0259-4bd7-b8be-c2bdb26eb605</guid><dc:creator>Pamela Keiles</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;Another option is to not rely on the bootloader for the update itself but perform the flash programming within my application. Since there are 2 slots, the current running application can do the flash write directly to the other slot. Then after it confirms the programming is correct (via a checksum or header/tail data check?), call the correct routines within the bootloader to mark the new image as active and execute the reset. Does that sound doable? I&amp;#39;m assuming the flash driver routines can just be called directly?&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Pam&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/367638?ContentTypeID=1</link><pubDate>Thu, 12 May 2022 13:16:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:50d3c34c-0214-4d17-815f-84de466e307f</guid><dc:creator>Simon</dc:creator><description>[quote user="pkeiles"]Can I include all support for the firmware image update via the UART within the bootloader code? And if so, is the smp protocol the only option?[/quote]
&lt;p&gt;Yes, you can do this.&amp;nbsp;If you want to perform a UART DFU through mcuboot you need to use&amp;nbsp;smp/mcumgr protocol. However, only a limited set of commands are supported, as you see here:&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/boot_serial/src/boot_serial.c#L502-L527"&gt;https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/boot_serial/src/boot_serial.c#L502-L527&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you want to drop the&amp;nbsp;&lt;span&gt;smp/mcumgr, you need to modify MCUboot, which might&amp;nbsp;require&amp;nbsp;less work that using the smp/mcumgr protocol (where you need to implement the protocol on the client side).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The modification of mcuboot, will happen to the function &lt;a href="https://github.com/nrfconnect/sdk-mcuboot/blob/v1.8.99-ncs1/boot/boot_serial/src/boot_serial.c#L482"&gt;boot_serial_input()&lt;/a&gt;, and instead of parsing the incoming messages as mcumgr commands, you simply store the image blocks right into flash where it belongs.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Please let me know what approach you prefer, and I will assist you with the implementation.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/367038?ContentTypeID=1</link><pubDate>Tue, 10 May 2022 01:23:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dc8eda7f-e6b2-4d3e-8c19-b8c341af2a50</guid><dc:creator>Pamela Keiles</dc:creator><description>&lt;p&gt;Hi Again,&lt;/p&gt;
&lt;p&gt;Forget the question related to using the UART, I can figure that out myself by referencing the serial drivers directly in my SDK.&lt;/p&gt;
&lt;p&gt;I think I need to focus my question on the usage of the bootloader to directly update the image. I would prefer to have all of the update support handled within the bootloader image. If this requires the usage of the mcumgr/smp protocol, then I can incorporate that within my main processor controlling the upgrade process.&lt;/p&gt;
&lt;p&gt;Can I include all support for the firmware image update via the UART within the bootloader code? And if so, is the smp protocol the only option?&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Pam&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/367027?ContentTypeID=1</link><pubDate>Mon, 09 May 2022 21:28:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bccd1b13-0ab3-46a8-86c8-4b1b66df1a2c</guid><dc:creator>Pamela Keiles</dc:creator><description>&lt;p&gt;Hi Simon and Kazi,&lt;/p&gt;
&lt;p&gt;After working with the &amp;quot;lpuart&amp;quot; example, I think that even it is too over-complicated. First of all, using custom RDY/REQ pins versus the standard CTS/RTS pins will be a concern for me on the other side of the communication. Plus, all I really need is basic UART receive and transmit functionality using RAM buffers and callbacks to the application to process the messages.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m new to this whole way of using Zephyr and all of the configuration options, but it seems like using the available libraries and drivers becomes much more complicated having to determine the required &amp;quot;config&amp;quot; defines and the desired API. Isn&amp;#39;t there a simpler way to use these drivers for just the Nordic chip? Or worst case, simplistic examples for using the processor peripherals?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Pam&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/367022?ContentTypeID=1</link><pubDate>Mon, 09 May 2022 20:02:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ce473997-99c9-480c-8b9f-b4fc14a2ac25</guid><dc:creator>Pamela Keiles</dc:creator><description>&lt;p&gt;Hi Simon and Kazi,&lt;/p&gt;
&lt;p&gt;It seems like the &amp;quot;smp/mcumgr&amp;quot; takes up a lot of code space for functionality that I don&amp;#39;t really need. I am fine with using simple custom UART commands to communicate between the 2 processors and program the secondary code slot directly in my application.&lt;/p&gt;
&lt;p&gt;Currently I am focusing on the basic UART communication using the &amp;quot;lpuart&amp;quot; example. Can you direct me to an example that does the programming of the second flash slot and uses the bootloader to swap the images? I understand there is a lot of documentation for the &amp;quot;MCUboot&amp;quot; online, but having an example would be very helpful. Also ideally if there are references to the image header to extract the version information, or at least show how to use the driver for updating the flash and swapping the images.&lt;/p&gt;
&lt;p&gt;Thanks for your help and regards,&lt;/p&gt;
&lt;p&gt;Pam&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/366752?ContentTypeID=1</link><pubDate>Fri, 06 May 2022 13:45:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:04f52509-132e-4ace-8b9f-a2f13f216ba8</guid><dc:creator>Kazi Afroza Sultana</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;It is possible but we do not have exact sample you are talking about. This is for BLE&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-nrf/tree/v1.9.99-dev1/samples/bluetooth/central_smp_client"&gt;https://github.com/nrfconnect/sdk-nrf/tree/v1.9.99-dev1/samples/bluetooth/central_smp_client&lt;/a&gt;&amp;nbsp;. One thing to be noted that&amp;nbsp;&lt;span&gt;&amp;nbsp;the central_smp_client sample only has the&amp;nbsp;&lt;/span&gt;&lt;em&gt;echo&lt;/em&gt;&lt;span&gt;&amp;nbsp;command. So you have to add&amp;nbsp;&lt;/span&gt;&lt;em&gt;upload&lt;/em&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;em&gt;confirm&lt;/em&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;em&gt;reset&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/em&gt;&lt;span&gt;commands in the code by yourself.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;BLE layer needs to be swapped with an UART layer. But you do not need to use mcumgr/smp protocol to send the image. The image (bin file) can be sent over UART chunk by chunk. When the image is received its can be put in secondary slot. you can look at this sample and can swap the&amp;nbsp;&lt;span&gt;bt_dfu_smp_command() to UARTfunction&lt;/span&gt;&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-nrf/blob/v1.9.99-dev1/samples/bluetooth/central_smp_client/src/main.c#L343"&gt;https://github.com/nrfconnect/sdk-nrf/blob/v1.9.99-dev1/samples/bluetooth/central_smp_client/src/main.c#L343&lt;/a&gt;&amp;nbsp;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;
&lt;p&gt;Best Regards,&lt;/p&gt;
&lt;p&gt;Kazi Afroza Sultana&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Example For Using UART DFU on NRF52832 on both sides of communications</title><link>https://devzone.nordicsemi.com/thread/366750?ContentTypeID=1</link><pubDate>Fri, 06 May 2022 13:41:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:44003eb1-6517-4490-a6bc-7fe52e1417cb</guid><dc:creator>Simon</dc:creator><description>&lt;p&gt;As Kazi explained, it is not necessary to use the smp/mcumgr protocol. This case might be useful regarding that:&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/77869/update-code-via-uart-instead-of-fota-nrf9160"&gt;devzone.nordicsemi.com/.../update-code-via-uart-instead-of-fota-nrf9160&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>