Other Parts Discussed in Thread: TM4C123GH6PM, EK-TM4C1294XL, TM4C1294NCPDT
Hi, we have been using Tm4c board for a few years now, and this problem seems to be mostly prevalent in TM4c129ENCPDT board.
The problem: We have a windows application that uses dfuprog.exe (provided from TivaWare_C_Series-2.2.0.295) and on some computers, the same bin file, it fails it update (dfu error -7) while in other computers it works fine, with the same bin file, and the same board. This causes huge problem for our customers when they need to update to our new software, and it also creates problem in our R&D.
Information we gathered so far:
After modifying the code in Tivaware c series to have a local build with more information about the issue, it appears that the main source of the problem, is in lmdfu.dll.
The problem appears to be in function: [LMDFUParamsGet].
In computers where the problem dose not appear. The information provided by [DFUDeviceInfoGet] seems to match the specs expected from TM4c129ENCPDT. This leads to later size check to pass (we use a bin file, not fully dfu warped file).
In computers where the problem accrues, the specs that we get are matching TM4C123GH6PM despite the board been a TM4c129ENCPDT board. It is unclear why that is the case.
The problem is not as simple as the values returned by the ROM code been wrong, as even if in the windows side we use the values that should be used, the burn will not continue, as from what we observed,
This problem can happen on both windows 10, and windows 11. We could not determine what factors can cause that behaviour to accrue. This behaviour can also suddenly disappear, and the dfuprog works as expected.
When a computer has this problem (mostly happens with TM4c129ENCPDT ), It seem to also effect dfuprog burning of TM4C123GH6PM, however we did not investigated into it further.
Sense we do not have access to the ROM code, we can not investigate why the ROM suddenly returns the wrong specs.
Specification about environment:
- The board is in ROM_UpdateUSB function before the windows application calls defuprog. With the USB peripheral been the active. The clock speed is 50mhz in that state and additional interrupts are disabled.
- The problem dose not accrue in some computers, mostly because the spescs we get are the correct ones. The entire process until the specs getting is the same in working and non working computers.
- When we tried to provide the correct values instead of the incorrect ones from ROM, the lmusbdll.dll has an error as it seems like whatever we send it, the ROM dethatch itself and causes itself to exit from DFU mode.