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.

TM4C1294KCPDT: LM Flash programmer does not show USB option and does not load required drivers on Windows 10 systems with no previous TI tools/software

Part Number: TM4C1294KCPDT

Hi support team,

We use LM Flash programmer to update our product  that uses the TM4C1294kcpdt in the factory and in the field via the USB port.  On PC systems that have previously  TI development software such as CCS and TIVAware, the installation of LM  FLASH programmer installs flawlessly and provides immediate access to a USB-DFU configured MCU.

However, when we install LM Flash programmer on an independent Windows 10 machine not intended for code development (i.e. no previous install of any TI software).  We encounter 2 problems.

1.  The USB DFU option in the LM FLASH Programmer app is not available in the interface drop down menu

2.  A USB-DFU enabled MCU (either unprogrammed MCU or placed into USB-DFU mode) enumerates but Windows 10 cannot find the appropriate drivers.

We download and use build 1613 from the TI site: LMFLASHPROGRAMMER Software programming tool | TI.com

We have dealt with this problem with mixed success by manually loading additional  files into the machine's Windows 10 /system32 and /syswow64 directories AFTER the install of LM FLASH Programmer and a full system reboot.  we use files from this location

http://software-dl.ti.com/tiva-c/SW-TM4C/latest/exports/SW-TM4C-2.1.4.178.PATCH-1.0.zip 

C:/WINDOWS\system32\DRIVERS\winusb.sys

C:/WINDOWS\system32\lmdfu.dll

C:/WINDOWS\system32\lmdfu.lib

C:/WINDOWS\system32\lmusbdll.dll

C:/WINDOWS\system32\lmusbdll.lib

C:/WINDOWS\system32\WdfCoInstaller01009.dll

C:/WINDOWS\system32\WinUSBCoInstaller2.dll

C:/WINDOWS\syswow64\lmdfu.dll

C:/WINDOWS\syswow64\lmdfu.lib

C:/WINDOWS\syswow64\lmusbdll.dll

C:/WINDOWS\syswow64\lmusbdll.lib

to *manually* install or verify the files are present: 

It is our expectation that the installation of LM Flash Programmer on a suitable Windows 10 machine would be sufficient to provide full support for USB base DFU.  

Any advice on proper installation of LM FLASH Programmer  for USB DFU updating or updates to this critical tool for TIVA products are much appreciated.  

Thanks,

Steve Tomassetti

  • Hello Steve,

    I don't see this issue come up often but it has popped up a couple times. One user reported this process working well to set LM Flash to be in Windows 7 Compatibility mode. Is that a solution that you have tried before?

    • Right Click - > Properties
    • Compatibility -> Check Compatibility Mode
    • Select Windows 7, Hit Ok.
    • Launch Program (Or simply plug into USB if no firmware is loaded)
    • DFU should now be an option

    For the drivers, there are two possible issues there.

    1. Needing the latest TivaWare drivers for Win 10, which you found with the patch file
    2. The USB DFU firmware has a small error that sometimes causes issues with enumeration on Windows 10 machines - we did not catch this bug before TivaWare 2.2.0.295 was released. Details can be found here: https://e2e.ti.com/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/917631/tm4c1294ncpdt-tiva-usb-bootloader-windows-driver/3390384#3390384

    Let me know how much these help with your situation, I want to see how these known solutions help first and then if there are still issues we can dive in further.

  • Hi Ralph,

    We haven't tried running LM FLASH Programmer in Win 7 Compatibility mode as yet, but we will do some tests to check if this solves the USB DFU menu issue, and report back asap.

    I'm still not clear on item 2 details you provided and how to utilize it.  Let me add some additional info on our implementation to help with context:

    Our implementation does not normally boot with a DFU device enumerated.  It boots up as a generic CDC 2 port serial device using WINUSB (i.e. PID and VIDs at 0xFFFF). based on TIVAWare 2.1.2.111.  We do this to avoid having to provide custom ..inf files with our product and it has worked quite well to date.  For FW updating, we utilize the serial USB connection to send a command to place the device into DFU mode. That command instructs the TIVA to execute this code:

    void enterDFUmode (void){
    // Terminate the USB device and detach from the bus.
    //
    USBDCDTerm(0);

    //
    // Disable all interrupts.
    //
    ROM_IntMasterDisable();

    //
    // Disable SysTick and its interrupt.
    //
    ROM_SysTickIntDisable();
    ROM_SysTickDisable();

    //
    // Disable all processor interrupts. Instead of disabling them one at a
    // time, a direct write to NVIC is done to disable all peripheral
    // interrupts.
    //
    HWREG(NVIC_DIS0) = 0xffffffff;
    HWREG(NVIC_DIS1) = 0xffffffff;
    HWREG(NVIC_DIS2) = 0xffffffff;
    HWREG(NVIC_DIS3) = 0xffffffff;
    HWREG(NVIC_DIS4) = 0xffffffff;

    //
    // Enable and reset the USB peripheral.
    //
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_USB0);
    ROM_SysCtlPeripheralReset(SYSCTL_PERIPH_USB0);
    ROM_USBClockEnable(USB0_BASE, 8, USB_CLOCK_INTERNAL); //Ver 2.1.2.111 needs an 8, Ver 2.1.4.178 needs a 4

    //
    // Wait for about a second.
    //
    ROM_SysCtlDelay(g_ui32SysClock / 3);
    //
    // Re-enable interrupts at the NVIC level.
    //
    ROM_IntMasterEnable();

    //
    // Call the USB boot loader.
    //
    ROM_UpdateUSB(0);
    //ROM_UpdateEMAC(g_ui32SysClock);

    //
    // Should never get here, but just in case.
    //
    while(1)
    {
    }

    }

    This is using ROM library calls.  Do I need to change this to MAP_ library calls from a newer TIVAWare library?  

    In the past, we have manually loaded the .dll and .lib files from ...PATCH-1.0.zip into the /windows32 and /syswow64 directories,  in most cases after a PC reboot, the DFU device enumerated properly, and we are good (a rather messy way to setup customers with DFU capability);  However in a recent case with a customer's Win10 laptop, this did not work, and DFU still did not enumerate properly.

    Thanks for your expertise Ralph!

    Best,

    Steve

  • Hello Steve,

    For the ROM USB boot loader you shouldn't need to worry about the code updates. That's only for Flash based USB boot loaders with Windows 10.

    I have not tried doing the method you described for installing the device drivers. Our recommended method is to go into Device Manager and find the device that is not enumerating correctly in the list, and then after confirming that, updating the driver via Manual Search and pointing to the TivaWare driver folder or the PATCH folder.

    Can you see if the customer can try and manual installation on their laptop? I've not really had anyone raise this issue in the context of needing to resolve an issue for a customer though so I can understand if that is difficult. I don't know if we really have many or any other customers using our exact TivaWare drivers like that, if that is common, it's not something I am aware of and so I don't really have a more customer friendly idea to offer right now.

  • Thanks Ralph.

    I think I have it running now.  The key was to first download ....PATCH-1.0.zip into a directory and unzip it.  Then start connect and put my device into DFU mode..  From there, launch control panel and find the DFU device.  It was showing it was missing a driver.  From there I:

    right clicked the Device Icon to properties, -->hardware tab-->properties button-->Change settings-->driver tab-->update driver button-->Browse my computer for drivers.

    I then followed the instructions to browse for a driver directory.  Navigated to where I unzipped ...PATCH-1.0.zip  navigated to and selected the ...windows_driver subdirectory.  Installed drivers from that subdirectory.

    This installed the drivers and the also solved the issue of USB DFU showing up in the LM FLASH Programmer interface drop down menu without having to revert to any legacy mode operation.

    I will be writing down this procedure for my field support guy for future reference.

    Ideally, it would be great for an update to be made to Build 1613 or a new DFU support tool to be created to remove these complex extra steps in installing this critical tool.

     

    thanks for your help on this.  (you too Lawrence!)

    Steve 

  • Hi Steve,

    Ideally, it would be great for an update to be made to Build 1613 or a new DFU support tool to be created to remove these complex extra steps in installing this critical tool.

    I understand the pain there, but that isn't actually related to LM Flash Programmer. This is related to how the Windows 10 handles USB drivers. There were a lot of changes to that process and Win 10 is a lot less forgiving than Win 7 and that causes a lot more issues with this stuff because of how Microsoft is handling these 'foreign' USB devices. The whole process you described is to load TivaWare USB drivers into Windows 10 properly and I don't really know of a way to streamline that easily. In theory we could put together some sort of installer to automate those steps, but its not a request we have really gotten before so I don't anticipate that is an action we will take.

  • Thanks Ralph,

    I understand well that Microsoft can make this seemingly simple request onerous.  Perhaps a third party might fill the gap.  

    thanks for everything!

    Steve