<?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: LPC1347 - Help with Invoke ISP from user code (autoisp) in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528675#M1065</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ECamino on Thu Jan 31 13:56:48 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm having the same trouble today.&amp;nbsp; I tried using the code from CR project autoisp_main.c:&amp;nbsp; It's very similar to yours, but for now I have commented out the WDT stuff.&amp;nbsp; Also, the code I used had a macro called inti_msdstate(). &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I see in the manual for LPC1347 says IAP_LOCATION should be correct.&amp;nbsp;&amp;nbsp; I changed command and result to how they're defined in the manual.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;What I don't know is if I need init_msdstate() or if the values are correct for it, and how do I know if 0x1fff0000 is the right value for __set_MSP?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* This data must be global so it is not read from the stack */&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define IAP_LOCATION 0x1fff1ff1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define init_msdstate() *((uint32_t *)(0x10000054)) = 0x0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long command[5];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long result[4];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef void (*IAP)(unsigned long [], unsigned long []);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IAP iap_entry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IAP iap_entry = (IAP) IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void ReinvokeISP(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*commented all WDT setup...I just want to see "CRP_DISABLED" before&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; I worry about getting a reset... */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Send Reinvoke ISP command to ISP entry point*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; command[0] = 57;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; init_msdstate();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize Storage state machine */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Set stack pointer to ROM value (reset default) This must be the last&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; piece of code executed before calling ISP, because most C expressions&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and function returns will fail after the stack pointer is changed. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; __set_MSP(*((uint32_t *)0x1FFF0000));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* inline asm function */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Enter ISP. We call "iap_entry" to enter ISP because the ISP entry is done&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; through the same command interface as IAP. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; iap_entry(command, result);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; // Not supposed to come back! (but can't get there in the first place)&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;Any ideas?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;EC&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 21:42:04 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T21:42:04Z</dc:date>
    <item>
      <title>LPC1347 - Help with Invoke ISP from user code (autoisp)</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528670#M1060</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by BPC on Wed Jan 23 09:31:15 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello Everyone,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am migrating from the LPC1343 to the LPC1347.&amp;nbsp; Everything has been smooth so far, but I ran into a snag in implementing "Auto ISP" or ISP from user code using command 57.&amp;nbsp; I have taken the LPC1343 example, and based on the User Manual for the LPC1347, it appears these function should be cross compatible.&amp;nbsp; Below is the function I am using.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[COLOR=blue]/* This data must be global so it is not read from the stack */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef void (*IAP)(uint32_t [], uint32_t []);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IAP iap_entry = (IAP)0x1fff1ff1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint32_t command[5], result[4];[/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[COLOR=blue][/COLOR] &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[COLOR=blue]void ReinvokeISP(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* make sure USB clock is turned on before calling ISP */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= 0x04000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* make sure 32-bit Timer 1 is turned on before calling ISP */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= 0x00400;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* make sure GPIO clock is turned on before calling ISP */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= 0x00040;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* make sure IO configuration clock is turned on before calling ISP */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= 0x10000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* make sure AHB clock divider is 1:1 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKDIV = 1;[/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[COLOR=blue]&amp;nbsp; /* Send Reinvoke ISP command to ISP entry point*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; command[0] = 57;[/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[COLOR=blue]&amp;nbsp; /* Set stack pointer to ROM value (reset default) This must be the last&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; piece of code executed before calling ISP, because most C expressions&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and function returns will fail after the stack pointer is changed. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; __set_MSP(*((uint32_t *)0x1FFF0000)); /* inline asm function */[/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[COLOR=blue]&amp;nbsp; /* Enter ISP. We call "iap_entry" to enter ISP because the ISP entry is done&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; through the same command interface as IAP. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; iap_entry(command, result);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // Not supposed to come back!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}[/COLOR]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Prior to calling this function, I disable the SYSTICK timer and interrupt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Once iap_entry is executed, "nothing" happens, except the debugger "disconnects" as it should.&amp;nbsp; I cannot get the Mass Storage Device to pop up on my computer as it did with the LPC1343.&amp;nbsp; I have the "Soft USB Connection" circuit implemented on my board with an LED to show if the USB is connected, once iap_entry is executed, this LED turns off (as it should), but never turns back on.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have tried doing a soft disconnect using pUsbApi-&amp;gt;hw-&amp;gt;Connect(hUsb, 0); prior to calling ReinvokeISP();.&amp;nbsp; I also tried a USB reset pUsbApi-&amp;gt;hw-&amp;gt;Reset(hUsb); prior to calling ReinvokeISP();.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Any help would be much appreciated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:42:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528670#M1060</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:42:00Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1347 - Help with Invoke ISP from user code (autoisp)</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528671#M1061</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by BPC on Sat Jan 26 15:54:38 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;All other IAP commands are working properly (i.e. Read Part ID, Read UID, Read Boot code version).&amp;nbsp; Any ideas would be greatly appreciated.&amp;nbsp; Thanks again.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:42:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528671#M1061</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:42:01Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1347 - Help with Invoke ISP from user code (autoisp)</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528672#M1062</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by BPC on Tue Jan 29 09:23:08 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I believe the command 57 (Reinvoke ISP) is being properly executed, however, the USB Connect signal never goes low, which in turn makes the device invisible to the CPU.&amp;nbsp; Is there any way to see what state the device is in during this time?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:42:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528672#M1062</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:42:01Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1347 - Help with Invoke ISP from user code (autoisp)</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528673#M1063</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ex-Zero on Tue Jan 29 10:54:07 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: BPC&lt;/STRONG&gt;&lt;BR /&gt;I believe the command 57 (Reinvoke ISP) is being properly executed...&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Use PIO0_3 to select UART bootloader. If FlashMagic is working then, your IAP 57 is working&amp;nbsp; ;)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:42:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528673#M1063</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:42:02Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1347 - Help with Invoke ISP from user code (autoisp)</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528674#M1064</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by BPC on Tue Jan 29 11:00:06 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi Zero,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have PIO0_3 connected to USB_VBUS (and PIO0_1 pulled up). I do not have UART in my system and need to have the device pop up as a Mass Storage Device (upon request) in order to update the firmware via USB.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;BPC&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:42:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528674#M1064</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:42:03Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1347 - Help with Invoke ISP from user code (autoisp)</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528675#M1065</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ECamino on Thu Jan 31 13:56:48 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm having the same trouble today.&amp;nbsp; I tried using the code from CR project autoisp_main.c:&amp;nbsp; It's very similar to yours, but for now I have commented out the WDT stuff.&amp;nbsp; Also, the code I used had a macro called inti_msdstate(). &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I see in the manual for LPC1347 says IAP_LOCATION should be correct.&amp;nbsp;&amp;nbsp; I changed command and result to how they're defined in the manual.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;What I don't know is if I need init_msdstate() or if the values are correct for it, and how do I know if 0x1fff0000 is the right value for __set_MSP?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* This data must be global so it is not read from the stack */&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define IAP_LOCATION 0x1fff1ff1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define init_msdstate() *((uint32_t *)(0x10000054)) = 0x0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long command[5];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned long result[4];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef void (*IAP)(unsigned long [], unsigned long []);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IAP iap_entry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IAP iap_entry = (IAP) IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void ReinvokeISP(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*commented all WDT setup...I just want to see "CRP_DISABLED" before&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; I worry about getting a reset... */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; /* Send Reinvoke ISP command to ISP entry point*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; command[0] = 57;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; init_msdstate();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize Storage state machine */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Set stack pointer to ROM value (reset default) This must be the last&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; piece of code executed before calling ISP, because most C expressions&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and function returns will fail after the stack pointer is changed. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; __set_MSP(*((uint32_t *)0x1FFF0000));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* inline asm function */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; /* Enter ISP. We call "iap_entry" to enter ISP because the ISP entry is done&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; through the same command interface as IAP. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; iap_entry(command, result);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; // Not supposed to come back! (but can't get there in the first place)&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;Any ideas?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;EC&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 21:42:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1347-Help-with-Invoke-ISP-from-user-code-autoisp/m-p/528675#M1065</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T21:42:04Z</dc:date>
    </item>
  </channel>
</rss>

