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.

TMS320F280049C: Configure for Boot from Flash without using GPIO pins

Part Number: TMS320F280049C

Hi!

Application on my own PCB doesn't run after power turned off and then turned. It works only in debug session until power is turned off. I tried configure boot mode on "Flash boot (0x03)" by setting

Z1_BOOTPIN_CONFIG.BOOTPIN_CONIFG = 0x5AFFFFFF;

Z1_BOOTDEF_HIGH.BOOTDEF_HIGH = 0x00;

Z1_BOOTDEF_LOW.BOOTDEF_LOW = 0x03;

but it didn't work. I whant boot from flash without counfigure GPIO pins.

  • your configurations looks to be correct.

    Z1_BOOTPIN_CONFIG.BOOTPIN_CONIFG = 0x5AFFFFFF;

    Z1_BOOTDEF_HIGH.BOOTDEF_HIGH = 0x00;

    Z1_BOOTDEF_LOW.BOOTDEF_LOW = 0x03;

    Can you check and confirm that these values are written to corresponding OTP address.

    Please share the values you see at below addresses,

  • Thank you for your reply,

    Here they are

    I found the values through "Memory Browser" and i couldn't find these registers among "Registers" or structures in program(like this DcsmBank0Z1Regs.Z1_BOOTPIN_CONFIG = 0x5AFFFFFF;). Later i saw that  all of DcsmBank0Z1Regs are only for read. I should create own pointers to access these registers (GPREGx/Z1-GPREGx, BOOTCTRL/Z1-BOOTCTRL, BOOTPIN_CONFIG and BOOTDEF)?

  • This means your configurations are not being written to OTP locations. I am not sure how you programmed OTP. 

    But below procedure will help:

    Assign a global variable with required value and map the variable to address corresponding to Z1-BOOTCTRL OTP. You need to update linker command file accordingly. Then you can load the program via CCS. the CCS flash plugin will take care to write to corresponding OTP as instructed in linker command file.

  • Which one of these registers(Z1-BOOTCTRL or BOOTCTRL OTP)? And what value write to that register(0x00000003 or 0x5AFFFFFF)? I'm confused! So many aliases for the same register name!
    Since the registers needed can be write only one time, i tried to write EMU-BOOTPIN-CONFIG, EMU-BOOTDEF-LOW and EMU-BOOTDEF-HIGH registers(picture below). It's not worked.

  • values to be written,

    BOOTPIN_CONIFG = 0x5AFFFFFF;

    BOOTDEF_HIGH = 0x00;

    BOOTDEF_LOW = 0x03;

    Table 4-12 (emulation section) should be used in emulation mode only (i.e. when debugger is connected). once you power cycle the board these values will not be retained.

    Table 4-12 (standalone section) will be automatically loaded from OTP values. you need not do anything here.

    You need to write only to OTP addresses provided in table 4-13.

    hope this clarifies.

  • Ok, but one more question (because you are said above about Z1-BOOTCTRL OTP):

    BOOTDEF_LOW is BOOTDEF_CONFIG[32:47] or BOOTDEF_CONFIG[0:15] from table 4-13?
    and
    BOOTDEF_HIGH is BOOTDEF_CONFIG[48:63] or BOOTDEF_CONFIG[16:31] from table 4-13?

  • BOOTDEF is 64 bit value split as mentioned below,

    BOOTDEF_LOW is 32 bit value - BOOTDEF_CONFIG[0:15] + BOOTDEF_CONFIG[16:31]

    BOOTDEF_HIGH is 32 bit value - BOOTDEF_CONFIG[32:47] + BOOTDEF_CONFIG[48:63]