<?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中的主题 LPC11U24 and IAP Reinvoke ISP</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U24-and-IAP-Reinvoke-ISP/m-p/526824#M9261</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by tarmo on Fri May 18 04:05:55 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; How do i start ISP as MSC USB device on LPC11U24 using IAP Reinvoke ISP command (57).&amp;nbsp; The following code works well on LPC1343 but not on LPC11U24.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; I can execute ISP as USB MSC device during reset or power on (PIO0_1 low &amp;amp; PIO0_3 high). &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;All other IAP commands are working well. So i think the problem is with init_msdstate() function. &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;typedef void (*IAP)(unsigned int[], unsigned int[]);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IAP iap_entry = (IAP) IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define CMD_SUCCESS 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned int Command[5];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned int Result[4];&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define init_msdstate() *((uint32_t *)(0x10000054)) = 0x0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void EnterISP(void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* make sure USB clock is turned on before calling ISP */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= 0x04000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* make sure 32-bit Timer 1 is turned on before calling ISP */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= 0x00400;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* make sure GPIO clock is turned on before calling ISP */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= 0x00040;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* make sure IO configuration clock is turned on before calling ISP */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= 0x10000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* make sure AHB clock divider is 1:1 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SYSCON-&amp;gt;SYSAHBCLKDIV = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Send Reinvoke ISP command to ISP entry point*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Command[0] = 57;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;init_msdstate(); /* Initialize Storage state machine */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Set stack pointer to ROM value (reset default) This must be the last&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; piece of code executed before calling ISP, because most C expressions&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; and function returns will fail after the stack pointer is changed. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;__set_MSP(*((uint32_t *) 0x1FFF0000)); /* inline asm function */&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Enter ISP. We call "iap_entry" to enter ISP because the ISP entry is done&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; through the same command interface as IAP. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;iap_entry(Command, Result);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// Not supposed to come back!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 19:28:03 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T19:28:03Z</dc:date>
    <item>
      <title>LPC11U24 and IAP Reinvoke ISP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U24-and-IAP-Reinvoke-ISP/m-p/526824#M9261</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by tarmo on Fri May 18 04:05:55 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; How do i start ISP as MSC USB device on LPC11U24 using IAP Reinvoke ISP command (57).&amp;nbsp; The following code works well on LPC1343 but not on LPC11U24.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; I can execute ISP as USB MSC device during reset or power on (PIO0_1 low &amp;amp; PIO0_3 high). &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;All other IAP commands are working well. So i think the problem is with init_msdstate() function. &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;typedef void (*IAP)(unsigned int[], unsigned int[]);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IAP iap_entry = (IAP) IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define CMD_SUCCESS 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned int Command[5];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;unsigned int Result[4];&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define init_msdstate() *((uint32_t *)(0x10000054)) = 0x0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void EnterISP(void) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* make sure USB clock is turned on before calling ISP */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= 0x04000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* make sure 32-bit Timer 1 is turned on before calling ISP */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= 0x00400;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* make sure GPIO clock is turned on before calling ISP */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= 0x00040;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* make sure IO configuration clock is turned on before calling ISP */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= 0x10000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* make sure AHB clock divider is 1:1 */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SYSCON-&amp;gt;SYSAHBCLKDIV = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Send Reinvoke ISP command to ISP entry point*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Command[0] = 57;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;init_msdstate(); /* Initialize Storage state machine */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Set stack pointer to ROM value (reset default) This must be the last&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; piece of code executed before calling ISP, because most C expressions&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; and function returns will fail after the stack pointer is changed. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;__set_MSP(*((uint32_t *) 0x1FFF0000)); /* inline asm function */&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/* Enter ISP. We call "iap_entry" to enter ISP because the ISP entry is done&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; through the same command interface as IAP. */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;iap_entry(Command, Result);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;// Not supposed to come back!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:28:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U24-and-IAP-Reinvoke-ISP/m-p/526824#M9261</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:28:03Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U24 and IAP Reinvoke ISP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U24-and-IAP-Reinvoke-ISP/m-p/526825#M9262</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by kpa on Thu May 24 07:08:02 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Interesting question.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have checked the datasheet and it seems that this will invoke the UART ISP not the USB MSC one...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;There is no code to reinvoke USB MSC ISP so it could be that PIO0_3 is also sampled or another undocumented IAP command should be used...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Help from NXP will be welcome !&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;kpa&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:28:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U24-and-IAP-Reinvoke-ISP/m-p/526825#M9262</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:28:04Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U24 and IAP Reinvoke ISP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U24-and-IAP-Reinvoke-ISP/m-p/526826#M9263</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by drs on Thu May 24 09:35:39 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;ISP is supported via USB only when VBUS is active.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;See 20.3 Features in the UM:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The LPC11U2x supports ISP from the USB port through enumeration as a Mass &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Storage Class (MSC) Device when connected to a USB host interface (Windows &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;operating system only)&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:28:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U24-and-IAP-Reinvoke-ISP/m-p/526826#M9263</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:28:04Z</dc:date>
    </item>
    <item>
      <title>Re: LPC11U24 and IAP Reinvoke ISP</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U24-and-IAP-Reinvoke-ISP/m-p/526827#M9264</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by kpa on Fri Jun 08 03:22:25 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Yes it works nicely when using PIO0_1, but I would like to start this mode from my own program.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The code from this post doesn't work... any idea why ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;kpa&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:28:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U24-and-IAP-Reinvoke-ISP/m-p/526827#M9264</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:28:05Z</dc:date>
    </item>
  </channel>
</rss>

