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.

[参考译文] TMS320F28379D:调试配置中的相对路径(.launch)

Guru**** 657930 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1237800/tms320f28379d-relative-paths-in-debug-configurations-launch

器件型号:TMS320F28379D
主题中讨论的其他器件:CCStudio

与相关问题中的 OP 类似、我有一个项目具有多个目标配置(.ccxml)和调试配置(.launch)、用于连接到使用特定序列号的调试器的不同组合、 并且希望能够与同事分享这些内容、而无需改变每一条路径。

阅读完相关问题后、我现在可以设置每个.launch 所指向的.ccxml、使用

${target_config_active_default:nameofmyproject}

而不是绝对路径。 这是一个很好的开始。

但是、启动 XML 文件引用指定为设置其他参数的.ccxml、而相对路径在这里不起作用。

例如、如果我想从要加载的项目中指定.out、则这样操作不起作用:

<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROGRAM.${target_config_active_default:nameofmyproject}.Texas Instruments XDS100v2 USB Debug Probe Lane 1/C28xx_CPU1" value="${build_artifact:nameofmyproject}"/>

使用调试配置编辑器会将绝对路径写入 XML 文件中的 KEY 字段,而不是上面的相对路径,这会导致在其他计算机上使用该文件时出现问题。

是否有办法使用相对路径来设置其他参数? 否则、能够指定.ccxml 的相对路径是毫无意义的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好

    会将您的问题转发给 CCS 团队。

    此致

    西达尔特  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Siddharth

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dave、您好!

    我会仔细研究并保留您的帖子。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我有一个项目具有多个目标配置(.ccxml)和调试配置(.launch)、用于连接到使用特定序列号的不同调试器组合、并希望能够与同事共享这些项目而无需更改每一个路径。

    尝试了解这个用例。 只是为了说明一下:您有一个项目、并且有几个作为 项目一部分的 CCXML 文件。 每个 CCXML 文件都是通过序列号连接的参考特定调试探针。  

    CCS 将创建一个缺省调试启动配置、此配置通过 ${TARGET_CONFIG_ACTIVE_DEFAULT:myProjectName}引用一个 CCXML 文件、并通过 ${BUILD_Artifact:myProjectName}引用程序。 这个启动配置将针对在项目中被设定为"Active"的 ccxml 文件启动一个调试会话。 因此、您可以通过在项目中将 CCXML 文件设置为激活来控制要使用的 CCXML 文件。 生成的启动文件将是工程的一部分、没有任何绝对路径。

    我正在尝试了解您为什么要为该项目创建其他调试启动文件。 这样做是否为了避免 GO 将一个特定的 CCXML 文件设定为"激活"、而只需选择一个启动配置、而只需从几个现有启动文件中选择一个来启动一个调试会话?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的参与。

    我正在尝试了解此用例。 只是为了说明一下:您有一个项目、并且有几个作为 项目一部分的 CCXML 文件。 每个 CCXML 文件都是通过序列号连接的参考特定调试探针。  [/报价]

    正确无误(我将通过两个调试器在两个微控制器上运行相同的代码、因此需要使用特定序列号对每个微控制器进行寻址。

    创建单独启动文件的原因是我需要更改默认调试配置-例如、禁用自动运行。 4个内核(两个处理器上各2个内核)中的每一个都必须分别完成此操作。 我还需要指出 CPU2的程序、该程序位于单独的项目中。 每次重复都很耗时! 这些设置似乎已被"锁定"到启动文件中特定的 ccxml 文件中、并且根据我的 OP、启动文件不会接受相对路径作为 CCXML 文件的链接。

    如果我使用调试配置 GUI 为 CCXML 文件设置一个相对路径、当它生成启动文件时、会将设置链接到已解析的绝对路径。 如果您将此文件移动到其他机器、它将从相对路径中找到 CCXML 文件、但设置仍与来自第一台机器的绝对路径相关联、因此不会被读取。

    谢谢

    戴夫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这些设置似乎被"锁定"到启动文件中的特定 ccxml 文件

    我认为这些设置未锁定到 CCXML 文件。 它与启动文件相关联。 启动文件将存储这些调试器选项并具有对 ccxml 文件的引用。ccxml 文件本身没有 CCS 调试器选项设置。

    如果我使用调试配置 GUI 为 ccxml 文件设置相对路径

    您能否提供所做操作的屏幕截图?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    解释起来有点困难、因此我将尝试逐步在屏幕截图中展示它:

    我创建一个新的 ccxml 文件、例如.ccxml。 为了简化操作、我将仅使用一个器件(两个 CPU)、并且我不会指定调试器序列号。

    我从 GUI 创建一个新的调试配置。 我使用 Workspace 浏览按钮指向 CCXML 文件-这会在目标配置字段中放置一个绝对路径(不确定较新版本的 CCS 中的行为是否不同-我使用的是 v.8.3.0.00009 )、 但我可以手动将其更改为相对路径:

    我使用相对路径来设置要加载到每个 CPU 中的程序:

    并在每个 CPU 加载时禁用自动运行:

    我应用这些更改、然后在文本编辑器中打开启动文件以查看已生成的内容:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <launchConfiguration type="com.ti.ccstudio.debug.launchType.device.debugging">
    <stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_DEBUGGER_PROPERTIES.C:\git\CPU1\targetConfigs\example.ccxml.Texas Instruments XDS100v2 USB Debug Probe/C28xx_CPU1" value="<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <PropertyValues>
    
      <property id="AutoRunToLabelOnRestart">
        <curValue>0</curValue>
      </property>
    
      <property id="ConnectOnStartup">
        <curValue>1</curValue>
      </property>
    
      <property id="EnableInstalledBreakpoint">
        <curValue>1</curValue>
      </property>
    
      <property id="IgnoreSoftLaunchFailures">
        <curValue>0</curValue>
      </property>
    
    </PropertyValues>
    "/>
    <stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_DEBUGGER_PROPERTIES.C:\git\CPU1\targetConfigs\example.ccxml.Texas Instruments XDS100v2 USB Debug Probe/C28xx_CPU2" value="<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <PropertyValues>
    
      <property id="AutoRunToLabelOnRestart">
        <curValue>0</curValue>
      </property>
    
      <property id="ConnectOnStartup">
        <curValue>1</curValue>
      </property>
    
      <property id="EnableInstalledBreakpoint">
        <curValue>1</curValue>
      </property>
    
      <property id="IgnoreSoftLaunchFailures">
        <curValue>0</curValue>
      </property>
    
    </PropertyValues>
    "/>
    <setAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_HIDE_CONFIG_ELEMENT_TYPES">
    <setEntry value="BOARD"/>
    <setEntry value="BYPASSED_CPU"/>
    <setEntry value="BYPASSED_ROUTER"/>
    <setEntry value="CONNECTION"/>
    <setEntry value="DEVICE"/>
    <setEntry value="NON_DEBUG_CPU"/>
    <setEntry value="NO_DRIVER"/>
    <setEntry value="ROUTER"/>
    <setEntry value="SUBPATH"/>
    <setEntry value="SYSTEM"/>
    </setAttribute>
    <stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROGRAM.C:\git\CPU1\targetConfigs\example.ccxml.Texas Instruments XDS100v2 USB Debug Probe/C28xx_CPU1" value="${build_artifact:NGHLS_cpu1}"/>
    <stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROGRAM.C:\git\CPU1\targetConfigs\example.ccxml.Texas Instruments XDS100v2 USB Debug Probe/C28xx_CPU2" value="${build_artifact:NGHLS_cpu2}"/>
    <stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROJECT.C:\git\CPU1\targetConfigs\example.ccxml.Texas Instruments XDS100v2 USB Debug Probe/C28xx_CPU1" value="NGHLS_cpu1"/>
    <stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROJECT.C:\git\CPU1\targetConfigs\example.ccxml.Texas Instruments XDS100v2 USB Debug Probe/C28xx_CPU2" value="NGHLS_cpu2"/>
    <stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_TARGET_CONFIG" value="${target_config_active_default:NGHLS_cpu1}"/>
    <stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\git\CPU1\targetConfigs\example.ccxml.Texas Instruments XDS100v2 USB Debug Probe/C28xx_CPU1" value="C:/git\CPU1\Debug\NGHLS_cpu1.out"/>
    <stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\git\CPU1\targetConfigs\example.ccxml.Texas Instruments XDS100v2 USB Debug Probe/C28xx_CPU2" value="C:/git\CPU2\Debug\NGHLS_cpu2.out"/>
    <stringAttribute key="org.eclipse.debug.core.source_locator_id" value="com.ti.ccstudio.debug.sourceLocator"/>
    <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <sourceLookupDirector>
    <sourceContainers duplicates="false">
    <container memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <default/>
    " typeId="org.eclipse.debug.core.containerType.default"/>
    <container memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <cpuSpecificContainer cpuName="Texas Instruments XDS100v2 USB Debug Probe/C28xx_CPU1">
    <childContainerEntry childMemento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <project name="NGHLS_cpu2" referencedProjects="true"/>
    " childType="org.eclipse.debug.core.containerType.project"/>
    <childContainerEntry childMemento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <project name="NGHLS_cpu1" referencedProjects="true"/>
    " childType="org.eclipse.debug.core.containerType.project"/>
    <childContainerEntry childMemento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <default/>
    " childType="org.eclipse.debug.core.containerType.default"/>
    <childContainerEntry childMemento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <productsSource/>
    " childType="com.ti.ccstudio.debug.containerType.products.source"/>
    <childContainerEntry childMemento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <deviceLibrarySource/>
    " childType="com.ti.ccstudio.debug.containerType.device.library.source"/>
    <childContainerEntry childMemento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <librarySource/>
    " childType="com.ti.ccstudio.debug.containerType.library.source"/>
    </cpuSpecificContainer>
    " typeId="com.ti.ccstudio.debug.containerType.cpu.specific"/>
    <container memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <cpuSpecificContainer cpuName="Texas Instruments XDS100v2 USB Debug Probe/C28xx_CPU2">
    <childContainerEntry childMemento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <project name="NGHLS_cpu2" referencedProjects="true"/>
    " childType="org.eclipse.debug.core.containerType.project"/>
    <childContainerEntry childMemento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <default/>
    " childType="org.eclipse.debug.core.containerType.default"/>
    <childContainerEntry childMemento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <productsSource/>
    " childType="com.ti.ccstudio.debug.containerType.products.source"/>
    <childContainerEntry childMemento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <deviceLibrarySource/>
    " childType="com.ti.ccstudio.debug.containerType.device.library.source"/>
    <childContainerEntry childMemento="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <librarySource/>
    " childType="com.ti.ccstudio.debug.containerType.library.source"/>
    </cpuSpecificContainer>
    " typeId="com.ti.ccstudio.debug.containerType.cpu.specific"/>
    </sourceContainers>
    </sourceLookupDirector>
    "/>
    </launchConfiguration>
    

    如您所见、cccxml 文件的相对路径已解析为绝对路径、而设置则使用绝对路径作为参考:

    我可以手动将这些绝对路径替换为相对路径:

    但当我在 Debug Configurations GUI 中查看此视图时、CCS 无法识别 设置中引用的 CCXML 路径、因此它们会丢失:

    我希望这有助于说明问题所在。 如果有任何需要澄清的地方、敬请告知。

    再次感谢

    戴夫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这将在"Target Configuration"字段中放置一个绝对路径(不确定行为是否在较新版本的 CCS 中有所不同-我使用的是 v.8.3.0.00009 )

    我们在 CCSv9发布后对相关路径和启动文件进行了一些改进。 请尝试当前的 CCS 版本。 当我按照您的步骤操作时、我没有在您的启动文件中看到您的绝对路径。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我按照您的步骤操作时,我看不到您的启动文件中的绝对路径。

    我使用 CCS 12.3.0

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ki、您好!

    我通过以下方法对此进行了测试:在 CCS v11中创建一个目标配置、并使用相对路径链接到该配置的调试配置、然后将文件复制到另一台运行 v11的计算机。 相对路径会保留、因此会保留调试配置中的设置。 这似乎解决了问题。

    CCS V8无法识别 v11中创建的文件中的路径、因此我需要更新所有机器。

    感谢您的帮助。

    此致、

    戴夫