<?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 for flash on LPC1778 in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-for-flash-on-LPC1778/m-p/524955#M7591</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MikeSimmonds on Thu Apr 23 02:50:46 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I (for one) won't even look at this until you add code tags.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Mike&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 18:09:29 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T18:09:29Z</dc:date>
    <item>
      <title>IAP for flash on LPC1778</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-for-flash-on-LPC1778/m-p/524954#M7590</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ivon on Thu Apr 23 00:24:28 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using LPC1778&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I want to replace the flash code in the internal flash.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The start address is 0x0000, and the end address is 0x4FFF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The IAP function as follows is located in ROM at a fixed address (0xC000) in order to avoid overwriting.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am sure that the value in Flash ROM is rewritten correctly by using the watch memory on debug mode in uVision5.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;When I reset the MCU, it still couldn’t work. I think it can’t execute “SystemInit” and “main” loop. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;IAP.c&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#include "LPC177x_8x.h"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void jp_RFP(uint8_t *indata)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_t&amp;nbsp; str_Flashaddr,romsize; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; uint8_t&amp;nbsp;&amp;nbsp; result;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(indata+0)=cmd_RRF;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Delay_ms(2000);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LCMClrAll();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Delay_ms(2000);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; str_Flashaddr=0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; romsize&amp;nbsp;&amp;nbsp; =0x5000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; result=LPC_IAP_Load(str_Flashaddr,romsize);//start_addr,Rom_size&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; *(indata+1)=result;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint8_t LPC_IAP_Load(uint32_t addr,uint32_t size)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint8_t Start_Sec,End_Sec,iap_status=0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_t result=0,i,loop,loop_max,SecSel=0x00;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int32_t sur_size;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;__disable_irq(); //disable irq&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(addr&amp;lt;0x00010000)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Start_Sec=addr/4096;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;sur_size=size;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for(i=Start_Sec;i&amp;lt;=15;i++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;End_Sec=i;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;sur_size-=4096;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(sur_size&amp;lt;=0) sur_size=0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(sur_size==0) break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if(sur_size!=0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for(i=End_Sec;i&amp;lt;=29;i++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;End_Sec=i+1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;sur_size-=32768;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(sur_size&amp;lt;=0) sur_size=0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(sur_size==0) break;&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;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Start_Sec=(addr-0x00010000)/32768 +16;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;End_Sec=Start_Sec+(size/32768);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;for(SecSel=Start_Sec; SecSel&amp;lt;=End_Sec; SecSel++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP_SelSector(SecSel,SecSel);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP_EraseSector(SecSel,SecSel);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_status=LPC_IAP_BlankCHK(SecSel,SecSel);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(iap_status != 0x00) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;result = 0x01;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return&amp;nbsp; result;&lt;/SPAN&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;SPAN&gt;SPIaddr=0x80000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FlashAddr=addr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;loop_max=size/256;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for(loop=0;loop&amp;lt;loop_max;loop++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;result=LPC_IAP_Loop();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;__enable_irq();&amp;nbsp;&amp;nbsp; //enable irq&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; return&amp;nbsp; result;&amp;nbsp;&amp;nbsp; //result=0 -&amp;gt; pass, result=1 -&amp;gt; blank fail, result=2 -&amp;gt; verify fail&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;uint8_t LPC_IAP_Loop(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_t SecNum=0x00,iap_status=0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint8_t&amp;nbsp; SPIddrH,SPIddrM,SPIddrL,result=0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(FlashAddr &amp;lt;= 0x00000FFF) SecNum = 0x00;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00001FFF) SecNum = 0x01;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00002FFF) SecNum = 0x02;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00003FFF) SecNum = 0x03;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00004FFF) SecNum = 0x04;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00005FFF) SecNum = 0x05;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00006FFF) SecNum = 0x06;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00007FFF) SecNum = 0x07;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00008FFF) SecNum = 0x08;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00009FFF) SecNum = 0x09;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0000AFFF) SecNum = 0x0a;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0000BFFF) SecNum = 0x0b;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0000CFFF) SecNum = 0x0c;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0000DFFF) SecNum = 0x0d;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0000EFFF) SecNum = 0x0e;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0000FFFF) SecNum = 0x0f;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00017FFF) SecNum = 0x10;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0001FFFF) SecNum = 0x11;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00027FFF) SecNum = 0x12;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0002FFFF) SecNum = 0x13;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00037FFF) SecNum = 0x14;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0003FFFF) SecNum = 0x15;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00047FFF) SecNum = 0x16;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0004FFFF) SecNum = 0x17;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00057FFF) SecNum = 0x18;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0005FFFF) SecNum = 0x19;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00067FFF) SecNum = 0x1a;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0006FFFF) SecNum = 0x1b;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x00077FFF) SecNum = 0x1c;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;else if(FlashAddr &amp;lt;= 0x0007FFFF) SecNum = 0x1d;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP_SelSector(SecNum,SecNum); &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;SPIddrH=(uint8_t)((SPIaddr&amp;amp;0xFF0000)&amp;gt;&amp;gt;16);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SPIddrM=(uint8_t)((SPIaddr&amp;amp;0x00FF00)&amp;gt;&amp;gt;8);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SPIddrL=(uint8_t)(SPIaddr&amp;amp;0x0000FF);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SPIflash_read_nByte_withAddr(SPIddrH,SPIddrM,SPIddrL,&amp;amp;ToFlashBuff[0],256);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;iap_status=LPC_IAP_RamToFlash(FlashAddr, (uint32_t)ToFlashBuff, 256); &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//if(iap_status != 0x00) result = 0x01;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;iap_status=LPC_IAP_Compare(FlashAddr, (uint32_t)ToFlashBuff, 256);&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if(iap_status != 0x00) result = 0x02;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;SPIaddr+=256;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FlashAddr +=256; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;return&amp;nbsp; result;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int LPC_IAP_SelSector(uint32_t sector_start, uint32_t sector_end)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_tparamin[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; uint32_tparamout[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef void(*LPC_IAP)(uint32_t[], uint32_t []);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP LPC_IAP_entry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP_entry=(LPC_IAP) LPC_IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[0] = LPC_IAP_SELSECTOR;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[1] = sector_start;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[2] = sector_end;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP_entry(paramin, paramout);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return&amp;nbsp; paramout[0];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int LPC_IAP_RamToFlash(uint32_t flash_address, uint32_t ram_address, uint32_t no)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{ &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_tparamin[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; uint32_tparamout[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; typedef void(*LPC_IAP)(uint32_t[], uint32_t []);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP LPC_IAP_entry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IAP_entry=(LPC_IAP) LPC_IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[0] = LPC_IAP_RAMTOFLASH;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[1] = (uint32_t)flash_address;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[2] = (uint32_t)ram_address;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[3] = no;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[4] = 100000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP_entry(paramin, paramout);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return&amp;nbsp; paramout[0];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int LPC_IAP_EraseSector(uint32_t sector_start, uint32_t sector_end)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_tparamin[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; uint32_tparamout[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef void(*LPC_IAP)(uint32_t[], uint32_t []);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP LPC_IAP_entry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IAP_entry=(LPC_IAP) LPC_IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[0] = LPC_IAP_ERASESECTOR;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[1] = sector_start;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[2] = sector_end;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[3] = 100000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP_entry(paramin, paramout);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; return&amp;nbsp; paramout[0];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int LPC_IAP_BlankCHK(uint8_t sec1, uint8_t sec2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_tparamin[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; uint32_tparamout[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef void(*LPC_IAP)(uint32_t[], uint32_t []);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP LPC_IAP_entry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IAP_entry=(LPC_IAP) LPC_IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[0] = LPC_IAP_BLANKCHK;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[1] = sec1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[2] = sec2;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP_entry(paramin, paramout);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; return&amp;nbsp; paramout[0];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int LPC_IAP_ReadParID(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_tparamin[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; uint32_tparamout[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef void(*LPC_IAP)(uint32_t[], uint32_t []);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP LPC_IAP_entry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IAP_entry=(LPC_IAP) LPC_IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[0] = LPC_IAP_READPARTID;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP_entry(paramin, paramout);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; return&amp;nbsp; paramout[0];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int LPC_IAP_BootCodeID(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_tparamin[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; uint32_tparamout[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef void(*LPC_IAP)(uint32_t[], uint32_t []);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP LPC_IAP_entry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IAP_entry=(LPC_IAP) LPC_IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[0] = LPC_IAP_BOOTCODEID;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP_entry(paramin, paramout);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; return&amp;nbsp; paramout[0];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int LPC_IAP_Compare(uint32_t dst, uint32_t src, uint32_t no)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_tparamin[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; uint32_tparamout[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef void(*LPC_IAP)(uint32_t[], uint32_t []);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP LPC_IAP_entry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IAP_entry=(LPC_IAP) LPC_IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[0] = LPC_IAP_COMPARE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[1] = dst;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[2] = src;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;paramin[3] = no;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IAP_entry(paramin, paramout);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return&amp;nbsp; paramout[0];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; scatter file is as follows&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;; *************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;; *** Scatter-Loading Description File generated by uVision ***&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;; *************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LR_IROM1 0x00000000 0x00080000&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; ; load region size_region&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; ER_IROM1 0x00000000 0x00080000&amp;nbsp; {&amp;nbsp; ; load address = execution address&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; *.o (RESET, +First)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; *(InRoot$$Sections)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; .ANY (+RO)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; ER_IAP 0x0000C000 FIXED &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; nwtr_iap.o(+RO) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; RW_IRAM1 0x10000000 0x00010000&amp;nbsp; {&amp;nbsp; ; RW data&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; .ANY (+RW +ZI)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Do you have any idea for that? I will be pleasure if you can give any advice to me, thank you.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:09:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-for-flash-on-LPC1778/m-p/524954#M7590</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:09:28Z</dc:date>
    </item>
    <item>
      <title>Re: IAP for flash on LPC1778</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-for-flash-on-LPC1778/m-p/524955#M7591</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MikeSimmonds on Thu Apr 23 02:50:46 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I (for one) won't even look at this until you add code tags.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Mike&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:09:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-for-flash-on-LPC1778/m-p/524955#M7591</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:09:29Z</dc:date>
    </item>
    <item>
      <title>Re: IAP for flash on LPC1778</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-for-flash-on-LPC1778/m-p/524956#M7592</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by embd02161991 on Thu Apr 23 14:16:23 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There is a Flash IAP example in periph folder in LPCOpen. That can be a starting point.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;NXP Technical Support&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:09:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-for-flash-on-LPC1778/m-p/524956#M7592</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:09:30Z</dc:date>
    </item>
  </channel>
</rss>

