<?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 Problem with ReinvokeISP on LPC54618 in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1351500#M46652</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I would like to be able to update firmware over USB without requiring the user to press the ISPx switch. I understand reinvokeISP allows you to do this, but I am unable to get it to work. Can you help?&lt;/P&gt;&lt;P&gt;My code includes this:&lt;/P&gt;&lt;P&gt;uint32_t status = 0;&lt;BR /&gt;IAP_ReinvokeISP(8, &amp;amp;status); // Argument 8 is USB0&lt;/P&gt;&lt;P&gt;I am using the fsl_iap.c /.h driver from SDK 2.10 which includes this function:&lt;/P&gt;&lt;P&gt;void IAP_ReinvokeISP(uint8_t ispType, uint32_t *status)&lt;BR /&gt;{&lt;BR /&gt;uint32_t command[5] = {0x00U};&lt;BR /&gt;uint32_t result[5] = {0x00U};&lt;BR /&gt;uint8_t ispParameterArray[8];&lt;/P&gt;&lt;P&gt;command[0] = (uint32_t)kIapCmd_IAP_ReinvokeISP;&lt;BR /&gt;(void)memset(ispParameterArray, 0, sizeof(uint8_t) * 8U);&lt;BR /&gt;ispParameterArray[1] = ispType;&lt;BR /&gt;ispParameterArray[7] = ispParameterArray[0] ^ ispParameterArray[1] ^ ispParameterArray[2] ^ ispParameterArray[3] ^&lt;BR /&gt;ispParameterArray[4] ^ ispParameterArray[5] ^ ispParameterArray[6];&lt;BR /&gt;command[1] = (uint32_t)ispParameterArray;&lt;BR /&gt;iap_entry(command, result);&lt;BR /&gt;*status = (uint32_t)translate_iap_status(result[0]);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;The result is the program passes through this with no effect (a file explore doesn't open on Windows like it does when I do a power cycle and press the appropriate ISP_x button).&lt;/P&gt;&lt;P&gt;I have also tried ispType 0 (Auto-Detect). In this case the program locks up in iap_entry().&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am using using the LPCXpresso546xx rev C demo board.&lt;/P&gt;&lt;P&gt;Related question: Can I use Reinvoke_ISP on USB1? Our own board design only has a connector for USB1, not USB0. I went back to the dev board to test if it would work on USB0, but not working there either.&lt;/P&gt;&lt;P&gt;Thank you.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 06 Oct 2021 22:16:23 GMT</pubDate>
    <dc:creator>mattyoung</dc:creator>
    <dc:date>2021-10-06T22:16:23Z</dc:date>
    <item>
      <title>Problem with ReinvokeISP on LPC54618</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1351500#M46652</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I would like to be able to update firmware over USB without requiring the user to press the ISPx switch. I understand reinvokeISP allows you to do this, but I am unable to get it to work. Can you help?&lt;/P&gt;&lt;P&gt;My code includes this:&lt;/P&gt;&lt;P&gt;uint32_t status = 0;&lt;BR /&gt;IAP_ReinvokeISP(8, &amp;amp;status); // Argument 8 is USB0&lt;/P&gt;&lt;P&gt;I am using the fsl_iap.c /.h driver from SDK 2.10 which includes this function:&lt;/P&gt;&lt;P&gt;void IAP_ReinvokeISP(uint8_t ispType, uint32_t *status)&lt;BR /&gt;{&lt;BR /&gt;uint32_t command[5] = {0x00U};&lt;BR /&gt;uint32_t result[5] = {0x00U};&lt;BR /&gt;uint8_t ispParameterArray[8];&lt;/P&gt;&lt;P&gt;command[0] = (uint32_t)kIapCmd_IAP_ReinvokeISP;&lt;BR /&gt;(void)memset(ispParameterArray, 0, sizeof(uint8_t) * 8U);&lt;BR /&gt;ispParameterArray[1] = ispType;&lt;BR /&gt;ispParameterArray[7] = ispParameterArray[0] ^ ispParameterArray[1] ^ ispParameterArray[2] ^ ispParameterArray[3] ^&lt;BR /&gt;ispParameterArray[4] ^ ispParameterArray[5] ^ ispParameterArray[6];&lt;BR /&gt;command[1] = (uint32_t)ispParameterArray;&lt;BR /&gt;iap_entry(command, result);&lt;BR /&gt;*status = (uint32_t)translate_iap_status(result[0]);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;The result is the program passes through this with no effect (a file explore doesn't open on Windows like it does when I do a power cycle and press the appropriate ISP_x button).&lt;/P&gt;&lt;P&gt;I have also tried ispType 0 (Auto-Detect). In this case the program locks up in iap_entry().&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am using using the LPCXpresso546xx rev C demo board.&lt;/P&gt;&lt;P&gt;Related question: Can I use Reinvoke_ISP on USB1? Our own board design only has a connector for USB1, not USB0. I went back to the dev board to test if it would work on USB0, but not working there either.&lt;/P&gt;&lt;P&gt;Thank you.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Oct 2021 22:16:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1351500#M46652</guid>
      <dc:creator>mattyoung</dc:creator>
      <dc:date>2021-10-06T22:16:23Z</dc:date>
    </item>
    <item>
      <title>Re: Problem with ReinvokeISP on LPC54618</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1352576#M46668</link>
      <description>&lt;P&gt;HI&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For LPC546xx, we can use both USB1 and USB0 to ReInvoke ISP.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ZhangJennie_0-1633685179967.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/158609i9E02044C2AA6B98F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ZhangJennie_0-1633685179967.png" alt="ZhangJennie_0-1633685179967.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Config isp_mode[1] to select the USB port. I ever tested below code on my side on LPC54628 demo board. It works. Please try it on your side as well. See how it works.&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;typedef&lt;/STRONG&gt; &lt;STRONG&gt;enum&lt;/STRONG&gt; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;EM&gt;SL_AUTO&lt;/EM&gt;&amp;nbsp; = 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* AUTO */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;EM&gt;SL_I2C0&lt;/EM&gt;&amp;nbsp; = 1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* I2C0 */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;EM&gt;SL_SPI0&lt;/EM&gt;&amp;nbsp; = 4,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; SPI0 */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;EM&gt;SL_UART0&lt;/EM&gt; = 6, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; UART0 */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;EM&gt;SL_USBFS&lt;/EM&gt; = 8, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; USB FS */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;EM&gt;SL_USBHS&lt;/EM&gt; = 9, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; USB HS */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;EM&gt;SL_CAN0&lt;/EM&gt;&amp;nbsp; = 10, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; CAN0 */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } SL_IFSEL_T;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t error_code;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t xor_value = 0, isp_mode[8];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;memset&lt;/STRONG&gt;( isp_mode, 0, &lt;STRONG&gt;sizeof&lt;/STRONG&gt;(isp_mode) );&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; isp_mode[0] = 0xAA;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 0xAA as DFU, otherwise, it's a MSC */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; isp_mode[1] = &lt;EM&gt;SL_USBHS&lt;/EM&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;for&lt;/STRONG&gt; ( i = 0; i &amp;lt; 8; i++ ) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xor_value ^= isp_mode[i];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; isp_mode[7] = xor_value;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; error_code = Chip_IAP_ReinvokeISP((uint32_t *)isp_mode);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; err_check(error_code);&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Have a nice day&lt;/P&gt;
&lt;P&gt;Jun Zhang&lt;/P&gt;</description>
      <pubDate>Fri, 08 Oct 2021 09:28:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1352576#M46668</guid>
      <dc:creator>ZhangJennie</dc:creator>
      <dc:date>2021-10-08T09:28:47Z</dc:date>
    </item>
    <item>
      <title>Re: Problem with ReinvokeISP on LPC54618</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1352794#M46678</link>
      <description>&lt;P&gt;Hello Jun Zhang,&lt;/P&gt;&lt;P&gt;Thank you for the response. Could you tell me the function to use for: Chip_IAP_ReinvokeISP((uint32_t *)isp_mode)&lt;/P&gt;&lt;P&gt;I searched and did not find it in my SDK version 2.10&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;Matt&lt;/P&gt;</description>
      <pubDate>Fri, 08 Oct 2021 15:22:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1352794#M46678</guid>
      <dc:creator>mattyoung</dc:creator>
      <dc:date>2021-10-08T15:22:07Z</dc:date>
    </item>
    <item>
      <title>Re: Problem with ReinvokeISP on LPC54618</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1352863#M46682</link>
      <description>&lt;P&gt;Update: I now have it working! Thanks.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I found the Chip_IAP_ReinvokeISP code in an attachment to a related knowledge base, that happens to be from you also:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/t5/LPC-Microcontrollers-Knowledge/LPC54XXX-How-To-Use-USB-Port-To-Update-Firmware-In-ISP-Mode/ta-p/1319714/jump-to/first-unread-message" target="_blank"&gt;https://community.nxp.com/t5/LPC-Microcontrollers-Knowledge/LPC54XXX-How-To-Use-USB-Port-To-Update-Firmware-In-ISP-Mode/ta-p/1319714/jump-to/first-unread-message&lt;/A&gt;&lt;/P&gt;&lt;P&gt;This is the code I needed:&lt;/P&gt;&lt;P&gt;/* &lt;U&gt;Reinvoke&lt;/U&gt; ISP */&lt;/P&gt;&lt;P&gt;uint32_t &lt;STRONG&gt;Chip_IAP_ReinvokeISP&lt;/STRONG&gt;( uint32_t *invoke_ptr )&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t command[5], result[4];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[0] = IAP_REINVOKE_ISP_CMD;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[1] = (uint32_t)invoke_ptr;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_entry(command, result);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;return&lt;/STRONG&gt; result[0];&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Additional notes:&lt;/P&gt;&lt;P&gt;I Changed:&amp;nbsp;&amp;nbsp; isp_mode[0] = 0xAA;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 0xAA as DFU, otherwise, it's a MSC */&lt;/P&gt;&lt;P&gt;To:&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; isp_mode[0] = 0xFF;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 0xAA as DFU, otherwise, it's a MSC */&lt;/P&gt;&lt;P&gt;The reason is I’m familiar with MSC in that it opens a window on the PC to work with and drop the new file in. I understand DFU requires a utility program on the PC in order to update firmware.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;USB1 vs USB0: It works for me with USB1 (MSC), but while I had it hooked up I tried to get it to work on USB0 also as an experiment.&amp;nbsp;What is the value to enter for that? Is ‘SL_USBHS’ for USB1 and ‘SL_USBFS’ for USB0?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; isp_mode[1] = &lt;EM&gt;SL_USBFS&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;I tried the above and connected to USB0, but it didn’t work.&lt;/P&gt;</description>
      <pubDate>Fri, 08 Oct 2021 19:48:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1352863#M46682</guid>
      <dc:creator>mattyoung</dc:creator>
      <dc:date>2021-10-08T19:48:18Z</dc:date>
    </item>
    <item>
      <title>Re: Problem with ReinvokeISP on LPC54618</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1421352#M48085</link>
      <description>&lt;P&gt;where can we add this part of the code?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;typedef&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;enum&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;SL_AUTO&lt;/EM&gt;&amp;nbsp; = 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* AUTO */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;SL_I2C0&lt;/EM&gt;&amp;nbsp; = 1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* I2C0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;SL_SPI0&lt;/EM&gt;&amp;nbsp; = 4,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; SPI0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;SL_UART0&lt;/EM&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;= 6, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; UART0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;SL_USBFS&lt;/EM&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;= 8, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; USB FS */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;SL_USBHS&lt;/EM&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;= 9, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; USB HS */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;SL_CAN0&lt;/EM&gt;&amp;nbsp; = 10, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; CAN0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } SL_IFSEL_T;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t error_code;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t xor_value = 0, isp_mode[8];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;memset&lt;/STRONG&gt;( isp_mode, 0,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;sizeof&lt;/STRONG&gt;(isp_mode) );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; isp_mode[0] = 0xAA;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 0xAA as DFU, otherwise, it's a MSC */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; isp_mode[1] =&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;SL_USBHS&lt;/EM&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;for&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;( i = 0; i &amp;lt; 8; i++ ) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xor_value ^= isp_mode[i];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; isp_mode[7] = xor_value;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; error_code = Chip_IAP_ReinvokeISP((uint32_t *)isp_mode);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; err_check(error_code);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also I get an error 'IAP_REINVOKE_ISP_CMD' undeclared (first use in this function) fsl_iap.c".&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Mar 2022 18:09:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1421352#M48085</guid>
      <dc:creator>NVazquez</dc:creator>
      <dc:date>2022-03-01T18:09:59Z</dc:date>
    </item>
    <item>
      <title>Re: Problem with ReinvokeISP on LPC54618</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1421358#M48086</link>
      <description>&lt;P&gt;Hi Nhule,&lt;/P&gt;&lt;P&gt;I'm not NXP support, but I can show my code that worked:&lt;/P&gt;&lt;P&gt;//************************************************************************************&lt;BR /&gt;// ReinvokeISP&lt;BR /&gt;// This enters ISP mode for updating firmware on USB1, MSC mode&lt;BR /&gt;//************************************************************************************&lt;BR /&gt;void ReinvokeISP_USB(void)&lt;BR /&gt;{&lt;BR /&gt;uint8_t xor_value = 0, isp_mode[8];&lt;BR /&gt;uint8_t i;&lt;/P&gt;&lt;P&gt;memset( isp_mode, 0, sizeof(isp_mode) );&lt;BR /&gt;isp_mode[0] = 0xFF; /* 0xAA as DFU, otherwise, it's a MSC */&lt;BR /&gt;isp_mode[1] = 9; //9 for USB1 (8 for USB0??)&lt;BR /&gt;for ( i = 0; i &amp;lt; 8; i++ ) {&lt;BR /&gt;xor_value ^= isp_mode[i];&lt;BR /&gt;}&lt;BR /&gt;isp_mode[7] = xor_value;&lt;BR /&gt;(void)Chip_IAP_ReinvokeISP((uint32_t *)isp_mode);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;//************************************************************************************&lt;BR /&gt;// Chip_IAP_ReinvokeISP&amp;nbsp;&lt;BR /&gt;//************************************************************************************&lt;BR /&gt;uint32_t Chip_IAP_ReinvokeISP( uint32_t *invoke_ptr )&lt;BR /&gt;{&lt;BR /&gt;uint32_t command[5], result[4];&lt;/P&gt;&lt;P&gt;command[0] = IAP_REINVOKE_ISP_CMD; //57 is command for Reinvoke ISP&lt;BR /&gt;command[1] = (uint32_t)invoke_ptr;&lt;BR /&gt;iap_entry(command, result);&lt;BR /&gt;return result[0];&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also this earlier:&lt;/P&gt;&lt;P&gt;#define IAP_REINVOKE_ISP_CMD 57 /*!&amp;lt; Reinvoke ISP */&lt;/P&gt;&lt;P&gt;And run this when I want it to happen:&lt;/P&gt;&lt;P&gt;ReinvokeISP_USB();&lt;/P&gt;</description>
      <pubDate>Tue, 01 Mar 2022 18:34:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1421358#M48086</guid>
      <dc:creator>mattyoung</dc:creator>
      <dc:date>2022-03-01T18:34:22Z</dc:date>
    </item>
    <item>
      <title>Re: Problem with ReinvokeISP on LPC54618</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1421360#M48087</link>
      <description>&lt;P&gt;Thank you Matt for the quick response. This definitely helps!&lt;/P&gt;</description>
      <pubDate>Tue, 01 Mar 2022 18:42:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-with-ReinvokeISP-on-LPC54618/m-p/1421360#M48087</guid>
      <dc:creator>NVazquez</dc:creator>
      <dc:date>2022-03-01T18:42:27Z</dc:date>
    </item>
  </channel>
</rss>

