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.

[参考译文] SysConfig:board.h 中重复的 GPIO 定义 (SysConfig — 自动生成)

Guru**** 2952510 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1655005/sysconfig-duplicate-gpio-definitions-in-board-h-sysconfig--auto-generated

器件型号: SysConfig

我正在 使用 led_ex2_blinky_cpu1_cpu2_cpu3_multi F29H85x (多核)的示例工程 、 发现 board.h 通过 SysConfig 自动生成的文件存在问题。

board.h CPU1 的文件 正确、 但 board.h CPU2 和 CPU3 的文件 包含 重复的 GPIO 定义。

//************************************************************************************************
//
// GPIO 配置
//
//************************************************************************************************
#define CPU2_LED 9.
void CPU2_LED_init ();
#define CPU3_LED 23
void CPU3_LED_init ();


//************************************************************************************************
//
// CMPSS 配置
//
//************************************************************************************************

//************************************************************************************************
//
// RTDMA1 配置
//
//************************************************************************************************

//************************************************************************************************
//
// RTDMA2 配置
//
//************************************************************************************************

//************************************************************************************************
//
// GPIO 配置
//
//************************************************************************************************
#define CPU2_LED 9.
void CPU2_LED_init ();
#define CPU3_LED 23
void CPU3_LED_init ();


问题:

  1. 为什么  SysConfig 会     在  CPU2 和 CPU3 board.h 文件中生成重复的#define 语句?
  2.  这是  已知 问题 还是        此 示例 工程的 SysConfig 配置中存在错误?
  3.  应如何    解决此问题?
  4. 为什么   编译器不 检测    这些 重复的 #define 语句并发出警告?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Thao:

    这是 F29H85x 工程的多核代码生成中的一个已知 SysConfig 错误。

    SysConfig 为什么会生成重复定义?

    重复项源于 SysConfig 如何处理多核代码生成。 在 F29x 器件中、CPU1 必须聚合来自所有内核的信息、并为器件级设置(PinMux,时钟设置等)生成初始化代码[1]。 在此过程中、SysConfig 会像 board.h 分配给每个内核的模块那样在文件中生成代码块。在配置模式下、即使关联的资源实例未添加到当前内核、这些块也会“生成“[2]。 此聚合逻辑在 CPU2 和 CPU3 头文件中不正确地产生重复的 GPIO 定义块。

    2.这是一个已知的问题吗?

    是的。 TI 已确认这是一个与多核工程中辅助内核的 GPIO 代码生成相关的 SysConfig 错误。 F29H85X-SDK 版本 1.02.01.00 [3]中修复了该问题。

    3.如何解决这个问题?

    • 优选修复: 更新到 F29H85X-SDK 版本 1.02.01.00 或更高版本(最新版本为 1.03.00.00)[3]。
    • 临时解决方法: 从生成的 board.h 文件中手动删除重复定义。 请注意、如果从 SysConfig 重新生成、这些文件将被覆盖、因此升级 SDK 是永久性解决方案。

    4.为什么编译器不警告重复?

    C 预处理器标准允许重新定义 具有相同替换值的宏 、而不会发出警告或错误。 由于两条 #define CPU2_LED 9 语句具有相同的值9()、并且两条语句 #define CPU3_LED 23 具有相同的值23()、因此编译器将它们视为良性重新定义。 只有冲突的重新定义(同一宏名称的不同值)才会触发编译器警告[3]。


    为了帮助完善这项建议、了解以下信息会有所帮助:

    • 您当前使用的是哪个 SDK 版本—如果它已经是 1.02.01.00 或更高版本、但您仍然看到此问题、则可能会指示错误的不同变体
    • 重复定义是否导致了代码清洁度问题之外的任何功能或编译问题

    1. Resource Allocator - F29H85x SDK 文档
    2. 配置模式 (CONFIGURE)- F29H85x SDK 文档
    3. F29H859TU-Q1:GPIO SysConfig 错误 — TI E2E 论坛

    此致、

    Zackary Fleenor

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

    您好、Zackary、

    感谢您的快速答复。

    我更新了 SDK 并使用版本 1.02.01、1.03.00 和 26.00.00 进行了测试、但我仍然看到在 CPU2/CPU3 board.h 文件中生成了重复的 GPIO 定义。

    您能否确认这在这些 SDK 版本中是否仍然是已知问题?

    如果是、是否计划针对未来的 SDK 版本进行修复? 如果是、您是否有估计的时间线、以及预计哪个 SDK 版本包含此修复程序?

    谢谢、此致、

    Thao

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

    尊敬的 Thao:

    感谢您确认使用多个 SDK 版本 — 这有助于我们正确跟踪问题。 我已经提交了一份内部错误报告、以跟踪此情况并将其关闭。 修复在未来的 SDK 版本中可用后、您将在此处收到更新。

     同时、权变措施是在每次重新生成 SysConfig 后、从 CPU2/CPU3 board.h 手动删除第二个重复的// GPIO 配置块。

    此致、

    Zackary Fleenor