<?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のトピックProblem invoking ISP from application code on LPC1857</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-invoking-ISP-from-application-code-on-LPC1857/m-p/534026#M10739</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by smalouin on Thu May 01 11:07:12 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello bunch...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;as we are doing with a lot of other product here (running LPC1227 and LPC810 mainly) we are trying to re-invoke the ISP from the user code. This will allow the units to be reflashed from the serial port. We have a a DB9 with everything (max232, etc) on USART0.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What we know works:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt; if ((temp==CTRLPROT_BOOT_START)&amp;amp;&amp;amp;(nbytes==CTRLPROT_BOOT_NBYTES)){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Validate parameter&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; ctrlprotTxAck(CTRLPROT_BOOT_CMD);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Transmit command acknowledge response&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; while (!gCtrlprot.flags.rxReady);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Wait for UART to be ready&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;&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;&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;&amp;nbsp;&amp;nbsp; printf("\nPID [0x%08X]\n",Chip_IAP_ReadPID());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("\nBootCodeVer [%d]\n",Chip_IAP_ReadBootCode());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_IAP_ReinvokeISP();
&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This gives us on the proper PID (0xF001DA30) ... so we know we can call the IAP functions properly.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But right after the Chip_IAP_Reinvoke has been called, we expect the MCU to responds "synchronize" to a "?"... but it doesn't.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;We have the same behavior with the same code on both our own product and the MCP1800 board (with an LPC1857) from keil. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(Pressing ISP/Reset button on the MCB1857 works, I get synchronize back to my ?)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;We use "lpcopen_2_09_keil_iar_keil_mcb_1857" &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I tried enabling the autobaud with Chip_UART_ABCmd(UART_SELECTION,UART_ACR_MODE0,true,ENABLE); ... that didn't help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;..............&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;just FYI, we had "lpcopen_2_04_keil_iar_keil_mcb_1857" before, so we had to use our own "Invoke ISP from user code" and it didn't work either... here it is:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
#define IAP_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10400100
#define REINVOKE_ISP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 57

static unsigned int command[6];
static unsigned int result[5];

#define IAP_LOCATION *(volatile unsigned int *)(0x10400100);
typedef unsigned (*IAP)(unsigned int [],unsigned int[]);
static const IAP bspIapEntry= (IAP) IAP_ADDRESS;

&lt;SPAN&gt;/* from &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fcontent%2Fblog%2Freinvoke-isp-user-code-example-lpc177x-lpc178x*%2F" rel="nofollow noopener noreferrer" target="_blank"&gt;http://www.lpcware.com/content/blog/reinvoke-isp-user-code-example-lpc177x-lpc178x*/&lt;/A&gt;
void bspReinvokeIsp(void) {
&amp;nbsp;&amp;nbsp; /* Set stack pointer to ROM value (reset default) */
&amp;nbsp;&amp;nbsp; __set_MSP(*((uint32_t *) 0x10400000));
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; command[0] = REINVOKE_ISP;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; bspIapEntry(command, result);

&amp;nbsp;&amp;nbsp; /* Never return from here */
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;we added the __set_MSP while trying to get it to work... but it didn't help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Our chip runs on a 12MHz crystal and we run at 72MHz from it. We tried to run from the internal RC clock, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(using &lt;/SPAN&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;Chip_Clock_SetBaseClock(CLK_BASE_MX,CLKIN_IRC,true,false);&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt; but that didn't help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;On this LPC1857 quite elusive! Anybody had seen that and/or has any kind of lead for us? &lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 18:19:57 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T18:19:57Z</dc:date>
    <item>
      <title>Problem invoking ISP from application code on LPC1857</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-invoking-ISP-from-application-code-on-LPC1857/m-p/534026#M10739</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by smalouin on Thu May 01 11:07:12 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello bunch...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;as we are doing with a lot of other product here (running LPC1227 and LPC810 mainly) we are trying to re-invoke the ISP from the user code. This will allow the units to be reflashed from the serial port. We have a a DB9 with everything (max232, etc) on USART0.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What we know works:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt; if ((temp==CTRLPROT_BOOT_START)&amp;amp;&amp;amp;(nbytes==CTRLPROT_BOOT_NBYTES)){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Validate parameter&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; ctrlprotTxAck(CTRLPROT_BOOT_CMD);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Transmit command acknowledge response&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; while (!gCtrlprot.flags.rxReady);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Wait for UART to be ready&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;&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;&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;&amp;nbsp;&amp;nbsp; printf("\nPID [0x%08X]\n",Chip_IAP_ReadPID());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("\nBootCodeVer [%d]\n",Chip_IAP_ReadBootCode());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_IAP_ReinvokeISP();
&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This gives us on the proper PID (0xF001DA30) ... so we know we can call the IAP functions properly.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But right after the Chip_IAP_Reinvoke has been called, we expect the MCU to responds "synchronize" to a "?"... but it doesn't.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;We have the same behavior with the same code on both our own product and the MCP1800 board (with an LPC1857) from keil. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(Pressing ISP/Reset button on the MCB1857 works, I get synchronize back to my ?)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;We use "lpcopen_2_09_keil_iar_keil_mcb_1857" &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I tried enabling the autobaud with Chip_UART_ABCmd(UART_SELECTION,UART_ACR_MODE0,true,ENABLE); ... that didn't help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;..............&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;just FYI, we had "lpcopen_2_04_keil_iar_keil_mcb_1857" before, so we had to use our own "Invoke ISP from user code" and it didn't work either... here it is:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
#define IAP_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10400100
#define REINVOKE_ISP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 57

static unsigned int command[6];
static unsigned int result[5];

#define IAP_LOCATION *(volatile unsigned int *)(0x10400100);
typedef unsigned (*IAP)(unsigned int [],unsigned int[]);
static const IAP bspIapEntry= (IAP) IAP_ADDRESS;

&lt;SPAN&gt;/* from &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fcontent%2Fblog%2Freinvoke-isp-user-code-example-lpc177x-lpc178x*%2F" rel="nofollow noopener noreferrer" target="_blank"&gt;http://www.lpcware.com/content/blog/reinvoke-isp-user-code-example-lpc177x-lpc178x*/&lt;/A&gt;
void bspReinvokeIsp(void) {
&amp;nbsp;&amp;nbsp; /* Set stack pointer to ROM value (reset default) */
&amp;nbsp;&amp;nbsp; __set_MSP(*((uint32_t *) 0x10400000));
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; command[0] = REINVOKE_ISP;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; bspIapEntry(command, result);

&amp;nbsp;&amp;nbsp; /* Never return from here */
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;we added the __set_MSP while trying to get it to work... but it didn't help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Our chip runs on a 12MHz crystal and we run at 72MHz from it. We tried to run from the internal RC clock, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(using &lt;/SPAN&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;Chip_Clock_SetBaseClock(CLK_BASE_MX,CLKIN_IRC,true,false);&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt; but that didn't help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;On this LPC1857 quite elusive! Anybody had seen that and/or has any kind of lead for us? &lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:19:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-invoking-ISP-from-application-code-on-LPC1857/m-p/534026#M10739</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:19:57Z</dc:date>
    </item>
    <item>
      <title>Re: Problem invoking ISP from application code on LPC1857</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-invoking-ISP-from-application-code-on-LPC1857/m-p/534027#M10740</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by smalouin on Fri May 02 06:25:43 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;A bit more digging into it leaves me even more clueless...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I step through the whole process in assembler and I don't know where to go next.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When the IAPEntry function is called I see this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[list=1]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; [*] the program jumps to the IAP code (PC=0x10400100 as expected&amp;nbsp; ---&amp;gt; So I am calling IAPentry correctly?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; [*] R0 contains 0x100000E0 which is my command array location (I see {0x39,0x00,0x00,0x00,0x00,0x00} there)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ---&amp;gt; that tells me the command *IS* 57d as expected for ISP re-entry?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; [*] R1 contains 0x100000F4 which is my result array location(I see {0x00,0x00,0x00,0x00,0x00,0x00, 0x00} there )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ---&amp;gt; and my result is empty as it should?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; [*] If I step linearly from there (0x10400100) it goes step by step straight until 0x1040012A and then... hardfault&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[/list]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;!?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;eeprom code error? Or I am missing something like setting the SP to something (I tried __set_MSP(*((uint32_t *) 0x10400000))... but that didn't help.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:19:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-invoking-ISP-from-application-code-on-LPC1857/m-p/534027#M10740</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:19:58Z</dc:date>
    </item>
    <item>
      <title>Re: Problem invoking ISP from application code on LPC1857</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-invoking-ISP-from-application-code-on-LPC1857/m-p/534028#M10741</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by smalouin on Fri May 02 10:30:27 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;OK... Found my problem...by comparing what I have done with another post on the same problem:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://http://www.lpcware.com/content/forum/unable-get-iap-working-lpc1853" rel="nofollow noopener noreferrer" target="_blank"&gt;the other post&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Because I run with an RTOS, I needed to &lt;/SPAN&gt;&lt;STRONG&gt;[u]disable all interrupt [/u]&lt;/STRONG&gt;&lt;SPAN&gt;before getting into the re-invoking of the ISP, (easy once you know it).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;so both my implentations are working:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;with lpcCore 2.09:&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;
if ((temp==CTRLPROT_BOOT_START)&amp;amp;&amp;amp;(nbytes==CTRLPROT_BOOT_NBYTES)){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Validate parameter&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; while (!gCtrlprot.flags.rxReady);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Wait for UART to be ready&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp;&amp;nbsp;&amp;nbsp; __disable_irq();
&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_IAP_ReinvokeISP();
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and with lpcCore 2.04&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
#define IAP_ADDRESS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10400100
#define IAP_REINVOKE_ISP&amp;nbsp;&amp;nbsp;&amp;nbsp; 57
static unsigned int command[5];
static unsigned int result[4];

#define IAP_LOCATION *(volatile unsigned int *)(0x10400100);
typedef void (*IAP)(unsigned int [],unsigned int[]);

void bspReinvokeIsp(void) {
&amp;nbsp;&amp;nbsp; IAP bspIapEntry=(IAP)IAP_LOCATION;
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; __disable_irq();
&amp;nbsp;&amp;nbsp; command[0] = IAP_REINVOKE_ISP;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; bspIapEntry(command, result);

&amp;nbsp;&amp;nbsp; /* Never return from here */
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I hope this helps anybody who might be stuck on the same hurdle&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:19:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-invoking-ISP-from-application-code-on-LPC1857/m-p/534028#M10741</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:19:59Z</dc:date>
    </item>
  </channel>
</rss>

