We have experienced an apparent bug with UniFlash 3.1.0 (updated so that it supports the TMS320F28075). We first successfully programmed the Z2 BOOTCTRL register on a target. We then attempted to program the same register on another target and UniFlash seemed to program 0xFFFFFFFF into the register even though it showed our desired value in the GUI.
We discovered that the UniFlash session file it creates seems to cache values for the OTP registers (which seems wrong -- it should read them from the target whenever it connects). However, even after exiting UniFlash, deleting the session file, power cycling the target, unplugging and reinserting the debugger (XDS100v2 and XDS100v3 both exhibit the same behavior), UniFlash still shows a value in the BOOTCTRL register that is not really there.
The work around is to exit UniFlash, and then create a brand new target configuration each time you start it (don't save it).
What is particularly nasty about this behavior is that the OTP registers are, well, ONE TIME programmable. So it is pretty easy to brick hardware if you are not aware of this. Luckily, since there are two Zones of secure registers, and we were cautious enough to start with Zone 2, we ruined only one target before discovering what was going on and were able to save the others by using Zone 1.