PRM
CONTROL
CM
CKGEN
WDTIMER
UART
MMCHS
I2C
GPMC
SPI
ELM
DMTIMER1MS
SYSTEM
FAT
CLOCKS
SWCFG
DFT
BOOTING
XIP
NAND
UART
SPI
MMCSD
MAIN
SEC_ENTRY
HW
HLOS
Public ROM Code
(High Level)
Public ROM Code drivers
Public ROM Code HAL
MMC / SD cards
XIP
EMAC
UART
NAND flash
SPI flash
EMAC
XMODEM
BOOTP
TFTP
USB
RNDIS
USB
USB
Functional Description
26.1 Functional Description
This chapter describes the booting functionality of the device, referred hereafter as ROM Code. The
booting functionality covers the following features:
Memory Booting: Booting the device by starting code stored on permanent memories like flash-memory or
memory cards. This process is usually performed after either device cold or warm reset.
Peripheral Booting: Booting the device by downloading the executable code over a communication
interface like UART, USB or Ethernet. This process is intended for flashing a device.
The device always starts up in secure mode. The ROM Code takes care of early initialization. The ROM
code switches the device into public mode. Hence the Public ROM Code provides run-time services for
cache maintenance.
26.1.1 Architecture
The architecture of the Public ROM Code is shown in
. It is split into three main layers with a
top-down approach: high-level, drivers, and hardware abstraction layer (HAL). One layer communicates
with a lower level layer through a unified interface.
The high level layer is in charge of the main tasks of the Public ROM Code: watchdog and clocks
configuration and main booting routine.
The drivers layer implements the logical and communication protocols for any booting device in
accordance with the interface specification.
Finally the HAL implements the lowest level code for interacting with the hardware infrastructure IPs. End
booting devices are attached to device IO pads.
Figure 26-1. Public ROM Code Architecture
26.1.2 Functionality
illustrates the high level flow for the Public ROM Code booting procedure. The ROM Code
performs platform configuration and initialization as part of the public start-up procedure.
4096
Initialization
SPRUH73H – October 2011 – Revised April 2013
Copyright © 2011–2013, Texas Instruments Incorporated