<?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: LPC1788 bootloader can't jump to user code correctly in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518885#M2901</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by capiman on Tue Nov 12 02:31:33 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thats the problem. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;You jump to an address below 0x2000 instead of an address above 0x2000.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Your jump does not go to application, but back to bootloader.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I assume your linker script for application is wrong.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;You just can't move the application from 0 to 0x2000 without changing the content.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;It is not position independent.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:35:57 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:35:57Z</dc:date>
    <item>
      <title>LPC1788 bootloader can't jump to user code correctly</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518882#M2898</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ivan Sylvan on Tue Nov 12 01:40:47 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi all!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to use bootloader in LPC1788.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;BL writes code into the flash memory correctly but it can't jump to user code. I need to jump to 0x2000 but actually it is about 0x680.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;What did i do wrong?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Can anybody advice where to get information of how to construct bootloader in LPC1788? As i can see in AN10866_2.pdf for LPC1768 i need to load new VTOR and move SP, PC to new location. And that's it. But i know some people stop PLL, clear INTs and so on in LPC1788. Why? Where can i read about it?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks in advance.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;my code (Keil)&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
__asm void boot_jump( uint32_t address ){
&amp;nbsp;&amp;nbsp; LDR SP, [R0];Load new stack pointer address
&amp;nbsp;&amp;nbsp; LDR PC, [R0, #4];Load new program counter address
}

void execute_user_code(void)
{
uint8_t tmp;

NVIC-&amp;gt;ICER[0] = 0xFFFFFFFF;//Disable all interrupts 
NVIC-&amp;gt;ICER[1] = 0x00000001;
 
NVIC-&amp;gt;ICPR[0] = 0xFFFFFFFF;//Clear all pending interrupts 
NVIC-&amp;gt;ICPR[1] = 0x00000001;
for(tmp = 0; tmp &amp;lt; 32; tmp++)// Clear all interrupt priority 
{
NVIC-&amp;gt;IP[tmp] = 0x00;
}

LPC_SC-&amp;gt;CCLKSEL = 0x01; // set sysclk (12MHz) as clock source
LPC_SC-&amp;gt;PLL0CON = 0; // disable PLL
LPC_SC-&amp;gt;PLL0FEED = 0xAA;
LPC_SC-&amp;gt;PLL0FEED = 0x55;

SCB-&amp;gt;VTOR = (0x2000) &amp;amp; 0x1FFFFF80;
boot_jump(0x2000);
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:35:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518882#M2898</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:35:55Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1788 bootloader can't jump to user code correctly</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518883#M2899</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Pacman on Tue Nov 12 02:16:35 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;This will probably not fix your problem, but why not do this...&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;NVIC-&amp;gt;ICER[0] = 0xFFFFFFFF;//Disable all interrupts 
NVIC-&amp;gt;ICER[1] = 0x000001FF;

NVIC-&amp;gt;ICPR[0] = 0xFFFFFFFF;//Clear all pending interrupts 
NVIC-&amp;gt;ICPR[1] = 0x000001FF;
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;SPAN&gt;... It seems there are 8 interrupts you're not disabling/clearing pending bit for.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(UM10470, section 5.5.3, 5.5.7; page 82/83, 86/87)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;...Can you read the contents of address 0x2000 and address 0x2004 ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:35:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518883#M2899</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:35:56Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1788 bootloader can't jump to user code correctly</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518884#M2900</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ivan Sylvan on Tue Nov 12 02:27:43 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: Pacman&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;... It seems there are 8 interrupts you're not disabling/clearing pending bit for.&lt;BR /&gt;(UM10470, section 5.5.3, 5.5.7; page 82/83, 86/87)&lt;BR /&gt;&lt;BR /&gt;...Can you read the contents of address 0x2000 and address 0x2004 ?&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you Pacman. But changes in NVIC-&amp;gt;ICER, NVIC-&amp;gt;ICPR did not help me.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;This is a content of the flash memory:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0x2000 - 0x1000aa20&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0x2004 - 0x0000066d&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:35:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518884#M2900</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:35:57Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1788 bootloader can't jump to user code correctly</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518885#M2901</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by capiman on Tue Nov 12 02:31:33 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thats the problem. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;You jump to an address below 0x2000 instead of an address above 0x2000.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Your jump does not go to application, but back to bootloader.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I assume your linker script for application is wrong.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;You just can't move the application from 0 to 0x2000 without changing the content.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;It is not position independent.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:35:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518885#M2901</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:35:57Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1788 bootloader can't jump to user code correctly</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518886#M2902</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Pacman on Tue Nov 12 02:42:07 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Exactly.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;To be more precise: Your exception vectors must be placed at address 0x2000 by your linker script.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;That means... Your bootloader-code would work (I still recommend disabling and clearing the extra interrupts).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;But you need a different linker-script for the program you're bootloading.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So: Keep your linker-script as it is for your bootloader.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;For the program you'll be bootloading: Move the exception vector table.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:35:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518886#M2902</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:35:58Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1788 bootloader can't jump to user code correctly</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518887#M2903</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ivan Sylvan on Tue Nov 12 02:48:47 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Dear Capiman and Pacman, thank you very much for your help! I really appreciate you.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;:-)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:35:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-bootloader-can-t-jump-to-user-code-correctly/m-p/518887#M2903</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:35:58Z</dc:date>
    </item>
  </channel>
</rss>

