<?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>Understanding booting; SD not handling SVC</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/57307/understanding-booting-sd-not-handling-svc</link><description>Hi, 
 
 Why is it that when NRFFW[0] = 0xFFFFFFFF SVC calls are passed on to the softdevice but when NRFFW[0] = 0x19000 they are passed on to the SVC handler of the application? 
 
 I am using softdevice 6.1.0 and SDK version 15.2.0. 
 
 When stepping</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 04 Feb 2020 08:36:38 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/57307/understanding-booting-sd-not-handling-svc" /><item><title>RE: Understanding booting; SD not handling SVC</title><link>https://devzone.nordicsemi.com/thread/232465?ContentTypeID=1</link><pubDate>Tue, 04 Feb 2020 08:36:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9e5cbd72-2815-4f64-84ce-6976f257a057</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hi Bert,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;&lt;span&gt;NRFFW[0] register is used to signal the MBR that a bootloader is present, and at what address it starts at. And when a bootloader is present, the MBR will not invoke the Softdevice but forward execution and interrupts directly to the bootloader (or application in this case) effectively bypassing&amp;nbsp;the Softdevice. That is why the SVC interrupts are not being processed but forwarded to the application with this register configuration.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You can invoke the Softdevice from your bootloader by issuing the following MBR command:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;sd_mbr_command_t com = {SD_MBR_COMMAND_INIT_SD, };

/**&amp;lt; Init forwarding interrupts to SD, and run reset function in SD*/

err_code = sd_mbr_command(&amp;amp;com);
APP_ERROR_CHECK(err_code);

/* Change Softedvice interrupt forwarding address if it is different from the default starting address (0x19000 for this Softdevice)&amp;#160;*/

err_code = sd_softdevice_vector_table_base_set(&amp;lt;vector table address&amp;gt;);
APP_ERROR_CHECK(err_code);&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;You can also read more about the MBR and the startup sequence in the SDS here:&amp;nbsp;&lt;a title="Master boot record and bootloader" href="https://infocenter.nordicsemi.com/topic/sds_s112/SDS/s1xx/mbr_bootloader/mbr_bootloader.html?cp=4_5_0_0_11"&gt;Master boot record and bootloader&lt;/a&gt;. I hope this helps. If anything is unclear, let me know.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Kind regards,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Vidar&lt;/span&gt;&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></channel></rss>