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.

AM6442: PinMux setting by hand

Part Number: AM6442
Other Parts Discussed in Thread: SYSCONFIG,

Dear TI,

I would like to change PinMux register setting in CCS (v10.2.0.00009) by hand in Memory Browser window after application start on a custom board.

PADMMR_LOCKx_KICKx registers are 0. And I can not overwrite any pin mux register. Why? There was no such limitation on AM65xx IDK.

Even I had no success with such code:

POKE(0xf1008, 0x68EF3490U); // PADMMR_LOCK0_KICK0
POKE(0xf100c, 0xD172BC5AU); // PADMMR_LOCK0_KICK1
POKE(0xf4274, 0x00050002);  // PADMMR_PADCONFIG157

I would like to test some settings before introduce them "officially" by sysconfig tool and rebuilding of PDK.

Any solutions are welcome

regards,

Kalman

  • Hi Kalman,

    I would like to change PinMux register setting in CCS (v10.2.0.00009) by hand in Memory Browser window after application start on a custom board.

    PADMMR_LOCKx_KICKx registers are 0. And I can not overwrite any pin mux register. Why? There was no such limitation on AM65xx IDK.

    It sounds like the target may not be configured properly if you are unable to change the register value in the various debug views. Just a guess as I am not a device expert. I will bring this thread to the attention of the device experts for further suggestions.

    Thanks

    ki

  • Hi Kalman, based on the code you show, it looks like you are writing to the correct lock registers to unlock the PADCONFIG register.  Be sure to check for unlock using the UNLOCKED bit in PADMMR_LOCK0_KICK0 register

    Also, which processor are you running this GEL script from?  You may need to adjust the register address due to RAT if, for example, running from DMSC.

    Regards,

    James

  • Hi James,

    this code piece is running on an R5_0_0 core of AM6442.

    I do not think on RAT, because I see pinmux registers at the expected addresses in the memory browser.

    See the lockregisters, LSB of PADMMR_LOCK0_KICK0 register @ 0xf1008 is set.

    And see no result of store operation

    Can the Board_init function prevent any further manipulation of pinmux registers?

    regards

    Kalman

  • Kalman, i don't see any issue from a hardware perspective, it seems that you are performing the right actions to change that register.  There may be some other firewalls in software that i'm not aware of.  Let me try to find someone more knowledgeable on the software side.

    James

  • Kalman,

    Once the PAD configuration registers are unlocked (via writes to PADMMR_LOCK0_KICK0/1 & PADMMR_LOCK1_KICK0/1), you should be to write the PAD configuration registers in the associated partition.

    The EVM GEL scripts contain a hotmenu script which unlocks the PAD configuration MMRs. In CCS: Scripts->Lock-Unlock->CTRL_Unlock_All. 

    The PAD configuration registers can be unlocked by Board_init() using the BOARD_INIT_UNLOCK_MMR bit-mask argument.

    Have you experimented with these?

    Regards,
    Frank

  • Hi Frank,

    the BOARD_INIT_UNLOCK_MMR seemed to be promising, but did not do the trick. Script worked, just I had to run it from M3 core. But no more successful Board_init later.

    This is the script:

    c:\ti\ccs1011\ccs\ccs_base\emulation\gel\AM64x\AM64_common\AM64_lock_unlock.gel

    Kalman

  • Hi Kalman,

    Is this still an issue for you? I'm unable to reproduce this problem on an AM64x EVM.

    After launch.js completes, I load R5F_0_0 with a test application which calls Board_init() with BOARD_INIT_UNLOCK_MMR.

    This is an excerpt from the first part of Board_init()

    Board_STATUS Board_init(Board_initCfg cfg)
    {    
        Board_STATUS ret = BOARD_SOK;
    
        ret = Board_sysInit();
        if (ret != BOARD_SOK)
            return ret;
    
        if (cfg & BOARD_INIT_UNLOCK_MMR)
            ret = Board_unlockMMR();
        if (ret != BOARD_SOK)
            return ret;
    

    This is a screen capture of CCS just before Board_unlockMMR() is called:

    This is a screen capture of CCS after Board_unlockMMR() is called:

    Regards,
    Frank

  • Hello Frank,

    thanks for info.

    I got success with CCS unlock script recently.

    Regards,

    Kalman