This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C123GE6PM: enable FPU and USB issues

Part Number: TM4C123GE6PM
Other Parts Discussed in Thread: TM4C129DNCPDT

Hi team,

Posting for a colleague, the part number may not be exactly right, but it is a TM4C device with USB. 

  1. Is there a definitive way to enable the Floating-Point Unit on the Tiva processor? My understanding is that it's disabled by default. I've tried FPUEnable(), but that doesn't seem to increase the speed of my floating-point operations.
  2. I've found that certain USB devices work in some versions of the TivaWare CSeries library, while others will work in different versions. For example, using the USB channel as a serial port works in version 2.1.1.71 of TivaWare, but the DFU will not work. However, the DFU does work in versions 2.1.3.156 and 2.1.4.178, but then the serial port will not work. Is there some sort of patch that I need, or is there possibly something else going on?

Thanks,

Nate

  • Hi Nathaniel,
    Did you also call FPULazyStackingEnable after you call FPUEnable?

    I'm unaware that TivaWare version 2.1.4.178 does not work with USB in serial mode. Can you please elaborate? Can you please try usb_dev_cserial example from 2.1.4.178?
  • Hi Nathaniel, Charles,

    This is Tom Jacobson. I was the one who originally asked the two questions above. To clarify, the part I'm using is the TM4C129DNCPDT.

    When I'm using 2.1.4.178, I don't get a COM port listed under device manager, but I do when using version 2.1.1.71 of TivaWare. I don't change any of the code I've written, I just switch the referenced libraries to the different versions of TivaWare. The eval board I'm using (1294XL) is not cooperating, so I haven't been able to run the example on that board yet. But I'll keep trying.

    I did also call FPULazyStackingEnable. One of my coworkers is setting up some benchmarks to compare floating-point operation times between no FPUEnable+FPULazyStackingEnable calls, and calling FPUEnable+FPULazyStackingEnable.

    - Tom
  • Hi Tom,

     I just tried with the LaunchPad and below is what I see from the device manager on the COM port running the usb_dev_cserial example. I'm using a Windows 7 machine and the Tivaware is 2.1.4.178. Please try on your LaunchPad and see if you can get the same result as I do. 

  • Hello Thomas,

    What Windows OS are you using?
  • Hi Ralph and Charles,

    I'm using Windows 8.1.

    Charles, I did not get the same result as you when using 2.1.4.178. Instead of getting the USB Serial Command Port and USB Serial Port, I get, under Universal Serial bus controllers, USB Composite Device, with the yellow warning symbol over the USB symbol. So I'm not getting the COM ports I'm expecting to get. I was expecting the 2.1.1.71 to be different, but it gave me the same result.

    I had actually posted roughly this same issue a few months ago (Ralph, you were helping me back then). I didn't really get very far there.

    - Tom

  • Hi Tom,

    Yes I do remember that. We hadn't seen any other reports of the issue in Windows 8.1, and the Windows 10 issue remains unsolved currently, though I am fairly sure it is an issue with the descriptors. That said, comparing the USBLib firmware from 2.1.1.71 to 2.1.4.178 didn't reveal any changes that would impact the behavior you are seeing.

    Unfortunately the Windows 10 investigation has been slow moving, and right now that is the priority, so all I can advice is to keep track of the E2E thread for the Windows 10 Composite issue and see if any updates come from myself or maybe another enterprising individual with a suggested solution for Win 10 and then we can see if the same solution will resolve the Win 8.1 issue too. Latest post: e2e.ti.com/.../2322335
  • Sorry for not responding sooner. I managed to resolve the issue by using the 2.1.1.71 version of code. After doing a straight text compare between the different versions of example projects employing the USB DFU, I found that there were a few parameter changes to some of the initialization functions. Once I implemented those changes, the DFU began working under 2.1.1.71.

    I also discovered that, for whatever reason, the FPU appears to start up on its own, possibly from assembly start-up or something similar. If I issue an FPUDisable() command without calling FPUEnable() first, I get a program crash on my first floating-point operation. So I think the FPU is being initialized for me somewhere.....

    Thank you guys for your help in solving this issue.

    - Tom