SNIU028D February 2016 – September 2020 UCD3138 , UCD3138064 , UCD3138064A , UCD3138128 , UCD3138A , UCD3138A64
The ROM program changed for the UCD3138064. Instead of 2 checksums on the UCD3138, there are now 4 locations for checksums on the UCD3138064, and one of these checksums double-jobs to cover two possible program code spaces. The checksums and their locations are:
Checksum Location | Purpose |
---|---|
0x07FC | Checksum for 2kB boot in program flash 1 |
0x7FFC | Checksum for 32kB program in program flash 1 |
0x87FC | Checksum for 2kB boot in program flash 2 |
0xFFFC | Checksum for 32kB program in program flash 2 or |
Checksum for 64kB program in program flash 1 and 2 |
The checksum locations in Table 13-4 assume that program flash block 1 is mapped to address 0x0000, and program flash block 2 is mapped to 0x8000.
Figure 13-3 is a flowchart showing the order in which the ROM verifies the integrity of the program flash contents using the different checksums. The branch instruction check at the very beginning prevents the Boot ROM checksum test checking the integrity of an empty block of program flash (as if the program flash was filled with 0x00, then the checksum test would pass).
If program flash block 1 is mapped to address 0x0000, program flash block 2 is mapped to address 0x8000, and vice-versa.
The UCD3138 has a PMBus command called “execute flash” with a command code of 0xF0. This causes the program to execute. On the UCD3138064, the same command code causes program flash block 1 to be placed in control. A new command code of 0xF7 has been added for the UCD3138064, which maps program flash block 2 to address 0x0000 and starts executing from there. See section 14.5.3 for more details on the “execute flash” command.