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.

AM2634: XAM2634BOLFHMZCZ

Part Number: AM2634
Other Parts Discussed in Thread: TMDSCNCD263

Hello all,

We have an issue with the XAM2634B controller. We can not program it either via JTAG or via UART.

JTAG verification gives a success state but during connection to the core throws an error. (see gel files output below)

In UART mode the controller resets periodically.

 

We made a signal level comparison with the TI dev board: TMDSCNCD263 / PROC110E1(001)

Power supplies OK, no glitch (5V, 3v3,1v2,1v8 Pll)

Status of BOOT pins/ Buffer enable signal: OK (verified by oscilloscope and JTAG read back)

Any idea what can cause this issue and what we need to measure or change in CCS to move forward?

 

Controller's marking on TI dev board: XAM2634B / OLFHMZCZQ / 21ACLSW / G1 / 548 / ZCZ

Controller's marking on User's Board: XAM2634B / OLFHMZCZ   / 23CR7PW / G1 / 548 / ZCZ

 

Thank you very much.

Zoltan

Cortex_R5_0: GEL Output: Loading Gel Files on R5F0 
Cortex_R5_0: GEL Output: Gel files loading on R5F0 Complete
Cortex_R5_0: GEL Output: ***OnTargetConnect() Launched***

Cortex_R5_0: GEL Output: AM263x Initialization Scripts Launched. 
Please Wait...


Cortex_R5_0: GEL Output: AM263x_Cryst_Clock_Loss_Status() Launched
Cortex_R5_0: GEL Output: Crystal Clock present 
Cortex_R5_0: GEL Output: AM263x_SOP_Mode() Launched
Cortex_R5_0: GEL Output: SOP MODE = 0x0000000B    
Cortex_R5_0: GEL Output: 
 Dev boot mode
Cortex_R5_0: GEL Output: AM263x_Read_Device_Type() Launched
Cortex_R5_0: GEL Output: EFuse Device Type Value = 0x000000AA    
Cortex_R5_0: GEL Output: AM263x_Check_supported_mode() Launched
Cortex_R5_0: GEL Output: 
 efuse1=0x01000000  
Cortex_R5_0: GEL Output: 
 The Device supports both LockStep & Dual Core mode 
Cortex_R5_0: GEL Output: 
 mode = 0 
Cortex_R5_0: GEL Output: MSS_CTRL Control Registers Unlocked
Cortex_R5_0: GEL Output: MSS_TOP_RCM Control Registers Unlocked
Cortex_R5_0: GEL Output: MSS_RCM Control Registers Unlocked
Cortex_R5_0: GEL Output: MSS_IOMUX Control Registers Unlocked
Cortex_R5_0: GEL Output: TOP_CTRL Control Registers Unlocked
Cortex_R5_0: GEL Output: 

***R5FSS0 Reset for Lockstep ***
Cortex_R5_0: GEL Output: 

*** R5FSS1 Reset for Lockstep ***
Cortex_R5_0: GEL Output: R5F ROM Eclipse
Cortex_R5_0: GEL Output: R5FSS0_0 Released
Cortex_R5_0: GEL Output: R5FSS0_1 Released
Cortex_R5_0: GEL Output: R5FSS1_0 Released
Cortex_R5_0: GEL Output: R5FSS1_1 Released
Cortex_R5_0: GEL Output: 

 All R5F Cores Released for program load
Cortex_R5_0: GEL Output: L2 Mem Init Complete
Cortex_R5_0: GEL Output: MailBox Mem Init Complete
Cortex_R5_0: GEL Output: *********** R5FSS0/1 Lockstep mode Configured********
Cortex_R5_0: GEL Output: CORE PLL Configuration Complete 
Cortex_R5_0: GEL Output: PER PLL Configuration Complete
Cortex_R5_0: GEL Output: SYS_CLK DIVBY2 
Cortex_R5_0: Trouble Writing Memory Block at 0x53200500 on Page 0 of Length 0x4: (Error -1170 @ 0x53200504) Unable to access the DAP. Reset the device, and retry the operation. If error persists, confirm configuration, power-cycle the board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 9.11.0.00128) 
Cortex_R5_0: GEL: Error while executing OnTargetConnect(): Target failed to write 0x53200500
	 at *(p_mmr)=mmr_value [AM263_common.gel:287]
	 at Write_MMR((0x53200000U+0x00000500U), src_sel_val) [AM263_PLL.gel:284]
	 at Program_R5F_SYS_CLK_SRC() [AM263x.gel:206]
	 at Configure_Plls_R5F_400_SYS_200_Clocks() [AM263x.gel:124]
	 at OnTargetConnect()
Cortex_R5_0: GEL Output: ***OnTargetConnect() Launched***

Cortex_R5_0: GEL Output: AM263x Initialization Scripts Launched. 
Please Wait...


Cortex_R5_0: GEL Output: AM263x_Cryst_Clock_Loss_Status() Launched
Cortex_R5_0: GEL Output: Crystal Clock present 
Cortex_R5_0: GEL Output: AM263x_SOP_Mode() Launched
Cortex_R5_0: GEL Output: SOP MODE = 0x0000000B    
Cortex_R5_0: GEL Output: 
 Dev boot mode
Cortex_R5_0: GEL Output: AM263x_Read_Device_Type() Launched
Cortex_R5_0: GEL Output: EFuse Device Type Value = 0x000000AA    
Cortex_R5_0: GEL Output: AM263x_Check_supported_mode() Launched
Cortex_R5_0: GEL Output: 
 efuse1=0x01000000  
Cortex_R5_0: GEL Output: 
 The Device supports both LockStep & Dual Core mode 
Cortex_R5_0: GEL Output: 
 mode = 0 
Cortex_R5_0: GEL Output: MSS_CTRL Control Registers Unlocked
Cortex_R5_0: GEL Output: MSS_TOP_RCM Control Registers Unlocked
Cortex_R5_0: GEL Output: MSS_RCM Control Registers Unlocked
Cortex_R5_0: GEL Output: MSS_IOMUX Control Registers Unlocked
Cortex_R5_0: GEL Output: TOP_CTRL Control Registers Unlocked
Cortex_R5_0: GEL Output: 

***R5FSS0 Reset for Lockstep ***
Cortex_R5_0: GEL Output: 

*** R5FSS1 Reset for Lockstep ***
Cortex_R5_0: GEL Output: R5F ROM Eclipse
Cortex_R5_0: GEL Output: R5FSS0_0 Released
Cortex_R5_0: GEL Output: R5FSS0_1 Released
Cortex_R5_0: GEL Output: R5FSS1_0 Released
Cortex_R5_0: GEL Output: R5FSS1_1 Released
Cortex_R5_0: GEL Output: 

 All R5F Cores Released for program load
Cortex_R5_0: GEL Output: L2 Mem Init Complete
Cortex_R5_0: GEL Output: MailBox Mem Init Complete
Cortex_R5_0: GEL Output: *********** R5FSS0/1 Lockstep mode Configured********
Cortex_R5_0: GEL Output: CORE PLL Configuration Complete 
Cortex_R5_0: GEL Output: PER PLL Configuration Complete
Cortex_R5_0: GEL Output: SYS_CLK DIVBY2 
Cortex_R5_0: GEL Output: DPLL_CORE_HSDIV0_CLKOUT0 selected as CLK source for R5FSS & SYS CLKs 
Cortex_R5_0: GEL Output: 
 CLK Programmed R5F=400MHz and SYS_CLK=200MHz 
Cortex_R5_0: GEL Output: 

 *** Enabling Peripheral Clocks *** 
Cortex_R5_0: GEL Output: Enabling RTI[0:3] Clocks 
Cortex_R5_0: GEL Output: Enabling RTI_WDT[0:3] Clocks 
Cortex_R5_0: GEL Output: Enabling UART[0:5]/LIN[0:5] Clocks 
Cortex_R5_0: GEL Output: Enabling QSPI Clocks 
Cortex_R5_0: GEL Output: Enabling I2C Clocks 
Cortex_R5_0: GEL Output: Enabling TRACE Clocks 
Cortex_R5_0: GEL Output: Enabling MCAN[0:3] Clocks 
Cortex_R5_0: GEL Output: Enabling GPMC Clocks 
Cortex_R5_0: GEL Output: Enabling ELM Clocks 
Cortex_R5_0: GEL Output: Enabling MMCSD Clocks 
Cortex_R5_0: GEL Output: Enabling MCSPI[0:4] Clocks 
Cortex_R5_0: GEL Output: Enabling CONTROLSS Clocks 
Cortex_R5_0: GEL Output: Enabling CPTS Clocks 
Cortex_R5_0: GEL Output: Enabling RGMI[5,50,250] Clocks 
Cortex_R5_0: GEL Output: Enabling XTAL_TEMPSENSE_32K Clocks 
Cortex_R5_0: GEL Output: Enabling XTAL_MMC_32K Clocks 
Cortex_R5_0: GEL Output: 

 ***All IP Clocks are Enabled*** 

[Start]

Execute the command:

%ccs_base%/common/uscif/dbgjtag -f %boarddatafile% -rv -o -S integrity

[Result]


-----[Print the board config pathname(s)]------------------------------------

C:\Users\RNDEEN~1\AppData\Local\TEXASI~1\
    CCS\ccs1220\0\0\BrdDat\testBoard.dat

-----[Print the reset-command software log-file]-----------------------------

This utility has selected a 100/110/510 class product.
This utility will load the adapter 'jioxds110.dll'.
The library build date was 'Mar 10 2023'.
The library build time was '17:27:27'.
The library package version is '9.11.0.00128'.
The library component version is '35.35.0.0'.
The controller does not use a programmable FPGA.
The controller has a version number of '5' (0x00000005).
The controller has an insertion length of '0' (0x00000000).
This utility will attempt to reset the controller.
This utility has successfully reset the controller.

-----[Print the reset-command hardware log-file]-----------------------------

The scan-path will be reset by toggling the JTAG TRST signal.
The controller is the XDS110 with USB interface.
The link from controller to target is direct (without cable).
The software is configured for XDS110 features.
The controller cannot monitor the value on the EMU[0] pin.
The controller cannot monitor the value on the EMU[1] pin.
The controller cannot control the timing on output pins.
The controller cannot control the timing on input pins.
The scan-path link-delay has been set to exactly '0' (0x0000).

-----[Perform the Integrity scan-test on the JTAG IR]------------------------

This test will use blocks of 64 32-bit words.
This test will be applied just once.

Do a test using 0xFFFFFFFF.
Scan tests: 1, skipped: 0, failed: 0
Do a test using 0x00000000.
Scan tests: 2, skipped: 0, failed: 0
Do a test using 0xFE03E0E2.
Scan tests: 3, skipped: 0, failed: 0
Do a test using 0x01FC1F1D.
Scan tests: 4, skipped: 0, failed: 0
Do a test using 0x5533CCAA.
Scan tests: 5, skipped: 0, failed: 0
Do a test using 0xAACC3355.
Scan tests: 6, skipped: 0, failed: 0
All of the values were scanned correctly.

The JTAG IR Integrity scan-test has succeeded.

-----[Perform the Integrity scan-test on the JTAG DR]------------------------

This test will use blocks of 64 32-bit words.
This test will be applied just once.

Do a test using 0xFFFFFFFF.
Scan tests: 1, skipped: 0, failed: 0
Do a test using 0x00000000.
Scan tests: 2, skipped: 0, failed: 0
Do a test using 0xFE03E0E2.
Scan tests: 3, skipped: 0, failed: 0
Do a test using 0x01FC1F1D.
Scan tests: 4, skipped: 0, failed: 0
Do a test using 0x5533CCAA.
Scan tests: 5, skipped: 0, failed: 0
Do a test using 0xAACC3355.
Scan tests: 6, skipped: 0, failed: 0
All of the values were scanned correctly.

The JTAG DR Integrity scan-test has succeeded.

[End]

  • Hi ,

    What is the boot mode of the device ? Are you sure, you are in DEV-BOOT-MODE ?

    Best Regards,
    Aakash

  • Hello Aakash,

    Thank you for the reply. Yes, I am sure it is in Dev-Boot Mode. See the GEL file output in Row 12: Cortex_R5_0: GEL Output: SOP MODE = 0x0000000B  

  • Hi ,

    Would it be okay for you to try another script, just to reduce the complexity of the problem ?

    /*
     * Copyright (c) 2022-23 Texas Instruments Incorporated
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    
    /*
     Description: Script used to load SBL executables to R5 Core-0 on the SOC.
    
     Usage:
    
    1. Modify "sdkPath" (search for EDIT THIS) to point to the absolute path of the SDK.
        - On windows make sure to use '/' or '\\' as path separator
    
    2. Launch AM263x target connection in CCS, however DO NOT connect to any CPUs.
    
    3. From CCS Scripting console do (CCS Tool Bar > View > Scripting Console)
        js:> loadJSFile "<path/to/sdk>/tools/ccs_load/am263x/load_sbl.js"
    
    4. After successful execution you should see a log like below
    
      On the CCS scripting console in CCS,
    
        js:> LoadJSFile "/home/abishekss/workarea/mcupsdk/mcu_plus_sdk/tools/ccs_load/am263x/load_sbl.js"
        [Cortex_R5_0] L2 Memory Init Done ...
        Going to issue reset: 'System Reset' (This is a System-Level Warm Reset) ...
        [Cortex_R5_0] Loading SBL Init Code ...
        [Cortex_R5_0] Copying data to R5F_VECS ...
        [Cortex_R5_0] Triggering ROM Eclipse ...
        [Cortex_R5_0] Loading SBL ...
        [Cortex_R5_0] Running SBL ...
        Happy Debugging!!
    
        js:>
    
    5. If any of the logs in step 4 show "fail" or "error" messages then
       check your EVM, CCS, SDK setup and try again.
    */
    
    
    function updateScriptVars() {
        //Open a debug session
        dsMCU1_0 = debugServer.openSession(".*Cortex_R5_0*");
    }
    
    function disconnectTargets() {
        updateScriptVars();
        // Reset the R5F to be in clean state.
        dsMCU1_0.target.reset();
    }
    
    function wait(ms) {
        var start = new Date().getTime();
        var end = start;
        while (end < start + ms) {
            end = new Date().getTime();
        }
    }
    
    function connectHaltResetCpu() {
        dsMCU1_0.target.halt();
        var resetType = dsMCU1_0.target.getResetType(1);
        print("Going to issue reset: '" + resetType.getName() + "' (" + resetType.getDescription() + ") ...");
        resetType.issueReset();
    }
    
    function connectTargets() {
        /* Set timeout of 20 seconds */
        script.setScriptTimeout(10000);
        updateScriptVars();
    
        //IWrites 15 in MSS_L2_MEM_INIT
        dsMCU1_0.target.connect();
        dsMCU1_0.memory.writeWord(0, 0x50D00240, 0xF)
    
        print("[Cortex_R5_0] L2 Memory Init Done ...");
    
        // Connect the MCU R5F
        connectHaltResetCpu()
    
        print("[Cortex_R5_0] Loading SBL Init Code ... ");
        dsMCU1_0.target.halt();
        dsMCU1_0.memory.loadRaw(0, 0x70002000, sbl_bin_file, 32, false);
    
        // Copy 640 bytes data from MSRAM_VECS to R5F_VECS
        print("[Cortex_R5_0] Copying data to R5F_VECS ... ");
        data = dsMCU1_0.memory.readData(0, 0x70002000, 32, 160)
        for (i in data) {
            dsMCU1_0.memory.writeData(0, 0x00020000 + i * 4, data[i], 32)
        }
    
        print("[Cortex_R5_0] Triggering ROM Eclipse ... ");
        /* Trigger ROM eclipse */
        dsMCU1_0.memory.writeWord(0, 0x50D00080, 0x7);
    
        print("[Cortex_R5_0] Loading SBL ... ");
        dsMCU1_0.memory.loadProgram(sbl_elf_file);
        print("[Cortex_R5_0] Running SBL ... ");
        dsMCU1_0.target.runAsynch();
        /* Wait 500ms to run the bootloader */
        wait(500);
        
        // Halt the R5F
        dsMCU1_0.target.halt();
        
        /* Disable HSM Watchdog */
        dsMCU1_0.memory.writeWord(0, 0x5320882C, 0x7);
    
        return 0;
    }
    
    function doEverything() {
        var run = true;
    
        if (!File(sbl_elf_file).isFile()) {
            print("[ERROR] File " + sbl_elf_file + " not found !!!");
            run = false;
        }
    
        if (!File(sbl_bin_file).isFile()) {
            print("[ERROR] File " + sbl_bin_file + " not found !!!");
            run = false;
        }
    
        if (run == true) {
            updateScriptVars();
            var connectSuccess = connectTargets();
            if (connectSuccess == 0) {
                disconnectTargets();
                print("Happy Debugging!!");
            }
        }
        else {
            print("Please read the instructions at top of this file to make sure the paths to the SDK are set correctly !!!")
        }
    }
    
    // Import the DSS packages into our namespace to save on typing
    importPackage(Packages.com.ti.debug.engine.scripting)
    importPackage(Packages.com.ti.ccstudio.scripting.environment)
    importPackage(Packages.java.lang)
    importPackage(java.io);
    importPackage(java.lang);
    
    var ds;
    var debugServer;
    var script;
    
    // Check to see if running from within CCSv4 Scripting Console
    var withinCCS = (ds !== undefined);
    
    var sdkPath = null;
    
    if (!withinCCS) {
        // !!! EDIT THIS !!! Add absolute path to SDK in your environment variables
        // OR set this variable to the absolute path of the SDK
        sdkPath = "C:/Git/workarea/mcu_plus_sdk_4";
    }
    else {
        sdkPath = System.getenv("MCU_PLUS_SDK_AM263X_PATH");
        if (sdkPath == null) {
            // !!! EDIT THIS !!! Add absolute path to SDK in your environment variables
            // OR set this variable to the absolute path of the SDK
            sdkPath = "C:/Git/workarea/mcu_plus_sdk_4";
        }
    }
    
    // path to sbl elf
    sbl_elf_file = sdkPath + "/examples/drivers/boot/sbl_null/am263x-cc/r5fss0-0_nortos/ti-arm-clang/sbl_null.release.out";
    
    // path to sbl bin
    sbl_bin_file = sdkPath + "/examples/drivers/boot/sbl_null/am263x-cc/r5fss0-0_nortos/ti-arm-clang/sbl_null.release.bin"
    
    // !!! EDIT THIS !!! Add absolute path to the CCXML file here.
    fileCcxml = "C:/ti/AM263x.ccxml"
    
    // Create scripting environment and get debug server if running standalone
    if (!withinCCS) {
        // Import the DSS packages into our namespace to save on typing
        importPackage(Packages.com.ti.debug.engine.scripting);
        importPackage(Packages.com.ti.ccstudio.scripting.environment);
        importPackage(Packages.java.lang);
    
        // Create our scripting environment object - which is the main entry point into any script and
        // the factory for creating other Scriptable ervers and Sessions
        script = ScriptingEnvironment.instance();
    
        // Get the Debug Server and start a Debug Session
        debugServer = script.getServer("DebugServer.1");
    
        // Check if the CCXML file exists.
        if (!File(fileCcxml).isFile()) {
            print("[ERROR] File " + fileCcxml + " not found !!!");
            print("Seems like the script is not run from within CCS. Please edit the load_sbl.js script to add a path to your CCXML configuration file in this case.")
        }
        else {
            debugServer.setConfig(fileCcxml);
            doEverything();
        }
    }
    else // otherwise leverage existing scripting environment and debug server
    {
        debugServer = ds;
        script = env;
        doEverything();
    }
    

    Load this script in the scripting console, update the MCU_PLUS_SDK path, try loading SBL NULL example and make sure no GEL files are loaded from earlier.

    Best Regards,
    Aakash

  • Hello Aakash,

    Thank you for your feedback. The test failed with the following output.

  • Hello Aakash,

    We could program finally the controller today by commenting out the following lines in the original GEL files.

    Would you please explain what this means from an operation frequency point of view? Can not the controller be set for a maximum Frequency 400MHz?

    Thank you very much.

    Have a great Day.

    Zoltan

  • Hi Zoltan,

    It seems like your device is still working at 25MHz despite the CORE_PLL configured at 400MHz. The switch has not gone through for the same.

    The GEL Files handles the entire flow which is done via SBL-NULL which is the same script provided by me.

    Best Regards,
    Aakash

  • Hello Aakash,

    Can you give any direction or clue on what shall we try and measure to get closer to the reason behind this behavior?

    Shall we direct the 400MHz to the clock output to measure if the PLL works at all?

    Or read out the PLL status register?

    Or read out some other status register?

    Thank you very much.

    Zoltan

  • Hi ,

    This failure looks very unlikely. Can we have a short debug call for the same ?

    Best Regards,
    Aakash

  • Hello All,

    For your information. The root cause has been found. It was caused by the non-proper 1v2 layout on our board. ~12ms after the reset went from low to high there was a ~ 60mV drop in 1V2 supply for ~ 32us and then the reset kicked in. Our assumption is that the internal voltage monitor generated a reset. Based on one of the design guide the max allowed voltage drop is 30mV. On the development board, this dip is ~ 12mV. I could fix it by adding tonnes of decoupling capacitors to the 1v2 rail. But the long-term solution is a new layout which more aligned with the manufacturer's proposal.

    Have a great day.

    Zoltan