SNIU028D February 2016 – September 2020 UCD3138 , UCD3138064 , UCD3138064A , UCD3138128 , UCD3138A , UCD3138A64
In the UCD3138, the Boot ROM supports 2 checksums in the 32KB Program Flash:
If either checksum is valid, the ROM will move the Program Flash to location 0, and jump to that location to start execution of the customer provided program in the Program Flash. The 32K checksum verification takes about 10 milliseconds to complete. The checksum is a simple additive checksum. Each byte in memory is treated as a positive 8 bit number and is added to the checksum. A 4 byte checksum is used, so no truncation occurs. Even if the entire memory is full of 0xff, the checksum value will only be 0x7F7C04. The checksum calculation includes all the bytes in the block except for the last 4, since the expected checksum is located there.
Before verifying the checksums, the Boot ROM first checks to see if there is a 0xEA in the first location. This represents a jump opcode. This is a jump to the start of the program. If there is not an EA, the Boot ROM doesn’t check checksums, but goes straight to BOOT ROM communication mode with the PMBus.
This prevents the system from locking up if all of Program Flash is filled with 0.