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.

Selecting from Multiple XDS100v3 emulators on the command line

Other Parts Discussed in Thread: UNIFLASH

I am using GNU tools on Linux to program and debug CC26xx devices on smartRF06 boards. I can program a board using uniflash command line and debug it with GDB via gdb_agent_console. However, I now need to connect to two boards simultaneously.

According to various documentation I should be able to distinguish between the two XDS100s using the serial number which I can read using the xds100serial utility. However, I cannot find how to tell either uniflash or gdb_agent_console which of the two I want to connect to

uniflash

This is configured via a ccxml file. Can I specify the serial number on the command line e.g. by using -setOptions?

I have tried this and uniflash doesn't complain but it doesn't select the right pod either:

uniflash -ccxml myconfig.ccxml -setOptions "-- Enter the serial number=xxxxxx"

If this isn;t the right approach can I use two nearly identical ccxml files? - where does the serial number go in them?

gdb_agent_console

Essentially the same question for gdb_agent_console: I can set up two instances to listen on different ports easily enough but how do I tell them which emulator to connect to? is there a command line option? or a GDB monitor command? or somewhere in the boardConfig.dat file?

I am  currently starting it like this: gdb_agent_console -p xxx boardConfig.dat

  • Hi,

    The serial number differentiation between the JTAG debuggers is done on the target configuration file (.ccxml), therefore you should configure it accordingly.

    To load the code to each core, most probably you will have to find out the name of each core and pass it with the -core option. For example, to find out the core names you can launch the target configuration file in CCS and look at the names as shown in the screenshot below:

    For the GDB Agent, there is a remark at section 3.1 of the page below that mentions some guidelines on how to connect to multiple targets:

    http://processors.wiki.ti.com/index.php/XDS_GDB_Agent

    Hope this helps,

    Rafael

  • Thanks Rafael,

    I am not using CCS and while I had clues, I find it frustrating that neither the utilities, nor the config files are documented but by looking through a bunch of different configurations I managed to find something that worked so here it is for anyone else with the same question. In all cases I am using a different config file for each debug pod although they differ only in the embedded serial number.

    For Uniflash from the command line, here is my minimal ccxml file:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <configurations XML_version="1.2" id="configurations_0">
    <configuration XML_version="1.2" id="Texas Instruments XDS100v3 USB Debug Probe_0">
            <instance XML_version="1.2" desc="Texas Instruments XDS100v3 USB Debug Probe_0" href="connections/TIXDS100v3_Dot7_Connection.xml" id="Texas Instruments XDS100v3 USB Debug Probe_0" xml="TIXDS100v3_Dot7_Connection.xml" xmlpath="connections"/>
            <connection XML_version="1.2" id="Texas Instruments XDS100v3 USB Debug Probe_0">
                <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/tixds100v2cortexM.xml" id="drivers" xml="tixds100v2cortexM.xml" xmlpath="drivers"/>
                <property Type="choicelist" Value="2" id="The Converter Usage">
                    <choice Name="Generate 1149.7 2-pin advanced modes" value="enable">
                        <property Type="choicelist" Value="1" id="The Converter 1149.7 Frequency">
                            <choice Name="Overclock with user specified value" value="unused">
                                <property Type="choicelist" Value="5" id="-- Choose a value from 1.0MHz to 50.0MHz"/>
                            </choice>
                        </property>
                        <property Type="choicelist" Value="5" id="The Target Scan Format"/>
                    </choice>
                </property>
                <property Type="choicelist" Value="1" id="Emulator Selection">
                    <choice Name="Select by serial number" value="0">
                        <property Type="stringfield" Value="06EB12210F02" id="-- Enter the serial number"/>
                    </choice>
                </property>
                <platform XML_version="1.2" id="platform_0">
                    <instance XML_version="1.2" desc="CC1310F128_0" href="devices/cc1310f128.xml" id="CC1310F128_0" xml="cc1310f128.xml" xmlpath="devices"/>
                </platform>
            </connection>
        </configuration>
    </configurations>
    

    The serial number of the pod is in the "stringfield" property id="-- Enter the serial number" at line 21. I change this to the serial number of whichever pod I want to operate with.

    For gdb_agent_console which uses a config file in a very different format, it turns out it needed just one extra line and again I simply adjust the serial number:

      ...
      pod_drvr=libjioserdesusbv3.so
      pod_port=0
      pod_serial=06EB12210F02            <-- This line added
      ...

    Philip

  • Philip,

    Thanks for reporting a detailed solution for the issue at hand.

    Uniflash does not have a complete target configuration utility, therefore the difficulty you experienced to properly select a serial number. There are plans to address this, but so far nothing is confirmed. As for examples to configure a target configuration file, we mostly have the tutorials on the web but they are all based on CCS. The specifications for the underlying .ccxml are based on the targetdb specification shown at the page below, but the options vary depending on the JTAG debugger of choice.

    http://processors.wiki.ti.com/index.php/TargetDB_XML_Specification

    The GDB agent uses the original target configuration data file specification, which precedes the .ccxml by at least 15 years or so. As with many legacy standards, its documentation is inside chapter 5.4 of the PDF below:

    http://processors.wiki.ti.com/images/9/90/Dbjtag_users_guide.pdf

    The discrepancies between the two utilities stem from the fact they come from different design groups within TI, but it certainly would be desirable to have a common platform for both. To this effect, the enhancements SDSCM00051900 (to allow flash operations directly from the GDB agent) and UNIFLASH-502 (allow Uniflash to modify JTAG debug probe settings) were filed.

    I apologize for the inconvenience,

    Rafael 

  • Rafael, thanks for the links - I had already downloaded the Dbjtag guide but hadn't spotted the file format description in it. All working now.
    Philip