<?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>Modify bootloader address</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/40654/modify-bootloader-address</link><description>Hi Sir, 
 As check below link, we know how to re-write the bootloader address. 
 https://devzone.nordicsemi.com/f/nordic-q-a/26300/how-to-use-nrfjprog-to-write-uicr-bootloaderaddr 
 1. But could we re-write the bootloader address in Application layer</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 10 Dec 2018 15:16:16 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/40654/modify-bootloader-address" /><item><title>RE: Modify bootloader address</title><link>https://devzone.nordicsemi.com/thread/161043?ContentTypeID=1</link><pubDate>Mon, 10 Dec 2018 15:16:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4fdaa906-9bb7-47f1-974d-07f0fc9f7c48</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I wasn&amp;#39;t aware that you were talking about the mesh bootloader.&lt;/p&gt;
&lt;p&gt;I received your project. However, I am not able to compile your project. It seems like the src folder is missing, because the compiler can&amp;#39;t find any of the files that are located there. I also took the linker and include folder from the serial example, but I suspect you have tried to compact the project. Also, the main.c file was not placed in the missing src folder. Could you also attach the board .h file? the one you use instead of PCA10056.h?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Modify bootloader address</title><link>https://devzone.nordicsemi.com/thread/160857?ContentTypeID=1</link><pubDate>Mon, 10 Dec 2018 01:15:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4c4f1bc2-2a88-4dcc-90e1-918cbc28b686</guid><dc:creator>Hsu</dc:creator><description>&lt;p&gt;Hi Edvin,&lt;/p&gt;
&lt;p&gt;Attached project use &amp;quot;\nrf5_SDK_for_Mesh_v2.1.1_src\examples\seria&amp;quot;, the &amp;quot;main.c&amp;quot; only update code for &amp;#39;jump to 0x46000&amp;#39;, others are same as source code.&lt;/p&gt;
&lt;p&gt;Another project use &amp;quot;\nRF5_SDK_15.0.0_a53641a\examples\ble_peripheral\ble_app_uart\pca10040\s132\ses&amp;quot;, only modify the start address from 0x26000 to 0x46000 in SES.&lt;/p&gt;
&lt;p&gt;Please let me know if needs more information.&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;p&gt;BRs, Han&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Modify bootloader address</title><link>https://devzone.nordicsemi.com/thread/160044?ContentTypeID=1</link><pubDate>Mon, 03 Dec 2018 15:41:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0fa11a55-b0d6-4809-95c6-1a285b3b3b11</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;I am not able to follow the logic from your main() function.&lt;/p&gt;
&lt;p&gt;If you try:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;typedef  void ( *pFunction ) ( void );

int main(void)

{

    uint8_t op_mode = 0U;

    pFunction jump2app;

    uint32_t jump_addr;

       

    jump_addr = * ( __IO uint32_t * ) ( 0x26000UL);

    jump2app = ( pFunction ) jump_addr;

    /* Initialize user application&amp;#39;s Stack Pointer */

    __set_MSP ( * ( __IO uint32_t * ) ( 0x26000UL ) );

    jump2app();

....

}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;What happens then?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Is it possible to send your project, so that I can try to understand how your implementation is working? Right now, I know only that it isn&amp;#39;t working. Not what the part that isn&amp;#39;t working looks like.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Modify bootloader address</title><link>https://devzone.nordicsemi.com/thread/159981?ContentTypeID=1</link><pubDate>Mon, 03 Dec 2018 13:58:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4210d528-31a7-4290-ba60-ac5f047da4e4</guid><dc:creator>Hsu</dc:creator><description>&lt;p&gt;Hi Edvin,&lt;/p&gt;
&lt;p&gt;1. From item 1, If we don&amp;#39;t change the &amp;quot;start_addr&amp;quot; and keep the original code, it works ( start addr is 0x26000). (bootloader&amp;#39;s main())&lt;/p&gt;
&lt;p&gt;2. From item 3, if we common the code as below, it works because it will go through the original part that start w/ 0x26000.&lt;/p&gt;
&lt;p&gt;======&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; //jump_addr = * ( __IO uint32_t * ) ( 0x46000UL + 4UL );&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; //jump2app = ( pFunction ) jump_addr;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize user application&amp;#39;s Stack Pointer */&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; //__set_MSP ( * ( __IO uint32_t * ) ( 0x46000UL ) );&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; //jump2app();&lt;/p&gt;
&lt;p&gt;======&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;BRs, Han&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Modify bootloader address</title><link>https://devzone.nordicsemi.com/thread/159931?ContentTypeID=1</link><pubDate>Mon, 03 Dec 2018 10:28:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ab51fa81-4e7a-4913-b9bd-75c39460a582</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello Han,&lt;/p&gt;
&lt;p&gt;Does your implementation from your last reply work if you don&amp;#39;t change the application start_addr to 0x46000?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Modify bootloader address</title><link>https://devzone.nordicsemi.com/thread/159899?ContentTypeID=1</link><pubDate>Mon, 03 Dec 2018 08:55:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5e84a676-5efa-4b46-8495-fcbffb6f4a95</guid><dc:creator>Hsu</dc:creator><description>&lt;p&gt;Hi Edvin,&lt;/p&gt;
&lt;p&gt;1. we tried to assign the &amp;quot;&lt;span&gt;start_addr&amp;quot; to&lt;/span&gt;&amp;nbsp;0x26000 (or 0x46000), but boot fail.&lt;/p&gt;
&lt;p&gt;2. Change the flash start address setting from Keil C (0x26000 -. 0x46000), but fail.&lt;/p&gt;
&lt;p&gt;3. Add&amp;nbsp; below code jump to 0x46000 in the main () function, but fail.&lt;/p&gt;
&lt;p&gt;4. The &amp;quot;&lt;span&gt;bootloader settings page&amp;quot; is from IDE? or main() function of bootloader?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;------------&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;typedef&amp;nbsp; void ( *pFunction ) ( void );&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;int main(void)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t op_mode = 0U;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pFunction jump2app;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t jump_addr;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jump_addr = * ( __IO uint32_t * ) ( 0x46000UL + 4UL );&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; jump2app = ( pFunction ) jump_addr;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize user application&amp;#39;s Stack Pointer */&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __set_MSP ( * ( __IO uint32_t * ) ( 0x46000UL ) );&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; jump2app();&lt;/p&gt;
&lt;p&gt;....&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;-------------&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;p&gt;BRs, Han&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Modify bootloader address</title><link>https://devzone.nordicsemi.com/thread/159567?ContentTypeID=1</link><pubDate>Thu, 29 Nov 2018 13:00:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b4b3175e-c8af-4e19-b99a-fd4f39a2d715</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello Han,&lt;/p&gt;
&lt;p&gt;What other than changing start_addr have you done?&lt;/p&gt;
&lt;p&gt;I assume you have programmed these applications with your IDE or nrfjprog or something similar? Or did you do it over DFU?&lt;/p&gt;
&lt;p&gt;If you programmed them directly, did you also program the bootloader settings page?&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Modify bootloader address</title><link>https://devzone.nordicsemi.com/thread/159352?ContentTypeID=1</link><pubDate>Wed, 28 Nov 2018 07:37:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d11f7348-650d-4264-a1d4-aa920d817b48</guid><dc:creator>Hsu</dc:creator><description>&lt;p&gt;Hi Edvin,&lt;/p&gt;
&lt;p&gt;I tried to assign the address &amp;quot;0x26000&amp;quot; to &amp;quot;start_addr&amp;quot; directly, but system cannot boot up well (no response).&lt;/p&gt;
&lt;p&gt;Cannot I assign the address directly?&lt;/p&gt;
&lt;p&gt;BRs, Han&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Modify bootloader address</title><link>https://devzone.nordicsemi.com/thread/158246?ContentTypeID=1</link><pubDate>Tue, 20 Nov 2018 16:09:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:30065770-2f25-4f45-aa65-0996f81126b2</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Sorry. I thought forced dual banking was included in the later SDK versions, but it seems like it isn&amp;#39;t.&lt;/p&gt;
&lt;p&gt;So the answer is that currently, we don&amp;#39;t support this. It is probably possible to implement this by adjusting some registers from the application, such as storing the address of where to start next in the UICR registers, and use this register in the bootloader.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The place where the bootloader starts the application is:&lt;/p&gt;
&lt;p&gt;main() -&amp;gt; nrf_bootloader_init -&amp;gt; nrf_bootloader_app_start -&amp;gt;&amp;nbsp;nrf_bootloader_app_start_final(start_addr);&lt;/p&gt;
&lt;p&gt;So if you read the start_addr from the UICR, it may be possible. You would also have to change the bootloader to store the applications in the places that you want to store them when performing the DFU.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Modify bootloader address</title><link>https://devzone.nordicsemi.com/thread/158227?ContentTypeID=1</link><pubDate>Tue, 20 Nov 2018 15:03:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e593bab3-ed7c-4fb1-a438-297b74d6050f</guid><dc:creator>Hsu</dc:creator><description>&lt;p&gt;Hi Edvin,&lt;/p&gt;
&lt;p&gt;The project use SDK 15.0.0&lt;/p&gt;
&lt;p&gt;BRs, Han&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Modify bootloader address</title><link>https://devzone.nordicsemi.com/thread/158220?ContentTypeID=1</link><pubDate>Tue, 20 Nov 2018 14:49:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:11285bd1-e566-41ad-bd18-339b98581c7a</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;When you compile an application and generate a packet using nrfutil the start address of the application is not stored in that packet. It is the bootloader that deals with placing the application in the correct place.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;What SDK version do you use?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Edvin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>