<?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: IAP RAM to Flash Not Working in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-RAM-to-Flash-Not-Working/m-p/770957#M31007</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Fixed my own problem, was running the wrong command to wipe the pages.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Got a new problem now, branching to the code results in a crash.&lt;/P&gt;&lt;P&gt;Here's the code snippet I&amp;nbsp;use for this. As far as I understand, this should set the stack pointer to whatever's at the start of the code, then branch the code to my reset ISR.&amp;nbsp;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #f6f6f6;"&gt;#define APP_START_ADDR (0x00001000UL)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SCB-&amp;gt;VTOR = ( uint32_t )APP_START_ADDR ;&lt;/P&gt;&lt;P&gt;/* Load main stack pointer with application stack pointer initial value,&lt;BR /&gt; stored at first location of application area */&lt;BR /&gt; asm volatile("ldr r0, =0x1000");&lt;BR /&gt; asm volatile("ldr r0, [r0]");&lt;BR /&gt; asm volatile("mov sp, r0");&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /* Load program counter with application reset vector address, located at&lt;BR /&gt; second word of application area. */&lt;BR /&gt; asm volatile("ldr r0, =0x1004");&lt;BR /&gt; asm volatile("ldr r0, [r0]");&lt;BR /&gt; asm volatile("mov pc, r0");&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Here's my memory map for the main code in case this is wrong:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MEMORY&lt;BR /&gt;{&lt;BR /&gt; /* Define each memory region */&lt;BR /&gt; MFlash256 (rx) : ORIGIN = 0x1000, LENGTH = 0x39000 /* 252K bytes (alias Flash) (4k by bootloader) */ &lt;BR /&gt; Ram0_32 (rwx) : ORIGIN = 0x10000000, LENGTH = 0x7FE0 /* 32K bytes (alias RAM) less 32 bytes for IAP */ &lt;BR /&gt; Ram1_2 (rwx) : ORIGIN = 0x20000000, LENGTH = 0x800 /* 2K bytes (alias RAM2) */ &lt;BR /&gt; Ram2USB_2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes (alias RAM3) */ &lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/* Define a symbol for the top of each memory region */&lt;BR /&gt; __base_MFlash256 = 0x1000 ; /* MFlash256 */ &lt;BR /&gt; __base_Flash = 0x1000 ; /* Flash */ &lt;BR /&gt; __top_MFlash256 = 0x1000 + 0x39000 ; /* 256K bytes */ &lt;BR /&gt; __top_Flash = 0x1000 + 0x39000 ; /* 256K bytes */ &lt;BR /&gt; __base_Ram0_32 = 0x10000000 ; /* Ram0_32 */ &lt;BR /&gt; __base_RAM = 0x10000000 ; /* RAM */ &lt;BR /&gt; __top_Ram0_32 = 0x10000000 + 0x7FE0 ; /* 32K bytes */ &lt;BR /&gt; __top_RAM = 0x10000000 + 0x7FE0 ; /* 32K bytes */ &lt;BR /&gt; __base_Ram1_2 = 0x20000000 ; /* Ram1_2 */ &lt;BR /&gt; __base_RAM2 = 0x20000000 ; /* RAM2 */ &lt;BR /&gt; __top_Ram1_2 = 0x20000000 + 0x800 ; /* 2K bytes */ &lt;BR /&gt; __top_RAM2 = 0x20000000 + 0x800 ; /* 2K bytes */ &lt;BR /&gt; __base_Ram2USB_2 = 0x20004000 ; /* Ram2USB_2 */ &lt;BR /&gt; __base_RAM3 = 0x20004000 ; /* RAM3 */ &lt;BR /&gt; __top_Ram2USB_2 = 0x20004000 + 0x800 ; /* 2K bytes */ &lt;BR /&gt; __top_RAM3 = 0x20004000 + 0x800 ; /* 2K bytes */&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 22 May 2018 02:24:58 GMT</pubDate>
    <dc:creator>zeph</dc:creator>
    <dc:date>2018-05-22T02:24:58Z</dc:date>
    <item>
      <title>IAP RAM to Flash Not Working</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-RAM-to-Flash-Not-Working/m-p/770956#M31006</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, I'm trying to implement a boot loader based on the one in AN10995 for the LPC11U68.&amp;nbsp;&lt;BR /&gt;I read in the data fine but when I write it, nothing is written to flash.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's the code, the copy ram to flash command returns success, however nothing is written to flash. Flash inspection shows nothing is written and the comparison operation returns that they aren't the same. What am I missing?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;/* Define flash memory address at which user application is located */&lt;BR /&gt;#define APP_START_ADDR (0x00001000UL)&lt;BR /&gt;#define APP_END_ADDR (0x00040000UL)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Define the flash sectors used by the application */&lt;BR /&gt;#define APP_START_SECTOR 1&lt;BR /&gt;#define APP_END_SECTOR 28&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static uint32_t u32BootLoader_ProgramFlash(uint8_t *pu8Data, uint16_t u16Len)&lt;BR /&gt;{&lt;BR /&gt; uint32_t u32Result = 0;&lt;/P&gt;&lt;P&gt;static uint32_t u32NextFlashWriteAddr = APP_START_ADDR;&lt;/P&gt;&lt;P&gt;if ((pu8Data != 0) &amp;amp;&amp;amp; (u16Len != 0))&lt;BR /&gt; {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;/* Prepare the flash application sectors for reprogramming */&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;if (Chip_IAP_PreSectorForReadWrite(APP_START_SECTOR, APP_END_SECTOR) == IAP_CMD_SUCCESS)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* Write the data to flash */&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Chip_IAP_CopyRamToFlash(u32NextFlashWriteAddr, (uint32_t *) pu8Data, u16Len) == IAP_CMD_SUCCESS)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&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;/* Check that the write was successful */&lt;BR /&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;if (Chip_IAP_Compare(u32NextFlashWriteAddr, (uint32_t) pu8Data, u16Len) == IAP_CMD_SUCCESS)&lt;BR /&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;{&lt;BR /&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;&amp;nbsp;&amp;nbsp;/* Write was successful */&lt;BR /&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;&amp;nbsp;&amp;nbsp;u32NextFlashWriteAddr += u16Len;&lt;BR /&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;&amp;nbsp;&amp;nbsp;u32Result = 1;&lt;BR /&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;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; return (u32Result);&lt;BR /&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 21 May 2018 04:31:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-RAM-to-Flash-Not-Working/m-p/770956#M31006</guid>
      <dc:creator>zeph</dc:creator>
      <dc:date>2018-05-21T04:31:45Z</dc:date>
    </item>
    <item>
      <title>Re: IAP RAM to Flash Not Working</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-RAM-to-Flash-Not-Working/m-p/770957#M31007</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Fixed my own problem, was running the wrong command to wipe the pages.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Got a new problem now, branching to the code results in a crash.&lt;/P&gt;&lt;P&gt;Here's the code snippet I&amp;nbsp;use for this. As far as I understand, this should set the stack pointer to whatever's at the start of the code, then branch the code to my reset ISR.&amp;nbsp;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #f6f6f6;"&gt;#define APP_START_ADDR (0x00001000UL)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SCB-&amp;gt;VTOR = ( uint32_t )APP_START_ADDR ;&lt;/P&gt;&lt;P&gt;/* Load main stack pointer with application stack pointer initial value,&lt;BR /&gt; stored at first location of application area */&lt;BR /&gt; asm volatile("ldr r0, =0x1000");&lt;BR /&gt; asm volatile("ldr r0, [r0]");&lt;BR /&gt; asm volatile("mov sp, r0");&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; /* Load program counter with application reset vector address, located at&lt;BR /&gt; second word of application area. */&lt;BR /&gt; asm volatile("ldr r0, =0x1004");&lt;BR /&gt; asm volatile("ldr r0, [r0]");&lt;BR /&gt; asm volatile("mov pc, r0");&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Here's my memory map for the main code in case this is wrong:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MEMORY&lt;BR /&gt;{&lt;BR /&gt; /* Define each memory region */&lt;BR /&gt; MFlash256 (rx) : ORIGIN = 0x1000, LENGTH = 0x39000 /* 252K bytes (alias Flash) (4k by bootloader) */ &lt;BR /&gt; Ram0_32 (rwx) : ORIGIN = 0x10000000, LENGTH = 0x7FE0 /* 32K bytes (alias RAM) less 32 bytes for IAP */ &lt;BR /&gt; Ram1_2 (rwx) : ORIGIN = 0x20000000, LENGTH = 0x800 /* 2K bytes (alias RAM2) */ &lt;BR /&gt; Ram2USB_2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes (alias RAM3) */ &lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/* Define a symbol for the top of each memory region */&lt;BR /&gt; __base_MFlash256 = 0x1000 ; /* MFlash256 */ &lt;BR /&gt; __base_Flash = 0x1000 ; /* Flash */ &lt;BR /&gt; __top_MFlash256 = 0x1000 + 0x39000 ; /* 256K bytes */ &lt;BR /&gt; __top_Flash = 0x1000 + 0x39000 ; /* 256K bytes */ &lt;BR /&gt; __base_Ram0_32 = 0x10000000 ; /* Ram0_32 */ &lt;BR /&gt; __base_RAM = 0x10000000 ; /* RAM */ &lt;BR /&gt; __top_Ram0_32 = 0x10000000 + 0x7FE0 ; /* 32K bytes */ &lt;BR /&gt; __top_RAM = 0x10000000 + 0x7FE0 ; /* 32K bytes */ &lt;BR /&gt; __base_Ram1_2 = 0x20000000 ; /* Ram1_2 */ &lt;BR /&gt; __base_RAM2 = 0x20000000 ; /* RAM2 */ &lt;BR /&gt; __top_Ram1_2 = 0x20000000 + 0x800 ; /* 2K bytes */ &lt;BR /&gt; __top_RAM2 = 0x20000000 + 0x800 ; /* 2K bytes */ &lt;BR /&gt; __base_Ram2USB_2 = 0x20004000 ; /* Ram2USB_2 */ &lt;BR /&gt; __base_RAM3 = 0x20004000 ; /* RAM3 */ &lt;BR /&gt; __top_Ram2USB_2 = 0x20004000 + 0x800 ; /* 2K bytes */ &lt;BR /&gt; __top_RAM3 = 0x20004000 + 0x800 ; /* 2K bytes */&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 May 2018 02:24:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-RAM-to-Flash-Not-Working/m-p/770957#M31007</guid>
      <dc:creator>zeph</dc:creator>
      <dc:date>2018-05-22T02:24:58Z</dc:date>
    </item>
    <item>
      <title>Re: IAP RAM to Flash Not Working</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-RAM-to-Flash-Not-Working/m-p/770958#M31008</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A _jive_internal="true" class="" data-content-finding="Community" data-userid="314205" data-username="zeph" href="https://community.nxp.com/people/zeph"&gt;Nicholas Hunn&lt;/A&gt; ,&lt;/P&gt;&lt;P&gt;Thank you for your interest in NXP Semiconductor products and the opportunity to serve you.&lt;BR /&gt;I consider the issue is caused by inappropriate IAP command calling, please refer to the attachment for checking&lt;BR /&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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>Tue, 22 May 2018 02:39:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-RAM-to-Flash-Not-Working/m-p/770958#M31008</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2018-05-22T02:39:27Z</dc:date>
    </item>
    <item>
      <title>Re: IAP RAM to Flash Not Working</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-RAM-to-Flash-Not-Working/m-p/770959#M31009</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nicholas Hunn ,&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="comment token"&gt;/**
 * @brief&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This function is cleanup system before jump to application
 * @param&amp;nbsp;&amp;nbsp; Nothing
 * @return&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Nothing
 */&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;LPC_SBL_CleanUpSystem&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Switch Main clock resource to IRC */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;Chip_Clock_SetMainClockSource&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;SYSCTL_MAINCLKSRC_IRC&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* No need to update the systemclock as user app is going to takeover anyway*/&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Setup FLASH access to 2 clock */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;Chip_FMC_SetFLASHAccess&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;FLASHTIM_2CLK_CPU&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;Chip_SYSCTL_PowerDown&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;SYSCTL_POWERDOWN_SYSPLL_PD&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;


&lt;SPAN class="comment token"&gt;/**
 * @brief&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doCleanBoot
 * @param&amp;nbsp;&amp;nbsp; Nothing
 * @return&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Nothing
 */&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;typedef&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;iapfun&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
iapfun jump2app&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;doCleanBoot&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;uint32_t imgAddr&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
 &lt;SPAN class="comment token"&gt;/* disable interrupt */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __ASM &lt;SPAN class="keyword token"&gt;volatile&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"cpsid i"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"memory"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Cleanup before going to app */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;LPC_SBL_CleanUpSystem&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Boot Valid Application */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Set Stack */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;__set_MSP&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;volatile&lt;/SPAN&gt; uint32_t&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;imgAddr&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Set app entry point */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jump2app &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;iapfun&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;uint32_t&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;imgAddr&lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* enable interrupt */&lt;/SPAN&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __ASM &lt;SPAN class="keyword token"&gt;volatile&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"cpsie i"&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;"memory"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* Jump_To_Application = (pFunction) JumpAddress; */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;jump2app&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/***** Control should never come here *****/&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;BR /&gt;Thanks for your reply.&lt;BR /&gt;You can use the following codes to jump to application.&lt;BR /&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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, 23 May 2018 07:07:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-RAM-to-Flash-Not-Working/m-p/770959#M31009</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2018-05-23T07:07:53Z</dc:date>
    </item>
  </channel>
</rss>

