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.

TMS320F28035: BOOT MODES

Part Number: TMS320F28035

Hi, 

I am trying to figure out how to set boot modes and the goal is to load the code and be able to debug as well as run in standalone.  GPIO 34 and 37 are held high in my PCB design WITH TRSTn=0 default values without JTAG connected.
From a little digging I figured that GPIO 34 and 37 combined with TRSTn PIN is used to evaluate boot modes. 

Scenario 1 : when JTAG probe is connected, TRSTn is 1 and driven high. 

question 1 : Each document has different explanation for this . The user manual says that EMU_KEY needs to loaded with 0x55AA and EMUBMODE with  appropriate values. But the reference  manual says that when JTAG is connected then EMU_KEY AND EMU_BMODE are automatically populated. Please explain what is right here and also with JTAG connected does the CPU boot from flash ? 

question 2 : for standalone boot, the GPIO pins are considered for setting the boot mode. In my case GPIO34 and GPIO 37 are =1 .  When the boot ROM scans for GETMODE() then it checks for OTP_KEY. 
I do not set the OTP key to any specific value and yet the system boots from flash. 
How or where is this key set to a default invalid state that the CPU boots from flash? 

Should I set EMU_KEY , EMUBMODE , OTP_KEY and OTP_BMODE in the C code ?  or do these hold default values ? 

Any help will be appreciated. 

Thanks

  • Ashrith,

    I would use the Device TRM as the correct/complete reference in this case

    A1)When the JTAG Probe is connected, and you reset the device(using Reset CPU Inside CCS), the Boot ROM code will detect this and use the EMU_KEY and EMU_Boot to determine the boot mode.  This is useful to debug different boot modes without needing to change the Boot Mode pins

    A2)When booting in standalone/no JTAG connected; this is a two step process:

    1)GPIO34/GPIO37 are evaluated 1st; there are 4 combinations directly from this; parallel IO/SCI/Wait/GetMode

    2)If the pins are configured for GetMode; then the BROM will then evaluate the OTPKEY and OTP_BMODE to determine the boot mode.  The default on a new device from TI is to boot from flash(as well as if the OTPKEY/MODE are invalid).

    Best,

    Matthew

  • -> When the JTAG Probe is connected, and you reset the device(using Reset CPU Inside CCS), the Boot ROM code will detect this and use the EMU_KEY and EMU_Boot to determine the boot mode.  This is useful to debug different boot modes without needing to change the Boot Mode pins

    q:  Could you please let me know where the RESET CPU in CCS is, or is this process happening by default when the JTAG is connected. 
          From the reference manual , it unclear as to how the EMU BOOT is populated at startup. 

    Thanks

  • Ashrith,

    The Rest inside of CCS is under Run->Reset in the top toolbar.

    The EMU_KEY and EMU_Boot are at locations 0x0D00 and 0x0D01 respectively.  This is the PIE Vector RAM, but the important take away here is that it is RAM.

    For debug when the emulator is connected you would modify these locations manually (through a watch window expression or memory window) and the use the CCS Reset and run to emulate what this boot flow would do for debugging.

    In terms of the BROM these are defined here:

    #define OTP_KEY              0x3D7BFE         
    #define OTP_BMODE             0x3D7BFF 

    Best,
    Matthew

  • Mathew, 

    Thank you for your quick response.

    When the JTAG is connected, the device detects TRST==1 , what exact emulation mode will it enter? 
    Currently I do not modify/reset any memory locations manually via ccs. 
    I am trying to understand what mode under emulation boot is specific for debugging purpose and How this mode is selected whenever Jtag is connected with CCS. 

    Thank you,

    ASHRITH

  • Ashrith,

    The EMU_BOOT will contain the boot mode that was on the boot mode pins before the emulator was connected.  For example if you have selected "wait boot" via the boot pins before powering up and then connect the emulator and perform a CPU Reset the boot ROM will still select wait boot.

    The intention here would be after you have emulation control, and wish to debug a standard boot mode, you would over-write the EMU_BOOT locations via CCS memory window/variable so that you can then debug the boot mode you would use in standalone mode.

    Best,

    Matthew

  • Thank you for the explanation! 

    Regards,

    ASHRITH