<?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>Bootloader difference and implementation from SDK 14 to SDK 16</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/56211/bootloader-difference-and-implementation-from-sdk-14-to-sdk-16</link><description>Hi, 
 few years back I&amp;#39;ve developed an application and a simple SPI bootloader for nRF51. 
 Later I&amp;#39;ve implemented the same on SDK 14 for nRF52832. Softdevice is SD132. 
 Bootloader is very simple and uses application to transfer data to external SPI</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 06 Jan 2020 13:31:24 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/56211/bootloader-difference-and-implementation-from-sdk-14-to-sdk-16" /><item><title>RE: Bootloader difference and implementation from SDK 14 to SDK 16</title><link>https://devzone.nordicsemi.com/thread/227687?ContentTypeID=1</link><pubDate>Mon, 06 Jan 2020 13:31:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1d081bf2-97d5-4eac-9048-91807a35be6a</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;1.&lt;/p&gt;
&lt;p&gt;There is a new SoftDevice helper library, so you will find much of the same information in nrf_sdm.h. There you have&amp;nbsp;SD_SIZE_GET(), for instance. There you also have&amp;nbsp;SD_FLASH_SIZE macro, specifying the SoftDevice size excluding the MBR. The MBR_SIZE is specified in nrf_mbr.h, and is always 0x1000. This means that the Start of the SoftDevice is always at&amp;nbsp;MBR_SIZE (since it is immediately after), and the start of the application is always at (&lt;span&gt;SD_FLASH_SIZE&amp;nbsp;+&amp;nbsp;MBR_SIZE&lt;/span&gt;).&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;BOOTLOADER_START_ADDR&amp;nbsp;concept is used in the bootloader, but since you have your own bootloader it may not be relevant? The key point is just that you need to provide the start address of your bootloader to the MBR, which you do by writing the start address of your bootloader to the dedicated register in the UICR (0x10001014). You can search for &amp;quot;&lt;span&gt;uicr_bootloader_start_address&lt;/span&gt;&amp;quot;in SDK 16 to see how it is done in our example bootloader.&lt;/p&gt;
&lt;p&gt;2.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;SDK 16 does not include a &amp;quot;background&amp;quot; DFU bootloader example, but it is possible to implement this using the DFU modules we provide so that the application is responsible for validating and transferring the image, leaving only the activation to the bootloader. Though there are no examples, this has been discussed a few times, for instance in &lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/46994/background-dfu-application-source-code"&gt;this thread&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>