2kB boot
30kB program
Programmed once before sent to field
Can be updated in field by a host via 2kB
boot program and comms port
Boot flash program
x
must have a valid checksum @ address 0x07FC
x
should check the integrity of 30kB program at startup
x
if integrity check passes: give control to 30kB program
x
if integrity check fails: await further commands from
host via a comms port
x
contain functions that allow a host to erase and
program the other 30kB of program flash, via a
comms port
main program should
x
contain function to allow control to be returned to
boot flash program (for field updates)
x
allow this function to be invoked by a host via a
comms port
Boot flash checksum
User program checksum
0x07FC
0x7FFC
0x0000
Boot ROM Function
440
SNIU028A – February 2016 – Revised April 2016
Copyright © 2016, Texas Instruments Incorporated
Boot ROM and Boot Flash
Figure 13-2. Boot Flash
Since the Boot Flash program is in Program Flash, the user of the chip is free to program it as desired.
13.1.4 Avoiding Program Flash Lockup
If either checksum is programmed correctly, the Boot ROM will turn control directly over to the Program
Flash. This is necessary for product startup in production units. It also provides security for the program,
because the Boot ROM cannot be used to read from the Program Flash.
Even in production programs a “backdoor” is often added to the program to enable clearing the checksum.
This permits firmware update. Normally on production programs, clearing of the checksum is protected by
a customer defined password. Or instead of clearing the checksum, the entire flash is cleared, preventing
a third party from examining the program.
This approach works fine for production, since the backdoor is thoroughly tested before the production
program is released.
In development, however, untested programs are often installed into the program flash. If the backdoor is
not at the very beginning of the program, a program bug could prevent it from working. So there are 2
options to avoid Program Flash Lockup:
1. Include a simple checksum clearing function at the very start of the program
2. Don’t program the checksum until the backdoor has been tested with this version of the program.
More detailed information is available in