MMS UBLs and Flashers
From Texas Instruments Embedded Processors Wiki
MMS UBLs and flashers are MMS versions of DaVinci UBL and host tool. See DaVinci RBL, UBL and host tool overview page for further similar tools.
Contents |
Overview
MMS takes modular approach to UBLs and flashing. They tackle board firmware initialization and upgrade with comprehensive set of tools.
Tools
MMS tooling comprises:
- two UBLs (mmsuartloader and mmsnandloader)
- two Host Programs (BOOTME and BOOTMMS)
- one Tertiary Bootloader (U-Boot)
While mostly similar, booting from UART and NAND have their specifics. Provided that UBL has size limit of 14 KB, MMS decided to split UART UBL from NAND UBL. They believe this will enable to build fast and feature rich UBLs, while keeping them small and preserving space for future extensions.
mmsuartloader is the UART boot mode UBL. It targets large application (more than 14kB) download over UART.
mmsnandloader is the NAND boot mode UBL. It targets large application read from NAND.
BOOTME is the host tool that serves UBL to DM644x RBL.
BOOTMMS is the host tool that serves larger applications to mmsuartloader.
U-Boot is the main flashing tool.
BOOTME and BOOTMMS are .NET assemblies that run under both Windows and Linux and have been tested and work well with
- Windows: Microsoft Windows XP, Service Pack2, Microsoft .NET Framework 2.0
- Linux: mono 1.1.17.1/Fedora Core 6/i386
How the tools fit together
- Virgin board: Use BOOTME, BOOTMMS, mmsuartloader and U-Boot to initialize or recover firmware on a DM644x based board. (DM644x bootmode must be set to UART). BOOTME transfers mmsuartloader to DM644x. BOOTMMS and mmsuartloader transfer U-Boot to DM644x. U-Boot then takes care to erase and program the underlying flash (NOR or NAND).
- Flashed board (NAND): Already flashed DM644x based boards in NAND boot mode start with RBL -> mmsnandloader -> U-Boot
- Flashed board (NOR): Already flashed DM644x based boards in NOR boot mode start U-Boot directly
See UART_BOOT readme for extra information
Features
Together, MMS UBLs, host programs and U-Boot form a complete replacement for RBL_UBL_and_host_program#TI_UBL TI UBL and RBL_UBL_and_host_program#TI_host_program DVFlasher. But actually, they are much more than that!
mmsuartloader supports:
- UCL compressed image downloads (this provides faster boot speed over the slow 115200 UART link. Typically mmsuartloader is around 6 times faster than TI UBL in UART boot mode)
- code runtime self-extraction (main UBL code is compressed, which provides space for verbose messages and CRC checking code)
- uImage format (with CRC)
- verbose messages (which eases debugging)
- fancy printf (which eases porting to other boards)
mmsnandloader supports:
- NAND bad block checking/skipping
- NAND ECC checking
- uImage format (with CRC)
- verbose messages (which eases debugging)
- fancy printf (which eases porting to other boards)
Specifics and Limitations
- For NAND flashing, a special version of U-Boot is used. This special version understands DM644x RBL ECC format and placement. Current patch works only for small-page NAND devices, but it can be easily extended for large-page devices also (coming soon!)
- By default, mmsuartloader and mmsnandloader are built for a special MMS board. You will have to manually remove
CFLAGS += -DHSTCMBU -DDDR_HOT_TIRE_MODE
from mmsuartloader and mmsnandloader Makefiles in order to compile for DaVinci EVM.
TODO
- Add more information to this document
- Implement ECC error fixing in mmsnandloader
- Port NAND patch to U-Boot git, add support for large page devices
- Rewrite Host Tools in C or Kermit
- Switch build system to kbuild, merge mmsnandloader and mmsuartloader source trees
Downloads
- UART_BOOT.tar.gz - mmsuartloader, BOOTME and BOOTMMS
- mmsnandloader.tar.gz - mmsnandloader
- u-boot-1.2.0-davinci+nand.patch - U-Boot patch
References
- Announcement mail on DaVinci list
- Comparison with rboot and UBL
