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.

PROCESSOR-SDK-AM335X: CCS Question

Part Number: PROCESSOR-SDK-AM335X
Other Parts Discussed in Thread: MSP430F2013

Hello,  (There USED to be a check box for "my question is about CCS... that's now gone)  

I am looking for answers. There are none of value I can find.

Lets talk about ccxml files...

When I create a Hello World tutorial file, and press debug, it magically creates a ccxml file, loads it to the target (BBB in my case) and lets me debug it.

So now a gazillion things have been done behind my back... none of which is explained.

If I right click on a project, and select Debug As... Code Composer Debug Session, it does the EXACT same thing.

If I instead select Debug Configurations, I get a different screen. Let's look at it, as I have three projects open.

Pick one: TestNDK
That project has a ccxml in the root named "TestNDK-xds.ccxml"   Well the dialog shows me ${target_config_active_default:TestNDK}.


Close, but not a match... where does it get these values? I can find nothing in the project properties | Debug section, or anywhere else, that maps ${target_config_active_default:TestNDK} to the TestNDK-xds.ccxml

When I open the ccxml file, I get a completely different page. Absolutely nothing in common.


I can see it allows me to pick the MCU. And the advanced setting has a bunch of settings that I can find no help on.

I see the BBB/A8 setting has a GEL file, but the path is relative. TO WHAT? Apparently something NOT related to the project.I had to hunt it down...  And it's 1000's of line that look like C code and contain stuff that I see in Starterware header files.

I also read years ago that the environment was moving away from GEL files. Of course trying to find that old doc page would be nearly impossible.

If I change the MCU, the GEL file is erased. Where does it get the GEL files, and what happens if there isn't one? Do I have to make one by hand?

Lets now look at the project IoT-Test...
This is a mess, nothing matches.
The debug dialog has all four cores checked.

Of course, it claims the ccxml file is part of the project. ${target_config_active_default:IoT-Test} But I have no idea what name it THINKS it is supposed to be.

The ACTUAL file located in the targetConfigs folder is named BeagleBone_Black.ccxml. Which is the one under the dialog as XDS100v2 (the name of the JTAG device connected to it).

Where in the project IoT-Test does it know to use that ccxml file?  

It gets worse.

If I click Target tab, it says the device is IcePick... Unless I click a different...? What? (That window on the left has no name.)


I click TestND... then click back to IoT-Test...  when I click back it's set to M3_wakeupSS_0


Neither of which is correct.

So, this setting is wrong.  And yet the environment magically knows what settings I want to use when debugging this project.  Based on some environment variable that doesn't exist.

And to complicate matters...

The IoT-Test project, when I start it, it loads the code into the device. It is using that ccxml file.  Which is what is expected.

And that has an ccxml file name of BeagleBone_Black.ccxml...

But the list in that "Debug" dialog (whatever it is...) also shows a XDS100V2.   And THAT entry is the one that points to a  BeagleBone_Black.ccxml.

Okay, so maybe IoT-Test magically knows to use that BeagleBone_Black.ccxml file, instead of whatever that environment variable name is.

And yet, it doesn't have anything in the project or program settings.  So it knows to use some setting, and even knows to load the program when it is not set to...?

To make things more confusing there is another huge project that cannot be loaded automatically.  It MUST be "connected" in the debug perspective when the device powers up. It uses the XDS100v2 setting, which ALSO has no setting in the project/program.   And it DOES NOT load the program (which is behavior I want)

Why does one configuration without a project/program setting  know to load it anyway, but another knows NOT to?

And this is just a start of what I cannot understand or figure out...

  • Hello,

    (There USED to be a check box for "my question is about CCS... that's now gone) 

    Yes, now initial questions (even CCS/tools related ones) are first being directed to the related product/device forums. This is because of some organizational changes with I will spare the details for. 

    So now a gazillion things have been done behind my back... none of which is explained.

    This is explain a bit in this section:

    https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html#the-launching-process

    If I right click on a project, and select Debug As... Code Composer Debug Session, it does the EXACT same thing.

    Yes, The "Debug" button does the same action

    If I instead select Debug Configurations, I get a different screen. Let's look at it, as I have three projects open.

    Ok, now you are getting into the specifics of Eclipse debug/launch configurations. A messy topic and admittedly a confusing one.

    Close, but not a match... where does it get these values? I can find nothing in the project properties | Debug section, or anywhere else, that maps ${target_config_active_default:TestNDK} to the TestNDK-xds.ccxml

    The debug configurations will use special Eclipse dynamic variables such as the above. Again admittedly confusing. Please see:

    https://software-dl.ti.com/ccs/esd/documents/ccs_portable-projects.html#dynamic-variables

    When I open the ccxml file, I get a completely different page. Absolutely nothing in common.

    That would open the Target Configuration editor, which allows you to create/modify the ccxml file. The details of the ccxml is mentioned in: https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html#target-configuration-files

    I can see it allows me to pick the MCU. And the advanced setting has a bunch of settings that I can find no help on.

    Please see: https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html#advanced-target-configuration-options

    I see the BBB/A8 setting has a GEL file, but the path is relative. TO WHAT? Apparently something NOT related to the project.

    It is relative to a location inside CCS. Specifically: <CCS INSTALL DIR>\ccs\ccs_base\common\targetdb

    I also read years ago that the environment was moving away from GEL files.

    That was the dream. As you already figured out, it is still a dream.

    If I change the MCU, the GEL file is erased. Where does it get the GEL files,

    It really varies. GEL files can come from a variety of locations. Inside CCS, it can come from some of the below:

    <CCS INSTALL DIR>\ccs\ccs_base\emulation\gel

    <CCS INSTALL DIR>\ccs\ccs_base\emulation\boards

    If you get a ccxml file from somewhere else like an SDK, it could reference one that came with the SDK.

    what happens if there isn't one? Do I have to make one by hand

    It isn't essential to have one. And as you move close to production, you will likely want to rely on it less and less. See section 5 of this old (but still relevant) document on GEL initialization files:

    https://www.ti.com/lit/an/spraa74a/spraa74a.pdf

    If you wish to use a GEL file, you can use one of the existing ones from CCS or other sources (like SDK or BSL, etc). You can also create your own. Often times people start with an existing one and modify it to suit their needs (especially with customer boards).

    Of course, it claims the ccxml file is part of the project. ${target_config_active_default:IoT-Test} But I have no idea what name it THINKS it is supposed to be.

    The ACTUAL file located in the targetConfigs folder is named BeagleBone_Black.ccxml. Which is the one under the dialog as XDS100v2 (the name of the JTAG device connected to it).

    Where in the project IoT-Test does it know to use that ccxml file?  

    It is going look for the "Active" ccxml file in the IoT-Test project. For example, see my image below:

    Target Configuration filed has: ${target_config_active_default:2013}

    That means look at the "Active" ccxml file in the 2013 project. You can see that the ccxml file marked "Active" in the 2013 project is MSP430F2013.ccxml. Hence that is the ccxml file that will be used

    If I click Target tab, it says the device is IcePick... Unless I click a different...? What? (That window on the left has no name.)


    I click TestND... then click back to IoT-Test...  when I click back it's set to M3_wakeupSS_0


    Neither of which is correct.

    The "Device" field has a drop down list that lets you configure separate debugger option for each available "core/router" of the device:

    What is specified just means that the options displayed are for that "core/router" specified. You can go through each one and specify different options for each.

    Why does one configuration without a project/program setting  know to load it anyway, but another knows NOT to?

    And this is just a start of what I cannot understand or figure out...

    All these options (auto-connect, auto-load program, run to main, etc) can all be disable/enabled on a per project and even per debuggable core basis using the debugger options. You can access these options via the debug configuration or also in the project properties (under the "Debug" options).

    Hope all this helps. Let me know if I missed something.

    Thanks

    ki

  • Thanks.  Clearly living and breathing the environment gives an advantage over someone who uses it about 20% of the time.

    I've bookmarked and downloaded the docs to read in my "spare time"  ... Haha.