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.

TMS320C5515: details on the bootloader USB protocol for client replacement

Part Number: TMS320C5515

We would like to use the built-in (ROM) bootloader on the C5515 to load firmware over USB. The bootloader client available from TI, usb_boot_64.exe, requires a non-signed Windows driver which makes its use particularly awkward, especially since we want customers be able to load firmware themselves. Reading the scarce bootloader documentation I understand that the bootloader client simply writes the firmware file to an endpoint on the device, so writing a client doesn't sound difficult, and also there should be no reason to require a custom Windows driver since this task most probably can be achieved using e.g. Windows' own WinUSB driver.

For this I would like to have a few more details on the USB protocol used. The device presents an IN and an OUT endpoint, and obviously the firmware must be written to the OUT endpoint. Is there any use of the IN endpoint? The device descriptor declares for the OUT bulk endpoint a bMaxPacketSize of 64 bytes, a value that is invalid for a USB high-speed device - clearly a TI silicon bug. I hope this will not cause problems, and that this was not the reason for making a custom driver.

As an alternative to protocol information, the source code of the existing client would be useful.

Of course, if there is another bootloader client available already that doesn't require custom drivers, we would be happy to try it out.

  • Hi Tormod,

    I've forwarded this to the software experts. Their feedback should be posted here.

    BR
    Tsvetolin Shulev
  • I am not sure they would know. From the TI software package contents, it looks like the whole firmware loading was outsourced to Jungo(?). However, there are only two gotchas here as far as I can tell:

    - All packets must be 64 bytes, so the last packet must be padded (or the firmware file). Found by trial and error.

    - Between the firmware file and the 64 byte packet, every 2 bytes must be swapped (16-bit word big-endian vs little-endian). Found by sniffing the USB stream on an XP machine.

    It would have been good if above was documented in the bootloader document to save your customers from trial and error and reverse engineering. Anyway, with this sorted out, we can now use the bootloader without installing non-signed drivers (or drivers at all for that sake), and from any OS.
  • Tormod,

    Apologies for the very tardy response.

    We currently do not have the bootloader tools based on WinUSB, and there aren't any plans to add support for it at this time. Your 2 bullet points are valid. Big endian and max packet size is 64 bytes. Unfortunately, licensing prevents the distribution of the source code as it stands.

    Shall take this up internally to try and address. Thanks for pointing it out.
    We will also look into as you have suggested, to document this in in the bootloader application note.

    Lali
  • OK. If you or anyone else would like to acquire our bootloader client (Windows/Linux/Mac, no driver needed) please contact me.
  • Hello Tormod,

    I would like to bootload my c5515 device via USB.  Sounds like you are offering a good solution.  Can you share it with me?

    Chuck W.