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.

[参考译文] RM42L432:正在寻找与 ARM-CGT-clang 兼容的 RM42L432外围设备驱动程序

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1070998/rm42l432-looking-for-rm42l432-peripheral-drivers-that-are-compatible-with-arm-cgt-clang

部件号:RM42L432
“线程”中讨论的其他部件:HALCOGENART-CGT

您好,

我们是 TI ARM MCU 的新用户(以前我们主要与 Atmel 合作)。 我们正在评估一个项目的 RM42L432。 我们希望使用 TI 的 Clang 工具链,而不是“传统”ART-CGT 工具链。 但是,HALCoGen 不会生成兼容 Clang 的代码。 (我们已在 E2E 上阅读并验证了这一点。)

TI 建议我们在使用 Clang 时对外围设备驱动程序采取什么措施?

TI 是否提供与 Clang 兼容的外围驱动程序源代码?

TI 是否提供了除 HALCOGen 以外的一些工具来生成与 Clang 兼容的外围驱动程序源?

有没有计划用兼容 Clang 的产品取代 HALCOGen,还是更新 HALCOGen?

提前感谢!
Sam

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

    你好,Sam,

    很抱歉,我们的 HAL 代码不完全支持 TI Clang 编译器。 请使用以下链接中的指南迁移代码:

    https://software-dl.ti.com/codegen/docs/tiarmclang/compiler_tools_user_guide/migration_guide/behavioral_differences/index.html

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

    感谢您的快速回复,QJ。 我们开始按照迁移指南修改代码,并遇到一些问题。 也许您可以提供帮助?

    1. source/sys_startup.c 中,函数_c_int00标记为__attribute__(((裸机)),Clang 拒绝该函数,因为函数主体不是纯装配体。 迁移指南没有解决这种情况。 我们删除了属性,但我们不知道这会有什么影响。 要做的正确更改是什么?
    2. _c_int00中,还有一个代码块初始化数据段:
         { 
            extern UINT32 _sigdata,_sdata,_edata;
            UINT32 *src,*dst;
            SRC =&_sidata;
            DST =&_sdata;
               同时(DST <和_edata)
               {
               *DST++=*srC++;
            }
         }
      符号_sigdata_sdata_edata 在 HCG (sys_link.ld)生成的链接器脚本中定义。 此脚本与 LLVM 的链接器不兼容,CCS 生成的与 LLVM 兼容的链接器脚本(RM42L432FlashLnk.cmd)不对其进行定义。 我们可以向链接程序脚本添加什么来定义这些符号,或者有其他方法来引用相同的内存地址?

    即使您能够帮助我们解决这些问题,我们也对建议的方法有一些担忧:

    1. 它需要在“用户代码”部分之外修改 HCG 生成的代码。 随着该项目的推进,我们可能需要调整 HCG 配置并重新生成代码。 只要我们这样做,就必须重新应用 Clang 兼容性更改。
    2. 如果我们在 HCG 中启用了其他外围设备,则会生成新代码,然后我们必须迁移这些代码。 也许我们会遇到一些新的移民挑战,这些挑战需要一段时间才能解决。 这可能会使预测项目时间表变得更加困难。

    我们想知道 TI 是否建议在新的 Hercules 项目中使用 Clang,如果是,TI 是否可以为我们提供兼容 Clang 的外设驱动程序源代码。 我认为,“只迁移 HCG 生成的损坏代码”不是一个非常令人满意的解决方案。

    感谢您的见解,
    Sam

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

    你好,Sam,

    我建议继续使用 TI ARMCL 编译器,而不是切换到 TI ARM Clang 编译器。