<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Booloader to Application jump in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Booloader-to-Application-jump/m-p/674316#M41458</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;modified code as follows.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void start_application(unsigned long app_link_location)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint32_t stackPointer = APP_VECTOR_TABLE[kInitialSP];&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint32_t applicationAddress = APP_VECTOR_TABLE[kInitialPC];&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;static uint32_t s_stackPointer = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;s_stackPointer = stackPointer;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;static void (*farewellBootloader)(void) = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;farewellBootloader = (void (*)(void))applicationAddress;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the VTOR to the application vector table address.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCB-&amp;gt;VTOR = (uint32_t)APP_VECTOR_TABLE;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set stack pointers to the application stack pointer.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __set_MSP(s_stackPointer);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __set_PSP(s_stackPointer);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Jump to the application.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; farewellBootloader();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;when i dump led blinking program using bootloader, it works fine.&lt;/P&gt;&lt;P&gt;but when i dump my application&amp;nbsp; using bootloader, it does not work, please guide me, what might be worng?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Aniket&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 02 Aug 2017 05:26:26 GMT</pubDate>
    <dc:creator>aniketmarkande</dc:creator>
    <dc:date>2017-08-02T05:26:26Z</dc:date>
    <item>
      <title>Booloader to Application jump</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Booloader-to-Application-jump/m-p/674314#M41456</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I am working on MK22 series controller. After flashing new code via custom usb bootloader, i am not able to jump to application.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;code is as follows:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;#define APP_START_ADDRESS &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x50000&lt;/P&gt;&lt;P&gt;#define __API_JMP_APPLICATION&amp;nbsp; (*((const void(*)(void))APP_START_ADDRESS))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void start_application(unsigned long app_link_location)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;__asm(" ldr sp, [r0,#0]");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;__asm(" ldr pc, [r0,#4]");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;__API_JMP_APPLICATION();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void Jump_To_Application(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;extern uint32_t __FBL_APP_HANDSHAKE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* handshake signal */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;__FBL_APP_HANDSHAKE = 0x55EEAAB8;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* disable interrupt */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;INT_SYS_DisableIRQGlobal();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* deinitialize the hardware peripherals */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Boards_HardwareDeInit(g_etBoard_t);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* deinit the clock */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Boards_ClockDeInit();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* jump to application */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;start_application(APP_START_ADDRESS);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;USB is not deinitialized before jumping.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kindly let me know whats wrong.&lt;/P&gt;&lt;P&gt;Thank you in advance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Aniket&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Jul 2017 14:27:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Booloader-to-Application-jump/m-p/674314#M41456</guid>
      <dc:creator>aniketmarkande</dc:creator>
      <dc:date>2017-07-18T14:27:33Z</dc:date>
    </item>
    <item>
      <title>Re: Booloader to Application jump</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Booloader-to-Application-jump/m-p/674315#M41457</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Aniket,&lt;/P&gt;&lt;P&gt;There are several mistakes in the start_application().&amp;nbsp; Please refer to the NXP_Kinetis_Bootloader_2_0_0. You can download&amp;nbsp;from NXP web site and extract it.&amp;nbsp;&lt;/P&gt;&lt;P&gt;The&amp;nbsp;related code is in bl_main.c. There is a function named get_user_application_entry(). This function get the stack address and app entry address from applcation image.&lt;/P&gt;&lt;P&gt;The other useful function is jump_to_application().&lt;/P&gt;&lt;P&gt;You can follow these code or reuse them in your project.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Jul 2017 07:21:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Booloader-to-Application-jump/m-p/674315#M41457</guid>
      <dc:creator>jingpan</dc:creator>
      <dc:date>2017-07-20T07:21:13Z</dc:date>
    </item>
    <item>
      <title>Re: Booloader to Application jump</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Booloader-to-Application-jump/m-p/674316#M41458</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;modified code as follows.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void start_application(unsigned long app_link_location)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint32_t stackPointer = APP_VECTOR_TABLE[kInitialSP];&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint32_t applicationAddress = APP_VECTOR_TABLE[kInitialPC];&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;static uint32_t s_stackPointer = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;s_stackPointer = stackPointer;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;static void (*farewellBootloader)(void) = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;farewellBootloader = (void (*)(void))applicationAddress;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the VTOR to the application vector table address.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCB-&amp;gt;VTOR = (uint32_t)APP_VECTOR_TABLE;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set stack pointers to the application stack pointer.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __set_MSP(s_stackPointer);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __set_PSP(s_stackPointer);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Jump to the application.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; farewellBootloader();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;when i dump led blinking program using bootloader, it works fine.&lt;/P&gt;&lt;P&gt;but when i dump my application&amp;nbsp; using bootloader, it does not work, please guide me, what might be worng?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Aniket&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 02 Aug 2017 05:26:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Booloader-to-Application-jump/m-p/674316#M41458</guid>
      <dc:creator>aniketmarkande</dc:creator>
      <dc:date>2017-08-02T05:26:26Z</dc:date>
    </item>
  </channel>
</rss>

