Breakpoints within TI's flash based bootloader are initially overwritten. This makes debugging bootloader initialization code difficult.
The issue is caused by the function ProcessorInit in bl_startup_css.s. ProcessorInit has a copy loop that puts bootloader code from flash into SRAM. This allows the bootloader to erase and write to flash at will. The hardware FPB unit only places breakpoints in code memory. Breakpoints in SRAM code are implemented by modifying the the opcodes. The copy loop overwrites the SRAM breakpoint. You may notice the debugging session starts the PC at an SRAM address. This does not solve the problem as the copy loop itself is copied and runs. Everything in SRAM is written twice.
As a workaround, you can set a hardware watch point at the address shortly after the copy loop. The disassembly window shows where the assembly code is placed in memory. In this example, the copy loop is followed by a movs at address 0x2000032C.
Setting a hardware watchpoint at 0x2000032E will break after this particular movs is copied into SRAM for a second time. After this second copy, you may place an SRAM breakpoint at 0x2000032C. Hitting this breakpoint indicates the copy loop is over, and you are free to place SRAM breakpoints elsewhere in the bootloader.