<?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: LPC2368 Secondary Bootloader in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC2368-Secondary-Bootloader/m-p/620540#M24292</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Giovanni,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are some considerations when developing a bootloader. For additional details, please refer to application note AN10835 “LPC2000 secondary bootloader for code update using IAP”, available on the link below:&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.nxp.com/documents/application_note/AN10835.pdf"&gt;http://www.nxp.com/documents/application_note/AN10835.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Additionally, the following links may be also helpful:&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.lpcware.com/category/file-types/bootloader"&gt;https://www.lpcware.com/category/file-types/bootloader&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.lpcware.com/content/forum/changing-bootloader-content-through-user-applicationiap"&gt;https://www.lpcware.com/content/forum/changing-bootloader-content-through-user-applicationiap&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Hope this will be useful for you.&lt;BR /&gt;Best regards!&lt;BR /&gt;/Carlos&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Feb 2017 21:46:29 GMT</pubDate>
    <dc:creator>CarlosCasillas</dc:creator>
    <dc:date>2017-02-15T21:46:29Z</dc:date>
    <item>
      <title>LPC2368 Secondary Bootloader</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC2368-Secondary-Bootloader/m-p/620539#M24291</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;I'm developing a secondary bootloader on LPC2368.&lt;/P&gt;&lt;P&gt;The bootloader at startup initialize stack pointer:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; LDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R0, =Top_Stack&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#&amp;nbsp; Enter Undefined Instruction Mode and set its Stack Pointer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; MSR&amp;nbsp;&amp;nbsp; CPSR_c, #Mode_UND|I_Bit|F_Bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MOV&amp;nbsp;&amp;nbsp; SP, R0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; SUB&amp;nbsp;&amp;nbsp; R0, R0, #UND_Stack_Size&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#&amp;nbsp; Enter Abort Mode and set its Stack Pointer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; MSR&amp;nbsp;&amp;nbsp; CPSR_c, #Mode_ABT|I_Bit|F_Bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MOV&amp;nbsp;&amp;nbsp; SP, R0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; SUB&amp;nbsp;&amp;nbsp; R0, R0, #ABT_Stack_Size&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#&amp;nbsp; Enter FIQ Mode and set its Stack Pointer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; MSR&amp;nbsp;&amp;nbsp; CPSR_c, #Mode_FIQ|I_Bit|F_Bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MOV&amp;nbsp;&amp;nbsp; SP, R0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; SUB&amp;nbsp;&amp;nbsp; R0, R0, #FIQ_Stack_Size&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#&amp;nbsp; Enter IRQ Mode and set its Stack Pointer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; MSR&amp;nbsp;&amp;nbsp; CPSR_c, #Mode_IRQ|I_Bit|F_Bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MOV&amp;nbsp;&amp;nbsp; SP, R0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; SUB&amp;nbsp;&amp;nbsp; R0, R0, #IRQ_Stack_Size&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#&amp;nbsp; Enter Supervisor Mode and set its Stack Pointer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; MSR&amp;nbsp;&amp;nbsp; CPSR_c, #Mode_SVC|I_Bit|F_Bit&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MOV&amp;nbsp;&amp;nbsp; SP, R0&lt;BR /&gt;&amp;nbsp;&amp;nbsp; SUB&amp;nbsp;&amp;nbsp; R0, R0, #SVC_Stack_Size&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#&amp;nbsp; Enter User Mode and set its Stack Pointer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; MSR&amp;nbsp;&amp;nbsp; CPSR_c, #Mode_USR/*|F_Bit&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* |F_Bit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; disabilito fiq */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; MOV&amp;nbsp;&amp;nbsp; SP, R0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#&amp;nbsp; Setup a default Stack Limit (when compiled with "-mapcs-stack-check")&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; SUB&amp;nbsp;&amp;nbsp; SL, SP, #USR_Stack_Size&lt;/P&gt;&lt;P&gt;....&lt;/P&gt;&lt;P&gt;executes some code and then jump to the application code.&lt;/P&gt;&lt;P&gt;The application code also sets stack pointer accordings to its needs during &lt;SPAN class="" lang="en"&gt;&lt;SPAN class=""&gt;initialization.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="" lang="en"&gt;&lt;SPAN class=""&gt;I noticed &lt;SPAN&gt;that the&lt;/SPAN&gt; &lt;SPAN&gt;User Mode&lt;/SPAN&gt; &lt;SPAN&gt;stack pointer&lt;/SPAN&gt; &lt;SPAN&gt;is&lt;/SPAN&gt; &lt;SPAN&gt;changed&lt;/SPAN&gt; &lt;SPAN&gt;properly&lt;/SPAN&gt; &lt;SPAN&gt;while the&lt;/SPAN&gt; &lt;SPAN&gt;IRQ &lt;/SPAN&gt;stack pointer&lt;SPAN&gt; is remained the one setted by the bootloader&lt;/SPAN&gt;&lt;SPAN&gt; making the system&lt;/SPAN&gt; &lt;SPAN&gt;crash.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="" lang="en"&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;The instructions used by the application are similar to the ones used by the bootloader, the only difference is that R0 holds different value.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="" lang="en"&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;There is the possibility of changing the IRQ stack pointer the second time?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="" lang="en"&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="" lang="en"&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;Thank you&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 09 Feb 2017 13:49:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC2368-Secondary-Bootloader/m-p/620539#M24291</guid>
      <dc:creator>giovannifriolo</dc:creator>
      <dc:date>2017-02-09T13:49:45Z</dc:date>
    </item>
    <item>
      <title>Re: LPC2368 Secondary Bootloader</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC2368-Secondary-Bootloader/m-p/620540#M24292</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Giovanni,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are some considerations when developing a bootloader. For additional details, please refer to application note AN10835 “LPC2000 secondary bootloader for code update using IAP”, available on the link below:&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.nxp.com/documents/application_note/AN10835.pdf"&gt;http://www.nxp.com/documents/application_note/AN10835.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Additionally, the following links may be also helpful:&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.lpcware.com/category/file-types/bootloader"&gt;https://www.lpcware.com/category/file-types/bootloader&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.lpcware.com/content/forum/changing-bootloader-content-through-user-applicationiap"&gt;https://www.lpcware.com/content/forum/changing-bootloader-content-through-user-applicationiap&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Hope this will be useful for you.&lt;BR /&gt;Best regards!&lt;BR /&gt;/Carlos&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Feb 2017 21:46:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC2368-Secondary-Bootloader/m-p/620540#M24292</guid>
      <dc:creator>CarlosCasillas</dc:creator>
      <dc:date>2017-02-15T21:46:29Z</dc:date>
    </item>
    <item>
      <title>Re: LPC2368 Secondary Bootloader</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC2368-Secondary-Bootloader/m-p/620541#M24293</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I solved my problem by resetting (using watchdog) bootloader and then jumping directly to application if bootloader found a magic value&lt;/P&gt;&lt;P&gt;in a specific location.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Giovanni Friolo&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DAB PUMPS S.P.A.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Electronic Designer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Via Bonanno Pisano, 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;giovanni.friolo@dwtgroup.com&amp;lt;mailto:giovanni.friolo@dwtgroup.com&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;56031 Bientina (Pisa)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;+39 0587 753 840&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Italy&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="www.dabpumps.com&amp;lt;http://www.dabpumps.com&amp;gt;" target="test_blank"&gt;www.dabpumps.com&amp;lt;http://www.dabpumps.com&amp;gt;&lt;/A&gt;;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Feb 2017 07:40:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC2368-Secondary-Bootloader/m-p/620541#M24293</guid>
      <dc:creator>giovannifriolo</dc:creator>
      <dc:date>2017-02-16T07:40:48Z</dc:date>
    </item>
    <item>
      <title>Re: LPC2368 Secondary Bootloader</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC2368-Secondary-Bootloader/m-p/1403966#M47732</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;I am currently facing the same issue. How did you managed to jump directly to the user application? Have you modified the Startup file?&lt;/P&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;&lt;P&gt;Nils&lt;/P&gt;</description>
      <pubDate>Mon, 24 Jan 2022 12:51:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC2368-Secondary-Bootloader/m-p/1403966#M47732</guid>
      <dc:creator>NilsDrotleff</dc:creator>
      <dc:date>2022-01-24T12:51:32Z</dc:date>
    </item>
  </channel>
</rss>

