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.

CCS/TMS570LS3137: Using CCS7 Debug with a multi-device chain

Part Number: TMS570LS3137
Other Parts Discussed in Thread: UNIFLASH, HALCOGEN

Tool/software: Code Composer Studio

Hello, I've been using CCS Flash with an XDS100V2 programmer to successfully programme 5 off LS3137's in a chain: the first, #1 has its own code, then #2 - #5 have the same code.

Wanting to use the CCS7 debug feature on #1 I imported the ccxml configuration file to CCS7. However, whichever of the parts I select in CCS7 to debug (first one shown in clip below), it appears that #1 is never programmed. Is my config file wrong?

Thanks

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configurations XML_version="1.2" id="configurations_0">
    <configuration XML_version="1.2" id="configuration_0">
        <instance XML_version="1.2" desc="Texas Instruments XDS100v2 USB Emulator" href="connections/TIXDS100v2_Connection.xml" id="Texas Instruments XDS100v2 USB Emulator" xml="TIXDS100v2_Connection.xml" xmlpath="connections"/>
        <connection XML_version="1.2" id="Texas Instruments XDS100v2 USB Emulator">
            <instance XML_version="1.2" href="drivers/tixds100v2icepick_c.xml" id="drivers" xml="tixds100v2icepick_c.xml" xmlpath="drivers"/>
            <instance XML_version="1.2" href="drivers/tixds100v2cs_dap.xml" id="drivers" xml="tixds100v2cs_dap.xml" xmlpath="drivers"/>
            <instance XML_version="1.2" href="drivers/tixds100v2cortexR.xml" id="drivers" xml="tixds100v2cortexR.xml" xmlpath="drivers"/>
            <platform XML_version="1.2" id="platform_0">
<instance XML_version="1.2" desc="TMS570LS3137_1" href="devices/tms570ls3137.xml" id="TMS570LS3137_1" xml="tms570ls3137.xml" xmlpath="devices"/>
                <device HW_revision="1" XML_version="1.2" description="TMS570LS3137 QFP/BGA, 3MB Flash, 256kB RAM, 2ch FlexRay, 10/100M Ethernet" id="TMS570LS3137_1" partnum="TMS570LS3137">
                    <router HW_revision="1.0" XML_version="1.2" desc="IcePick_1" description="ICEPick_C Router" id="IcePick_C_0" isa="ICEPICK_C">
                        <subpath desc="Port16_1" id="Port16">
                            <router HW_revision="" XML_version="1.2" desc="Dap_1" description="CS_DAP Router" id="CS_DAP_0" isa="CS_DAP">
                                <subpath desc="PortR4_1" id="PortR4">
                                    <cpu HW_revision="" XML_version="1.2" desc="CortexR4_1" description="Cortex_R4 CPU" id="Cortex_R4_0" isa="Cortex_R4"/>
                                </subpath>
                            </router>
                        </subpath>
                        <subpath desc="Port17_1" id="Port17"/>
                    </router>
                </device>
                <instance XML_version="1.2" desc="TMS570LS3137_2" href="devices/tms570ls3137.xml" id="TMS570LS3137_2" xml="tms570ls3137.xml" xmlpath="devices"/>
                <device HW_revision="1" XML_version="1.2" description="TMS570LS3137 QFP/BGA, 3MB Flash, 256kB RAM, 2ch FlexRay, 10/100M Ethernet" id="TMS570LS3137_2" partnum="TMS570LS3137">
                    <router HW_revision="1.0" XML_version="1.2" desc="IcePick_2" description="ICEPick_C Router" id="IcePick_C_0" isa="ICEPICK_C">
                        <subpath desc="Port16_2" id="Port16">
                            <router HW_revision="" XML_version="1.2" desc="Dap_2" description="CS_DAP Router" id="CS_DAP_0" isa="CS_DAP">
                                <subpath desc="PortR4_2" id="PortR4">
                                    <cpu HW_revision="" XML_version="1.2" desc="CortexR4_2" description="Cortex_R4 CPU" id="Cortex_R4_0" isa="Cortex_R4"/>
                                </subpath>
                            </router>
                        </subpath>
                        <subpath desc="Port17_2" id="Port17"/>
                    </router>
                </device>
                <instance XML_version="1.2" desc="TMS570LS3137_3" href="devices/tms570ls3137.xml" id="TMS570LS3137_3" xml="tms570ls3137.xml" xmlpath="devices"/>
                <device HW_revision="1" XML_version="1.2" description="TMS570LS3137 QFP/BGA, 3MB Flash, 256kB RAM, 2ch FlexRay, 10/100M Ethernet" id="TMS570LS3137_3" partnum="TMS570LS3137">
                    <router HW_revision="1.0" XML_version="1.2" desc="IcePick_3" description="ICEPick_C Router" id="IcePick_C_0" isa="ICEPICK_C">
                        <subpath desc="Port16_3" id="Port16">
                            <router HW_revision="" XML_version="1.2" desc="Dap_3" description="CS_DAP Router" id="CS_DAP_0" isa="CS_DAP">
                                <subpath desc="PortR4_3" id="PortR4">
                                    <cpu HW_revision="" XML_version="1.2" desc="CortexR4_3" description="Cortex_R4 CPU" id="Cortex_R4_0" isa="Cortex_R4"/>
                                </subpath>
                            </router>
                        </subpath>
                        <subpath desc="Port17_3" id="Port17"/>
                    </router>
                </device>
            <instance XML_version="1.2" desc="TMS570LS3137_0" href="devices/tms570ls3137.xml" id="TMS570LS3137_0" xml="tms570ls3137.xml" xmlpath="devices"/>
                <device HW_revision="1" XML_version="1.2" desc="TMS570LS3137_4" description="TMS570LS3137 QFP/BGA, 3MB Flash, 256kB RAM, 2ch FlexRay, 10/100M Ethernet" id="TMS570LS3137_0" partnum="TMS570LS3137">
                    <router HW_revision="1.0" XML_version="1.2" desc="IcePick_0" description="ICEPick_C Router" id="IcePick_C_0" isa="ICEPICK_C">
                        <subpath desc="Port16_0" id="Port16">
                            <router HW_revision="" XML_version="1.2" desc="Dap_0" description="CS_DAP Router" id="CS_DAP_0" isa="CS_DAP">
                                <subpath desc="PortR4_0" id="PortR4">
                                    <cpu HW_revision="" XML_version="1.2" desc="CortexR4_0" description="Cortex_R4 CPU" id="Cortex_R4_0" isa="Cortex_R4"/>
                                </subpath>
                            </router>
                        </subpath>
                        <subpath desc="Port17_0" id="Port17"/>
                    </router>
                </device>
                <instance XML_version="1.2" desc="TMS570LS3137" href="devices/tms570ls3137.xml" id="TMS570LS3137" xml="tms570ls3137.xml" xmlpath="devices"/>
                <device HW_revision="1" XML_version="1.2" desc="TMS570LS3137_5" description="TMS570LS3137 QFP/BGA, 3MB Flash, 256kB RAM, 2ch FlexRay, 10/100M Ethernet" id="TMS570LS3137" partnum="TMS570LS3137"/>
            </platform>
        </connection>
    </configuration>
</configurations>

  • Hi,

    A quick clarification: when you say " I've been using CCS Flash with an XDS100V2 programmer to successfully programme 5" you mean that CCS is able to properly flash the code in all five devices? Or are you using a different tool such as Uniflash?

    The reason of my question is that, in order for CCS to properly flash a device, it needs to properly connect to it.

    If you are programming these devices from CCS, you can enable the Full Verification option in the core that you suspect is not properly flashing the code. For details, check the section Debug PropertiesProgram/Memory Load options of the following page:

    Also, you may already be doing this, but make sure you are manually loading the code to each processor. Details can be seen in the section Launching DebuggerManual Launching of the page above.

    I loaded your .ccxml in my CCS and did not see any visible problems with it.

    Hope this helps,

    Rafael

  • Thanks. Yes, I'm using Uniflash to programme the 5 devices individually.

    But with the help of my boss (enjoyed getting his hands "dirty") we did get the CCS6 debug working, but it insists on loading two of the TMSs in the chain despite only one IcePick and its CortexR4_1 being ticked in the Debug Configurations >> Main tab. All the Dap's are ticked.

    Apart from the time wasted, the only minor concern is that there are probably IO conflicts on the un-intentionally programmed part.

    The CCS Debug document is useful, thanks, but I can only see one reference to JTAG Chains, but no actual instructions as to how to create the configuration file (a departed colleague used CCS to create the above initially).

    Regards,
    Nick
  • Nick,

    N King said:
    but it insists on loading two of the TMSs in the chain despite only one IcePick and its CortexR4_1 being ticked in the Debug Configurations >> Main tab. All the Dap's are ticked.

    The way you describe your debug environment, you are performing an automated debug launch using the Debug Configurations. Since you are having some trouble, I would instead manually launch the debugger and load each executable to each code - this way you can debug the process step-by-step. Some details are in the following links:

    https://youtu.be/tl-yal3rTqY 

    https://youtu.be/g2aaJV_DcZY 

    N King said:
    The CCS Debug document is useful, thanks, but I can only see one reference to JTAG Chains, but no actual instructions as to how to create the configuration file (a departed colleague used CCS to create the above initially).

    Despite I don't have a board as yours, the .ccxml does not seem to have any errors. 

    Regardless, you can check the steps on the page below to create a custom configuration - section 3 talks about using the device files such as the ones you are using. 

    http://processors.wiki.ti.com/index.php/Target_Configuration_-_Custom_Configurations 

    Hope this helps,

    Rafael

  • Thanks. The first you-tube appears to refer to multi-core processors, the second to multiple configs, but the wiki page is how a colleagure created the ccxml file to start with. As I commented, I have only one IcePick and its CortexR4_1 being ticked in the Debug Configurations >> Main tab. All the Dap's are ticked. However, now Debug wants to load all FIVE TMSs in the chain with the same code before allowing debug control, even though for four TMSs, they require different HalCoGen settings!
  • Nick,

    Sorry, I think I should have been clearer or perhaps I am a bit confused with the configuration of your system, that is why I mentioned to manually launch the debugger and load each device individually.

    What I suspect from this strange behaviour is that the Debug Launch may be somehow misconfigured and tied to a specific project in your workspace (that is why it is trying to load the same code in all cores).

    If my assumption is correct, I would create a new Target Configuration that is independent from a project, so you would be able to launch it without any interference from a project, and then connect to each individual Cortex R4 core and load the .out file from each project into each core (you can do this by going to menu Run --> Load --> Load Program).

    This is the method we usually do to debug these scenarios.

    Hope this helps,
    Rafael
  • Hi, I only seem to get this menu option once the device is in Debug mode. Otherwise I only get Run>Debug History, As or Configuration options.
  • Nick,

    Yes, the menu Run --> Load --> Load Program is only available in a Debug session (it does not make sense trying to load code without a target properly connected).

    The steps to manually launch the debugger should get you to the point of loading code to each core. I just created a small clip to demonstrate that process.

    Hope this helps,

    Rafael