M-Boot ROM Description
602
SPRUHE8E – October 2012 – Revised November 2019
Copyright © 2012–2019, Texas Instruments Incorporated
ROM Code and Peripheral Booting
The I2C handling functions are I2CSend(), I2CReceive(), and I2CFlush() functions. The device
communicating with the bootloader must operate as the I2C master and provide the I2C0_CLOCK signal.
The I2C0_DATA pin is open drain and can be driven by either the master or the slave I2C device.
6.5.15.1.5.2.1 I2C Transport
The bootloader supports updating via the I2C0, SSI0, and UART0 ports which are available on Concerto
microcontrollers. The SSI port has the advantage of supporting higher and more flexible data rates but it
also requires more connections to the microcontroller. The UART has the disadvantage of having slightly
lower and possibly less flexible rates. However, the UART requires fewer pins and can be easily
implemented with any standard UART connection. The I2C interface also provides a standard interface,
only uses two wires, and can operate at comparable speeds to the UART and SSI interfaces.
The I2C handling functions are I2CSend(), I2CReceive(), and I2CFlush() functions. The device
communicating with the bootloader must operate as the I2C master and provide the I2C0_CLOCK signal.
The I2C0_DATA pin is open drain and can be driven by either the master or the slave I2C device.
6.5.15.1.5.2.2 SSI Transport
The SSI handling functions are SSISend(), SSIReceive(), and SSIFlush(). The device communicating with
the bootloader is responsible for driving the SSI0_RX,SSI0_CLK, and SSI0_CS pins, while the Concerto
microcontroller drives the SSI0_TX pin. The format used for SSI communications is the Motorola format
with SPH set to 1 and SPO set to 1 (see Stellaris Family data sheet for more information on this format).
The SSI interface has a hardware requirement that limits the maximum rate of the SSI clock to be at most
1/12 the frequency of the microcontroller running the bootloader.
6.5.15.1.5.2.3 UART Transport
The UART handling functions are UARTSend(), UARTReceive(), and UARTFlush().The device
communicating with the bootloader is responsible for driving the UART0_RX pin on the Concerto
microcontroller, while the Concerto microcontroller drives the UART0_TX pin.
While the baud rate is flexible, the UART serial format is fixed at 8 data bits, no parity, and one stop bit.
The baud rate used for communication can either be auto-detected by the bootloader, if the auto-baud
feature is enabled, or it can be fixed at a baud rate supported by the device communicating with the
bootloader. The only requirement on baud rate is that the baud rate should be no more than 1/32 the
frequency of the microcontroller that is running the bootloader. This is the hardware requirement for the
maximum baud rate for a UART on any Concerto microcontroller.
When using a fixed baud rate, the frequency of the crystal connected to the microcontroller must be
specified. Otherwise, the bootloader will not be able to configure the UART to operate at the requested
baud rate.
The bootloader provides a method to automatically detect the baud rate being used to communicate with
it. This automatic baud rate detection is implemented in the UARTAutoBaud() function. The auto-baud
function attempts to synchronize with the updater application and indicates if it is successful in detecting
the baud rate or if it failed to properly detect the baud rate. The PickInterface() function makes multiple
calls to UARTAutoBaud() to attempt to retry the synchronization if the first call fails. In M-Boot ROM, the
bootloader will wait forever for a valid synchronization pattern from the host.
6.5.15.2 M-Boot ROM EMAC Boot Mode
This section gives details on EMAC boot mode in M-Boot ROM on the Concerto devices.
When using the Ethernet interface to communicate with the bootloader, the BOOTP and TFTP protocols
are utilized. By using standard protocols, the bootloader will co-exist in a normal Ethernet environment
without causing any problems (other than using a small amount of network bandwidth).