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.

TMDS64GPEVM: Change board's bootmode via JTAG Cable.

Part Number: TMDS64GPEVM

Is it possible to change the bootmode via JTAG cable?

I just want to plug JTAG cable and change the board's bootmode without physical intervention to the board (ie: I dont want to change bootmode switches: https://dev.ti.com/tirex/content/tirex-product-tree/am64x-devtools/docs/images/am64x_gp_evm_sdcard_boot_mode2.jpg)

  • Hi Muhammed, yes this is possible.  It's a little cumbersome, but i have gotten the following procedure to work on our EVMs

    1. Add the GEL function below to the bottom of AM64_common\AM64_common.gel
    2. Launch the target configuration for the board.
    3. Connect to MAIN_Cortex_R5_1_0
    4. Load GEL file for the board (eg, AM64_DDRSS\AM64x_SK_EVM.gel)
    5. Run Scripts->Lock-Unlock->ResetInNoBootMode

    You should see the output below.  The errors are normal

     MAIN_Cortex_R5_1_0: GEL Output: Run this script from R5_1_0 core

    MAIN_Cortex_R5_1_0: GEL Output: base = 0x43000000

    MAIN_Cortex_R5_1_0: GEL Output: offset = 0x00000030

    MAIN_Cortex_R5_1_0: GEL Output: partition = 0x00000000

    MAIN_Cortex_R5_1_0: GEL Output: addr: 0x43001008 = 0x68EF3490

    MAIN_Cortex_R5_1_0: GEL Output: addr: 0x4300100C = 0xD172BC5A

    MAIN_Cortex_R5_1_0: GEL Output: CTRLMMR Partition successfully unlocked!

    MAIN_Cortex_R5_1_0: GEL Output: addr: 0x43000030 = 0x000000FB

    MAIN_Cortex_R5_1_0: GEL Output: Changing bootmode to NoBoot

    MAIN_Cortex_R5_1_0: GEL Output: base = 0x04500000

    MAIN_Cortex_R5_1_0: GEL Output: offset = 0x00018170

    MAIN_Cortex_R5_1_0: GEL Output: partition = 0x00000006

    MAIN_Cortex_R5_1_0: GEL Output: addr: 0x04519008 = 0x68EF3490

    MAIN_Cortex_R5_1_0: GEL Output: addr: 0x0451900C = 0xD172BC5A

    MAIN_Cortex_R5_1_0: GEL Output: CTRLMMR Partition successfully unlocked!

    MAIN_Cortex_R5_1_0: GEL Output: Performing warm reset...

    MAIN_Cortex_R5_1_0: GEL Output: Ignore errors beyond this point...

    MAIN_Cortex_R5_1_0: Trouble Writing Memory Block at 0x4518170 on Page 0 of Length 0x4: (Error -1205 @ 0x4518174) Device memory bus has an error and may be hung. Verify that the memory address is in valid memory. If error persists, confirm configuration, power-cycle board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 9.6.0.00172)

    ResetInNoBootMode() cannot be evaluated.

    Target failed to write 0x04518170

           at *(p_mmr)=mmr_value [AM64_common.gel:117]

           at Write_MMR(0x04518170, ((Read_MMR(0x04518170)&~(0xF00))|0x600)) [AM64_common.gel:545]

           at ResetInNoBootMode()

    6.Disconnect from R5_1_0

    7.From here, you should be able to run the GELs as usual (ie, connect to DMSC to configure PSC/PLL, then connect to R5 or A53 to initialize DDR)

     

    hotmenu ResetInNoBootMode()

    {

        GEL_TextOut("Run this script from R5_1_0 core\n");

        CTRL_Unlock(0x43000030);

        Write_MMR(0x43000030,0xFB);

        GEL_TextOut("Changing bootmode to NoBoot\n");

        CTRL_Unlock(0x04518170);

        GEL_TextOut("Performing warm reset...\n");

        GEL_TextOut("Ignore errors beyond this point...\n");

        Write_MMR(0x04518170,(Read_MMR(0x04518170) & ~0xF00) | 0x600); //CTRLMMR_MCU_RST_CTRL[11:8] = 0x6 for MCU warm reset

    }

     Regards,

    James

  • Thank you.

    Let me to try it.