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.

TUSB8041: Startup and Programming Mode/Endpoint

Part Number: TUSB8041
Other Parts Discussed in Thread: TUSB8043

In the datasheet under section 8.4.2 "I2C EEPROM Operation", the documentation states:

"If the hub detected an un-programmed EEPROM (value other than 55h), the hub will enter Programming Mode and a Programming Endpoint within the hub will be enabled."

I cannot find any information about this 'Programming Mode' anywhere else. Given there is a Prorgamming Endpoint enabled, how do we use it? What is the protocol? Does this enable the developer to read and write the EEPROM contents via I2C over the upstream USB connection?

When this Programming Mode is enabled, will the hub still start up and enable the upstream port?

Ideally we would use this to program the EEPROM from the host using a custom flashing tool.

Thanks -

  :: Gavin

  • Hi Gavin,

    When the hub enters programming mode, it reports a different VID/PID than the usual hub VID/PID to the host controller so that a programming endpoint driver can be loaded. While in programming mode, the TUSB8041 does not operate as a hub: only the upstream USB port is active.

    TI can provide the EEPROM programming tool for the TUSB8041. I'm assigning this to a different team member who can provide that for you.

    Regards,
    JMMN
  • Gavin,
    I have already sent you the link to download the tool through email.
    Please, let me know if you have any questions on the tool.
    Regards
  • Hello JMMN,

    Thanks, I have received the tool and will shortly begin testing.

    Is it still possible to get the protocol for this programming mode?

    Ideally we would incorporate programming the EEPROM into our manufacturing tools and processes, so that we have a single tool which can program all firmware and configure all EEPROMs via a single USB connection. This would only be possible if we can first program the EEPROM via the USB Hub's upstream connection.

    Otherwise we would have to have to manually run this EEPROM tool as a separate step before we can access downstream microprocessors for flashing firmware etc.

    How are others solving the issue of flashing everything in manufacturing in the most efficient and automated way?

    Thanks -

    :: Gavin
  • Hello Gavin,

    The TUSB8041's "Programming Mode" was designed to interface only with the configuration EEPROM for the hub.
    If you would like to develop your own tools controlling the I2C interface to configure the EEPROM and other devices in your design, I would recommend you to take a look at the TUSB8043.

    TUSB8043 provides an HID interface that can be easily used to control the I2C master on the device while the USB Hub remains functional.
    Details on how to use the USB HID to I2C interface are available on the TUSB8043 datasheet at section 8.3.3 - www.ti.com/.../detailed-description

    Source code examples on how to use the USB HID to I2C interface on the TUSB8043 can be provided upon request.

    Regards,
    Jorge
  • Hi Jorge,

    Thanks, I will take a look at the TUSB8043. I don't think this was available when we began this design, but it looks like the additional features would be ideal for our purposes (programming using HID via the upstream port). In the meantime, we have an interim solution for the 8041.

    Regards -

    :: Gavin