The BANKMGMT region of each bank pair
contains three fields that are used to manage bank status and firmware updates:
- BANK_STATUS[63:0] (Offset 0x00): This field specifies whether the
bank contents are currently valid or invalid. A valid bank pair has a status
value of 0x55555555_55555555. If both banks are inactive, the device is
unable to execute Flash code and can fail to boot. If both banks have valid
active statuses, then the current active bank is determined by
BANK_UPDATE_CTR.
- BANK_UPDATE_CTR[63:0] (Offset 0x08): This is a 64-bit
decrementing counter value that is used to determine the most
recent firmware revision. The counter has a value of 0xFFFFFFFF_FFFFFFFF
when shipped from the TI factory. When both bank pairs have valid status
values, the BANK_UPDATE_CTR for each bank pair is compared against the other
to determine the most recent firmware revision. The bank pair with the lower
counter value is determined to be the most recent revision.
- BANKMODE[63:0] (Offset 0x10): This field only exists in FLC1 BANKMGMT
regions (for CPU1). The BANKMODE field configures the device bankmode and is
loaded into the SSU_GEN_REGS.BANKMODE register at device boot. After
BANKMODE is configured, the boot ROM then reads the value of each bank
pair's BANK_UPDATE_CTR to determine whether CPUxSWAP is enabled.
The BANKMGMT region is best programmed and configured using the Flash API and TI
Flash tools, such as the CCS Flash Plugin or UniFlash. To avoid misconfiguration
resulting in an unbootable device, do not allocate data directly into the BANKMGMT
region in the application image/.out file.
The following security restrictions apply to updates of the BANKMGMT region:
- In SSUMODE1, all code running
from any LINK has permission to update the BANKMGMT sectors, since ZONE1 is
enabled for full debug. This enables ease of code development.
- In SSUMODE2, all code running
from any LINK has permission to update the BANKMGMT sectors, since ZONE1 is
enabled for full debug.
- In SSUMODE3, only the SECCFG
update owner defined in SECCFG_UPDATE_CFG has permission to update BANKMGMT
sectors. In addition, SECCFG_UPDATE_CFG.UPDATE_EN must be set to 0xC to enable
updates to BANKMGMT when operating in SSUMODE3.