<?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 Having problems with optimisation on your USB project? in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Having-problems-with-optimisation-on-your-USB-project/m-p/550651#M11489</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Fri May 16 14:49:23 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello All,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've been working on a USB project &amp;amp; was tweaking as I was finishing up. I found invoking the minimal level of optimisation caused the USB functionality to fail. After some searching I've tracked down the culprit to a delay function in usbhw.c. This file has the header:&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;
/*----------------------------------------------------------------------------
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; U S B&amp;nbsp; -&amp;nbsp; K e r n e l
 *----------------------------------------------------------------------------
 * Name:&amp;nbsp;&amp;nbsp;&amp;nbsp; usbhw.c
 * Purpose: USB Hardware Layer Module for NXP LPC17xx
 * Version: V1.20
 *----------------------------------------------------------------------------
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This software is supplied "AS IS" without any warranties, express,
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; implied or statutory, including but not limited to the implied
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; warranties of fitness for purpose, satisfactory quality and
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; noninfringement. Keil extends you a royalty-free right to reproduce
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and distribute executable files created using this software for use
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on NXP Semiconductors LPC microcontroller devices only. Nothing else 
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gives you the right to use this software.
 *
 * Copyright (c) 2009 Keil - An ARM Company. All rights reserved.
 *----------------------------------------------------------------------------
 * History:
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; V1.20 Added USB_ClearEPBuf
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; V1.00 Initial Version
 *----------------------------------------------------------------------------*/&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;amp; the function in particular:&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;
void delay (uint32_t length ) {
&amp;nbsp; volatile uint32_t i;// changed to volatile to prevent removal by optimisation

&amp;nbsp; for ( i = 0; i &amp;lt; length; i++ );
&amp;nbsp; return;
}
&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;Changing i to a volatile data type caused the USB functionality to work again.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;A little surprised that this hasn't appeared elsewhere before, but hope it helps somebody else!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 23:31:38 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T23:31:38Z</dc:date>
    <item>
      <title>Having problems with optimisation on your USB project?</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Having-problems-with-optimisation-on-your-USB-project/m-p/550651#M11489</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by leo738 on Fri May 16 14:49:23 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello All,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've been working on a USB project &amp;amp; was tweaking as I was finishing up. I found invoking the minimal level of optimisation caused the USB functionality to fail. After some searching I've tracked down the culprit to a delay function in usbhw.c. This file has the header:&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;
/*----------------------------------------------------------------------------
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; U S B&amp;nbsp; -&amp;nbsp; K e r n e l
 *----------------------------------------------------------------------------
 * Name:&amp;nbsp;&amp;nbsp;&amp;nbsp; usbhw.c
 * Purpose: USB Hardware Layer Module for NXP LPC17xx
 * Version: V1.20
 *----------------------------------------------------------------------------
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This software is supplied "AS IS" without any warranties, express,
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; implied or statutory, including but not limited to the implied
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; warranties of fitness for purpose, satisfactory quality and
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; noninfringement. Keil extends you a royalty-free right to reproduce
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and distribute executable files created using this software for use
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on NXP Semiconductors LPC microcontroller devices only. Nothing else 
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gives you the right to use this software.
 *
 * Copyright (c) 2009 Keil - An ARM Company. All rights reserved.
 *----------------------------------------------------------------------------
 * History:
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; V1.20 Added USB_ClearEPBuf
 *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; V1.00 Initial Version
 *----------------------------------------------------------------------------*/&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;amp; the function in particular:&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;
void delay (uint32_t length ) {
&amp;nbsp; volatile uint32_t i;// changed to volatile to prevent removal by optimisation

&amp;nbsp; for ( i = 0; i &amp;lt; length; i++ );
&amp;nbsp; return;
}
&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;Changing i to a volatile data type caused the USB functionality to work again.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;A little surprised that this hasn't appeared elsewhere before, but hope it helps somebody else!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Leo&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:31:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Having-problems-with-optimisation-on-your-USB-project/m-p/550651#M11489</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:31:38Z</dc:date>
    </item>
  </channel>
</rss>

