<?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>LPC MicrocontrollersのトピックHelp Needed, LPC1850 bootloader fails jump to application with around 50% probability</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Help-Needed-LPC1850-bootloader-fails-jump-to-application-with/m-p/534198#M10774</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by hitpony on Thu Nov 06 06:50:12 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using a LPC1850, with NORFLASH at 0x1C000000, and SDRAM at 0x28000000, Bootloader is saved in NORFLASH 0x1C000000, and application saved at 0x1C008000. after poweron, bootloader will copy (via memcpy) the application from 0x1C008000 to 0x28000000, and bootloader will jump to the application with following functions, but I can only jump to the application with 50% successful rate.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In the bootloader, A check is put after the memcpy, the copy is always successful, this proves the NORFLASH and SDRAM should be OK, I guess the failure always happend after&amp;nbsp; boot_jump(addr); and before main() fuction of the Application.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have tried to add a watchdog in the bootloader, but when the application failed to be lauched, the system can NOT be reset, and need to press the reset button to restart the system. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The bootloader is via KEIL v4.54, and the application is done via IAR v6.60, and at the start of applicaion, IRQ is enabled.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Can anyone provide a help to see, why the application can only be launched with around 50% probability? and what is the possible reason the watchdog can not reset the system when jump fails.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;================== APPLICATION ====================&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int main (void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __enable_irq();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;================== BOOTLOADER ====================&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int main (void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //copy&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy((char *)0x28000000, (uint8_t *)0x1c008000, length);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //check, and err alwasy is 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(cnt = 0; cnt &amp;lt; (length&amp;gt;&amp;gt;2); cnt++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( (*(((uint32_t *)0x28000000)+cnt)) != (*(((uint32_t *)0x1c008000)+cnt)) )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; err++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //jump to application&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExecuteUserCode(0x28000000);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;__asm void boot_jump( uint32_t address )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDR SP, [R0];Load new stack pointer address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDR PC, [R0, #4]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;Load new program counter address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void ExecuteUserCode(uint32_t addr)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __disable_irq();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;CTRL = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCB-&amp;gt;VTOR = addr &amp;amp; 0xFFFFFF80;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; boot_jump(addr);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 18:20:42 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T18:20:42Z</dc:date>
    <item>
      <title>Help Needed, LPC1850 bootloader fails jump to application with around 50% probability</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Help-Needed-LPC1850-bootloader-fails-jump-to-application-with/m-p/534198#M10774</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by hitpony on Thu Nov 06 06:50:12 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using a LPC1850, with NORFLASH at 0x1C000000, and SDRAM at 0x28000000, Bootloader is saved in NORFLASH 0x1C000000, and application saved at 0x1C008000. after poweron, bootloader will copy (via memcpy) the application from 0x1C008000 to 0x28000000, and bootloader will jump to the application with following functions, but I can only jump to the application with 50% successful rate.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In the bootloader, A check is put after the memcpy, the copy is always successful, this proves the NORFLASH and SDRAM should be OK, I guess the failure always happend after&amp;nbsp; boot_jump(addr); and before main() fuction of the Application.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have tried to add a watchdog in the bootloader, but when the application failed to be lauched, the system can NOT be reset, and need to press the reset button to restart the system. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The bootloader is via KEIL v4.54, and the application is done via IAR v6.60, and at the start of applicaion, IRQ is enabled.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Can anyone provide a help to see, why the application can only be launched with around 50% probability? and what is the possible reason the watchdog can not reset the system when jump fails.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;================== APPLICATION ====================&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int main (void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __enable_irq();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;================== BOOTLOADER ====================&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int main (void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //copy&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy((char *)0x28000000, (uint8_t *)0x1c008000, length);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //check, and err alwasy is 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(cnt = 0; cnt &amp;lt; (length&amp;gt;&amp;gt;2); cnt++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( (*(((uint32_t *)0x28000000)+cnt)) != (*(((uint32_t *)0x1c008000)+cnt)) )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; err++;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //jump to application&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExecuteUserCode(0x28000000);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;__asm void boot_jump( uint32_t address )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDR SP, [R0];Load new stack pointer address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDR PC, [R0, #4]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;Load new program counter address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void ExecuteUserCode(uint32_t addr)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __disable_irq();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;CTRL = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCB-&amp;gt;VTOR = addr &amp;amp; 0xFFFFFF80;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; boot_jump(addr);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:20:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Help-Needed-LPC1850-bootloader-fails-jump-to-application-with/m-p/534198#M10774</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:20:42Z</dc:date>
    </item>
    <item>
      <title>Re: Help Needed, LPC1850 bootloader fails jump to application with around 50% probability</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Help-Needed-LPC1850-bootloader-fails-jump-to-application-with/m-p/534199#M10775</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by John Sinclair on Thu Nov 06 07:15:21 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;do you have Interrupts? When yes so you have remapped your Vector Table?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Look at:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fcontent%2Fforum%2Flpc1788-freertos-or-rtx-bootlader-ethernet" rel="nofollow" target="_blank"&gt;http://www.lpcware.com/content/forum/lpc1788-freertos-or-rtx-bootlader-ethernet&lt;/A&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;John&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:20:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Help-Needed-LPC1850-bootloader-fails-jump-to-application-with/m-p/534199#M10775</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:20:43Z</dc:date>
    </item>
    <item>
      <title>Re: Help Needed, LPC1850 bootloader fails jump to application with around 50% probability</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Help-Needed-LPC1850-bootloader-fails-jump-to-application-with/m-p/534200#M10776</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by hitpony on Thu Nov 06 09:30:35 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks John for your ideas, I try to understand your suggestions, the modification you proposed are as below:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using uCOS III as OS in application with IAR ... the startup asm is cstartup.s, where __vector_table is defined.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Do I understand correctly? I willl try this as soon as possible.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;===== APPLICATION =====&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int main (void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCB-&amp;gt;VTOR = (uint32_t) __vector_table;&amp;nbsp;&amp;nbsp; //added&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; __enable_irq();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;===== BOOTLOADER =====&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;__asm void boot_jump( uint32_t address )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MOV LR, #0xFFFFFFFF ;Reset Link Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDR SP, [R0];Load new stack pointer address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDR PC, [R0, #4]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;Load new program counter address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void ExecuteUserCode(uint32_t addr)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __disable_irq();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SysTick-&amp;gt;CTRL = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //SCB-&amp;gt;VTOR = addr &amp;amp; 0xFFFFFF80;&amp;nbsp; // remove?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; boot_jump(addr);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:20:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Help-Needed-LPC1850-bootloader-fails-jump-to-application-with/m-p/534200#M10776</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:20:44Z</dc:date>
    </item>
    <item>
      <title>Re: Help Needed, LPC1850 bootloader fails jump to application with around 50% probability</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Help-Needed-LPC1850-bootloader-fails-jump-to-application-with/m-p/534201#M10777</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by hitpony on Thu Nov 06 10:05:01 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I have tried the proposal, but issue still exist. Sometimes it works, but sometimes still fails, here are the modifications I made, note the application is done with IAR:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Does anyone have more ideas? is it possible a hardware issue, or clock issue? I could not understand why it fails only part of the times. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks in advance!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;===== APPLICATION =====&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; int main (void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; SCB-&amp;gt;VTOR = ((uint32_t)(&amp;amp;(__vector_table)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;; //added&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; __enable_irq();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;.....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;===== BOOTLOADER =====&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; __asm void boot_jump( uint32_t address )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; MOV LR, #0xFFFFFFFF ;Reset Link Register&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; LDR SP, [R0] ;Load new stack pointer address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; LDR PC, [R0, #4] ;Load new program counter address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void ExecuteUserCode(uint32_t addr)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; __disable_irq();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; SysTick-&amp;gt;CTRL = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; //SCB-&amp;gt;VTOR = addr &amp;amp; 0xFFFFFF80; // remove?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; boot_jump(addr);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:20:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Help-Needed-LPC1850-bootloader-fails-jump-to-application-with/m-p/534201#M10777</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:20:44Z</dc:date>
    </item>
    <item>
      <title>Re: Help Needed, LPC1850 bootloader fails jump to application with around 50% probability</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Help-Needed-LPC1850-bootloader-fails-jump-to-application-with/m-p/534202#M10778</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by hitpony on Sun Nov 09 09:41:18 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Problem solved via of following method:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1. In IAR for uCOS III, the initial LPC1850 Clock setup are in "BSP_LowLevelInit" in cstartup.s, via assemble&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MODULE&amp;nbsp; ?cstartup&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;; Forward declaration of sections.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SECTION CSTACK:DATA:NOROOT(3)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SECTION .intvec:CODE:NOROOT(2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXTERN&amp;nbsp; __iar_program_start&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXTERN&amp;nbsp; OS_CPU_PendSVHandler&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXTERN&amp;nbsp; OS_CPU_SysTickHandler&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXTERN&amp;nbsp; BSP_LowLevelInit&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; THUMB&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUBWEAK Reset_Handler&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SECTION .text:CODE:REORDER(2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Reset_Handler&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BSP_LowLevelInit&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R0, =__iar_program_start&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PUBWEAK App_NMI_ISR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have to say the uCOS-III system hides these lower level clock setup, and not easy to find, in the function of "BSP_LowLevelInit()" in bsp.c file, I remove the clock setup, and rely on the clock setup in bootloader, the issue solved. now the system could always jump to application.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I could made a summary from this board for the issue:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;=== Issues ===:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Bootloader could copy the applicaiton to the target address, but can not jump to the application with 100% of the successful rate.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;== Possible reasons ===:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1. Before the jump, interrupt should be disabled via __disable_irq(); and in the beginning of the application, __enable_irq() again.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2. Make sure the SCB-&amp;gt;VTOR points to the beginning of the target application address.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;3. Make sure the Clock setup are consistant between bootloader and applicaion, espcially for uCOS III OS, the Clock setup are in cstartup.s, and needs to check carefully.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks this board for variouse information I got, and finally solved the issue.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;(Other possible reasons are welcome to be added)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Hitpony&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:20:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Help-Needed-LPC1850-bootloader-fails-jump-to-application-with/m-p/534202#M10778</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:20:45Z</dc:date>
    </item>
  </channel>
</rss>

