This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OTP boot mode on TMS320F28377D

Hello,

I have been testing a custom SPI bootloader using the boot key emulator at address 0xD00 and things work well. I am using boot mode 0x84. My design does not use the boot pins so these can stay as the defaults.

Therefore my understanding is that if I enter 5458845A into the Z1-BOOTCTRL box under Debug Configurations > Target > Flash Settings that this value should be picked out at start up and the device should boot from SPI every time on a reset.

However I found this post suggesting that there may be some problems with this mechanism. Can anyone reassure me that I am doing the right thing before I start messing up the OTP.

I am using CCS v6.0.1.

Thanks and regards,

Adam

  • Adam,

    You are initializing bits 31:24 and 23:16 of Z1-BOOTCTRL with value 0x54 and 0x58. This will configure GPIO85 as BOOTPIN1 and GPIO89 as BOOTPIN0 instead of default BOOTPINs (GPIO72/GPIO84).  Also value 0x84 for bit postion 15:8 selects SPI BOOT1 option which chooses alternate pin for SPI BOOT (please refer SPI Boot – IO option 2 in section "3.20 Boot ROM GPIO Configurations" of TRM).

    Is this what you are expecting?

    Regards,

    Vivek Singh

  • Hi Vivek,

    Typo, should have been 4854845A for bootpin 1 on GPIO72 bootpin 2 GPIO84 and SPI BOOT1.

    To be honest I don't care about the bootpins. Could I just do FFFF845A? What I need is some confidence this is going to work given the other post. I have the first silicon rev. Are there any known problems with this mechanism?

    Thanks,

    Adam
  • Adam,

    There is no known issue with this feature. Only caution is that user need to make sure these locations are programmed correctly (as per their requirement) because this is in OTP which can be programmed only once. If the value is wrong then user need to replace the device.

    On,

    To be honest I don't care about the bootpins.

    I didn't understand this comment. Even after programming the OTP location, user need to set the BOOT PINs to 1/1 (Get Mode) to have it working properly. If you are leaving these values default 0xFF/0xFF then default BOOTPINS (GPIO72/GPIO84) need to be set 1/1.

    Did you confirm that in current setup you are using SPI pinmux option for value 0x84?

    Regards,

    Vivek Singh 

  • Hi Vivek,

    Sorry, I meant for the boot pins I have the defaults so can I leave them at FFFF? I basically mean they are fine as they are and I don't need to change them. Leaving them as FFFF would mean they are both set to GPIO256 but I don't think this exists.

    Also if I set it to FFFF845A I could program them after if necessary if that is required.

    Thanks,

    Adam
  • Adam,

    Also if I set it to FFFF845A I could program them after if necessary if that is required.



    Please note that these locations also have ECC values in OTP. So even if you leave some bit fields un-programmed, you will not be able to re-programmed them later because of ECC value. So you need to program all the fields with required value at once.

    To make it work properly -

    * You need to choose proper BOOT PINS (which exist on device) and drive them with value 1/1 (Get Mode) on board.

    * Choose correct setting for SPI BOOT (option 1 or option 2) based on which GPIO pins you want to use as SPI pin.

    * Program all the values in OTP location at once.

    Regards,

    Vivek Singh

  • Adam,

    Another point -

    As I mentioned earlier, if you leave OTP_BOOTPIN0/OTP_BOOTPIN1 un-programmed (value 0xFF), this will select default BOOT PINs (GPIO72/GPIO84) NOT GPIO256 (as mentioned in TRM document). If you select a value for which GPIO pins doesn't exist, it'll select the default BOOT PINs. We'll correct the document accordingly.

    Let me know if you have further questions on this.

    Regards,

    Vivek Singh

  • Hi Vivek,

    Sorry about the delay on this.

    Looking at the manual I see that leaving OTP_BOOTPIN0 and OTPBOOTPIN1 as 0x00 leaves the boot pins as the default.

    So putting Z1-BOOTCTRL to 0000845A should do what I expect.

    Also could you explain the difference between Z1-BOOTCTRL and Z2-BOOTCTRL. From the manual it seems that Z1 is evaluated before Z2 and this is the only difference. Therefore can I test with Z2 and if it doesn't work try again with Z1?

    Thanks and regards,

    Adam
  • Hi Adam,

    Yes, you could program Z2-BOOTCTRL first and then program Z1-BOOTCTRL, if any change needed.

    Regards,

    Vivek Singh

  • Hi Vivek,

    Finally did this and it works fine with 0x0000845A in Z2-BOOTCTRL.

    Thanks for your help.

    Kind regards,

    Adam