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.

[参考译文] CODECOMPOSER:SysConfig:如何以最佳方式管理版本变化。

Guru**** 2589265 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1304174/codecomposer-sysconfig-how-to-best-manage-build-variations

器件型号:CODECOMPOSER
主题中讨论的其他器件:SysConfig

您好

我们使用 SysConfig 为目标设置我们的项目。

我们有两个版本的 HW、它们之间的差异很小、因此需要为这两个版本分别进行扩展。

在正常的手写配置中,我们将有一个带有所有共享设置的.C 文件,并且每个版本的两个文件都有几个不同的设置(有些文件可能会使用#ifdefs)。

如何使用 SysConfig 执行类似的操作?

我们希望避免在 SysConfig 中对所有配置进行完整复制、因为这会导致手动同步所有共享器件。 因此需要更多的维护(未来可能会带来更多的硬件版本)。

我做了一个快速测试,并将 foo.sysconfig 文件的内容分成两个文件,但这似乎不起作用,至少没有一些魔法。

但或许还有另一种巧妙的方法来实现这种分离呢?

为例。 请假设我们使用设置的 SysConfig

  • RAM 分配(两个内核)、
  • SPI 设置
  • SCI 设置
  • ePWM 设置
  • 一些简单的 GPIO 设置
  • ADC 设置。

这两个硬件之间的区别在于、

  • 两个 ADC 通道交换了引脚。
  • SPI 更改了 CS 的引脚。
  • 一个硬件具有额外的 SCI。

注意:实际的 MCU 是一个 F28379D、我没有提到主题、因为我认为答案是特定于 SysConfig、而不是特定于 MCU。

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

    您好!

    Unknown 说:
    我们希望避免在 sysconfig 中复制所有配置的完整副本

    您是否指的是构建配置? 编译配置实际上是适用于您的环境的推荐技术。 对于每个版本的硬件、您将具有不同的构建配置。 您会有两个不同的 SysConfig 文件、每个硬件一个。 您可以为每个编译配置排除该文件的非相关版本。 您可以对每个硬件不同的源文件执行此操作(或者具有一个带有#ifdefs 的奇异文件并在构建选项中为每个构建配置指定定义)。  

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

    编译配置是选择和排除文件的一种方法、我知道。

    我具体指的是 SysConfig 设置。

    我正在寻找一种更精细的方式来处理变化。

    默认蛮力破解方法仅具有两个不同的 SysConfig 文件、并使用构建配置选择活动的。
    但这样会留下两个95%完全相同的文件、将来对相同器件的所有更改现在都必须手动同步。

    经验告诉我、当您在两个位置重复相同的信息时、它们往往会发生不同步、如果这种情况扩展到三个位置、则由于缺少同步而出现错误的几率会呈指数级增长。

    正如您在`源文件中提到的那样、我可以使用`#ifdefs 找出5%的差异、甚至可以更好地拆分源文件、因此中的差异包含在一组单独的文件中。

    理想情况下、我会  

    hw_1.sysconfig
    hw_2.sysconfig
    common.sysconfig

    创建新问题、

    构建配置1包括:

    hw_1.sysconfig
    common.sysconfig

    构建配置2包括:

    hw_2.sysconfig
    common.sysconfig

    但据我所能知、这是不可能的。 但有没有任何方法可以实现 类似的结果?

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

    我已将该主题提请 SysConfig 专家注意、以供进一步评论。

    谢谢

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

    作者:Martin

    .syscfg 文件中有一些机制可用于执行您所说的操作。  缺点是、如果随后使用 GUI 编辑文件、它将覆盖您的更改、并且您将丢失分区。  但是、我认为、您可能会有上述三个文件、让它们在 GUI 中都可以单独编辑、然后将它们与另两个手动创建的文件绑定在一起、这两个文件永远不会使用 GUI 进行编辑。

    如果您在文本编辑器中打开.syscfg 文件、您将看到它就是 JavaScript。  它的设置应该相对直观。  然后、您可以创建如下所示的脚本:

    system.getScript ("./hw_1.js");

    system.getScript ("./common.js");

    将加载另外两个文件并运行它们(请注意、它们需要具有.js 扩展名)。  然后、对于其他配置、您将需要一个等效的配置。  然后会切换构建配置、使刚才创建的两个文件处于活动状态。

    如果您使用 GUI 编辑其中一个子脚本、就可以看到它的内容、并且能够相应地更改内容并保存。  如果您在 GUI 中打开了手工编写的文件、您将会看到所有内容、但是保存会破坏您所做的更改。

    达里安

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

    这听起来正是我所寻找的,太棒了:-)。

    然后还有一个后续问题、因为其他人也会编辑此项目。 我可以向此手工制作的主文件添加什么内容吗、如果在 GUI 中打开它、是否会触发错误或警告?
    GUI 打开时仅存在该变量或具有特定值的某个变量

    我对 javascript 不是很熟悉(而是快速学习的)、但 C 语言中类似的内容可能类似

    #ifdef  SYS_GUI_VER
    #error Do not edit in gui.
    #endif

    我知道我必须用 javascript 写检查、上面的 C 示例只是为了说明我要寻找的内容。

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

    if (typeof 窗口!="未定义"){
       //抛出新错误("此文件不应在 UI 中编辑");
       alert("您可以查看此内容、但不保存");

    如果您不相信同事会注意到警报消息、请取消注释第二行。

    达里安

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

    只是一个虚拟的回复、以保持该线程打开。
    我被紧急的错误修复任务打断了、并且阻止了我评估这个答案。
    很快就会回来。