English
Language : 

TUSB3410_10 Datasheet, PDF (70/98 Pages) Texas Instruments – USB to Serial Port Controller
TUSB3410 Bootcode Flow
11 TUSB3410 Bootcode Flow
11.1 Introduction
TUSB3410 bootcode is a program embedded in the 10k-byte boot ROM within the TUSB3410. This program
is designed to load application firmware from either an external I2C memory device or USB host bootloader
device driver. After the TUSB3410 finishes downloading, the bootcode releases its control to the application
firmware.
This section describes how the bootcode initializes the TUSB3410 device in detail. In addition, the default USB
descriptor, I2C device header format, USB host driver firmware downloading format, and supported built-in
USB vendor specific requests are listed for reference. Users should carefully follow the appropriate format to
interface with the bootcode. Unsupported formats may cause unexpected results.
The bootcode source code is also provided for programming reference.
11.2 Bootcode Programming Flow
After power-on reset, the bootcode initializes the I2C and USB registers along with internal variables. The
bootcode then checks to see if an I2C device is present and contains a valid signature. If an I2C device is
present and contains a valid signature, the bootcode continues searching for descriptor blocks and then
processes them if the checksum is correct. If application firmware was found, then the bootcode downloads
it and releases the control to the application firmware. Otherwise, the bootcode connects to the USB and waits
for host driver to download application firmware. Once firmware downloading is complete, the bootcode
releases the control to the firmware.
The following is the bootcode step-by-step operation.
• Check if bootcode is in the application mode. This is the mode that is entered after application code is
downloaded via either an I2C device or the USB. If the bootcode is in the application mode, then the
bootcode releases the control to the application firmware. Otherwise, the bootcode continues.
• Initialize all the default settings.
− Call CopyDefaultSettings() routine.
Set I2C to 400-kHz speed.
− Call UsbDataInitialization() routine.
Set bFUNADR = 0
Disconnect from USB (bUSBCTL = 0x00)
Bootcode handles USB reset
Copy predefined device, configuration, and string descriptors to RAM
Disable all endpoints and enable USB interrupts (SETUP, RSTR, SUSR, and RESR)
• Search for product signature
− Check if valid signature is in I2C. If not, skip the I2C process.
Read 2 bytes from address 0x0000 with type III and device address 0. Stop searching if valid signature
is found.
Read 2 bytes from address 0x0000 with type II and device address 4. Stop searching if valid signature
is found.
• If a valid I2C signature is found, then load the customized device, configuration and string descriptors from
I2C EEPROM.
− Process each descriptor block from I2C until end of header is found
If the descriptor block contains device, configuration, or string descriptors, then the bootcode
overwrites the default descriptors.
SLLS519H—January 2010
TUSB3410, TUSB3410I
63