<?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中的主题 Re: IAP programming</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-programming/m-p/517926#M2415</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by KISHORE_WeP on Fri Feb 20 00:03:17 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your reply.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;As you have mentioned about the size of different sectors, I have clearly taken care of that in my code. But, the problem is, when I try to erase the 17th sector, the control is transferred to HardFault_Handler and it is getting hanged.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/*Defines for 1777 On-chip flash:*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define IAP_LOCATION0x1FFF1FF1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define BYTESIZE(unsigned long)4096&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define CMD_SUCCESS0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define INVALID_COMMAND1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define SRC_ADDR_ERROR2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define DST_ADDR_ERROR 3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define SRC_ADDR_NOT_MAPPED 4&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define DST_ADDR_NOT_MAPPED 5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define COUNT_ERROR 6&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define INVALID_SECTOR 7&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define SECTOR_NOT_BLANK 8&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION 9&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define COMPARE_ERROR 10&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define BUSY 11&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define READY 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PrepareSectrforWrite 50&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define CopyRAM2Flash 51&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define EraseSector 52&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define BlankCheckSector 53&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define ReadPartID 54&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define ReadBootCodeVer 55&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define Compare 56&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define ReinvokeISP 57&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef void (*IAP) (unsigned int [],unsigned int []);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IAP iap_entry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/*Function Definitions of IAP:*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long PrepareSectorForWrite (unsigned long strtsectrno, unsigned long endsectrno)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *command = (unsigned long*)0x10003000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *output = (unsigned long*)0x10003100;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = PrepareSectrforWrite;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = strtsectrno;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = endsectrno;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return(IAPHandle());&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long EraseSectors(unsigned long strtsectrno, unsigned long endsectrno)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *command = (unsigned long*)0x10003000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *output = (unsigned long*)0x10003100;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if(PrepareSectorForWrite(strtsectrno, endsectrno) == CMD_SUCCESS)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = EraseSector;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = strtsectrno;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = endsectrno;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = 72000UL;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return(IAPHandle());&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;unsigned long CopyRAMToFlash(unsigned long destaddr, unsigned long srcaddr, unsigned long size, unsigned long strtsectrno,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long endsectrno)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *command = (unsigned long*)0x10003000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *output = (unsigned long*)0x10003100;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if(PrepareSectorForWrite(strtsectrno,endsectrno) == CMD_SUCCESS)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = CopyRAM2Flash;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = destaddr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = srcaddr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = size;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = 72000UL;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return(IAPHandle());&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;unsigned long IAPHandle(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *command = (unsigned long*)0x10003000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *output = (unsigned long*)0x10003100; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long statuscode=0xFF;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;iap_entry = (IAP) IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;iap_entry(command,output);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;statuscode = *output;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return(statuscode);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void BootLoaderHandler (void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;while((EraseSectors(17,17)) != CMD_SUCCESS)&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;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;while(CopyRAMToFlash((unsigned long)0x00018000,(unsigned long)0x10004000,BYTESIZE,17,17) != CMD_SUCCESS)&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;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void main(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;SCB-&amp;gt;VTOR&amp;nbsp; = 0x00000000 &amp;amp; 0x3FFFFF80;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;BootLoaderHandler();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Actually, my intention is, for the first case I would program through JTAG interface, and from next time onwards, to store the firmware in IROM I am using IAP.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I need to write the generated Binary file to IROM because once programmed through JTAG, I will be using parallel interface for receiving the binary file and this file has to be wriiten to on-chip flash using the above algorithm.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am running the above algorithm in on-chip RAM but, once the EraseSectors() function is called&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;then I am not able to receive the bytes through parallel interface because the entire flash is getting erased and the code is not running.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So, please suggest me a method to overcome this.Thanks.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:30:23 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:30:23Z</dc:date>
    <item>
      <title>IAP programming</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-programming/m-p/517924#M2413</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by KISHORE_WeP on Mon Feb 16 08:00:42 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am currently working on LPC 1777 MPU and in that I am trying to store the firmware onto on-chip flash of size 512KB through IAP by using parallel interface (IEEE1284 standard).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am able to erase the sectors and write bytes through IAP command handling for 18th to 29th sectors of on-chip flash.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But, when I try to erase sectors from 0 to 17, controller is getting hanged. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;All interrupts have been disabled and VTOR register is pointing to on-chip RAM1.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Can you guide me on how to progress further, because through JTAG programming I am able to store the firmware starting from 0x00000000 address location.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Kishore&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:30:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-programming/m-p/517924#M2413</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:30:21Z</dc:date>
    </item>
    <item>
      <title>Re: IAP programming</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-programming/m-p/517925#M2414</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 Mon Feb 16 09:04:09 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Perhaps your code has not considered that the first 64K of the flash has 4KB sectors, and the rest are 32KB sectors.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;This affects sector number to flash address etc. and how many sectors to prepare/erase/burn.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Mike&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:30:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-programming/m-p/517925#M2414</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:30:22Z</dc:date>
    </item>
    <item>
      <title>Re: IAP programming</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-programming/m-p/517926#M2415</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by KISHORE_WeP on Fri Feb 20 00:03:17 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your reply.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;As you have mentioned about the size of different sectors, I have clearly taken care of that in my code. But, the problem is, when I try to erase the 17th sector, the control is transferred to HardFault_Handler and it is getting hanged.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/*Defines for 1777 On-chip flash:*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define IAP_LOCATION0x1FFF1FF1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define BYTESIZE(unsigned long)4096&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define CMD_SUCCESS0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define INVALID_COMMAND1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define SRC_ADDR_ERROR2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define DST_ADDR_ERROR 3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define SRC_ADDR_NOT_MAPPED 4&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define DST_ADDR_NOT_MAPPED 5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define COUNT_ERROR 6&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define INVALID_SECTOR 7&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define SECTOR_NOT_BLANK 8&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION 9&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define COMPARE_ERROR 10&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define BUSY 11&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define READY 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define PrepareSectrforWrite 50&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define CopyRAM2Flash 51&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define EraseSector 52&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define BlankCheckSector 53&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define ReadPartID 54&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define ReadBootCodeVer 55&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define Compare 56&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define ReinvokeISP 57&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef void (*IAP) (unsigned int [],unsigned int []);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IAP iap_entry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/*Function Definitions of IAP:*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long PrepareSectorForWrite (unsigned long strtsectrno, unsigned long endsectrno)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *command = (unsigned long*)0x10003000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *output = (unsigned long*)0x10003100;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = PrepareSectrforWrite;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = strtsectrno;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = endsectrno;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return(IAPHandle());&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long EraseSectors(unsigned long strtsectrno, unsigned long endsectrno)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *command = (unsigned long*)0x10003000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *output = (unsigned long*)0x10003100;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if(PrepareSectorForWrite(strtsectrno, endsectrno) == CMD_SUCCESS)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = EraseSector;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = strtsectrno;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = endsectrno;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = 72000UL;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return(IAPHandle());&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;unsigned long CopyRAMToFlash(unsigned long destaddr, unsigned long srcaddr, unsigned long size, unsigned long strtsectrno,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long endsectrno)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *command = (unsigned long*)0x10003000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *output = (unsigned long*)0x10003100;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if(PrepareSectorForWrite(strtsectrno,endsectrno) == CMD_SUCCESS)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = CopyRAM2Flash;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = destaddr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = srcaddr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = size;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;*command++ = 72000UL;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return(IAPHandle());&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;unsigned long IAPHandle(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *command = (unsigned long*)0x10003000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long *output = (unsigned long*)0x10003100; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long statuscode=0xFF;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;iap_entry = (IAP) IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;iap_entry(command,output);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;statuscode = *output;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return(statuscode);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void BootLoaderHandler (void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;while((EraseSectors(17,17)) != CMD_SUCCESS)&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;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;while(CopyRAMToFlash((unsigned long)0x00018000,(unsigned long)0x10004000,BYTESIZE,17,17) != CMD_SUCCESS)&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;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void main(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;SCB-&amp;gt;VTOR&amp;nbsp; = 0x00000000 &amp;amp; 0x3FFFFF80;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;BootLoaderHandler();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Actually, my intention is, for the first case I would program through JTAG interface, and from next time onwards, to store the firmware in IROM I am using IAP.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I need to write the generated Binary file to IROM because once programmed through JTAG, I will be using parallel interface for receiving the binary file and this file has to be wriiten to on-chip flash using the above algorithm.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am running the above algorithm in on-chip RAM but, once the EraseSectors() function is called&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;then I am not able to receive the bytes through parallel interface because the entire flash is getting erased and the code is not running.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So, please suggest me a method to overcome this.Thanks.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:30:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-programming/m-p/517926#M2415</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:30:23Z</dc:date>
    </item>
  </channel>
</rss>

