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.

[参考译文] TMS320F28388D:有关存储器段放置的查询:维护自定义 DATA_SECTION 中变量的声明顺序

Guru**** 2796425 points

Other Parts Discussed in Thread: TMS320F28388D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1620345/tms320f28388d-inquiry-regarding-memory-section-placement-maintaining-declaration-order-for-variables-in-a-custom-data_section

器件型号: TMS320F28388D

提交给 TI 支持团队、

我目前正在处理一个涉及外部闪存以存储可配置参数的工程。 为了管理这些参数,我使用#pragma DATA_SECTION指令将变量放入一个特定的命名段(例如,).TRIMSECTION,然后映射到我的.cmd链接器命令文件中的一个特定 RAM 范围。

问题: 我已经注意到、编译器/链接器不会保留在.c源文件中声明的变量序列。 相反、它似乎是根据数据类型对它们重新排序(例如,在或之前组合在一起)uint16_tfloatuint32_t

这种重新排序会产生问题、因为我们的外部闪存映射依赖于一致的存储器偏移量。 添加新参数时、链接器会根据它们的类型将它们插入该段的中间、移动现有参数的地址、并在固件更新后导致数据不匹配。

证据: 如随附的映射文件屏幕截图所示:

  • 用例 A: 现有参数(如)gc_crank_engage_time_cont后跟battery_voltage_cal_value

  • 用例 B: 在添加amf_start_type和后CB_selection、它们会自动放置在地址0x0001B0130x0001B014(在其他 16 位/8 位类型之后)、从而移动后续float变量。

问题: TI ARM/C2000 工具链中是否有特定的编译器标志或链接器属性可强制链接器维护 源声明顺序 在命名段中?

约束注释: 我们知道将这些参数代入中struct会强制执行顺序;但是、由于严格的存储器限制和当前实现中涉及的开销、我们更倾向于使用链接器级解决方案、这样我们就可以在保证各个变量的序列的同时保留它们。

环境:

  • 编译器: TI-CGT-C2000_22.6.1.LTS

  • IDE: Code Composer Studio [CCS]

  • 器件: TMS320F28388D

感谢您的帮助。

IMG-20260226-WA0005.jpg

IMG-20260226-WA0004.jpg

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

    尊敬的 Ramakrishna:  

    您还能分享链接器 cmd 文件以供参考吗? 我可以检查如何将这些 pragma 位置映射到链接器 cmd 文件中的某个部分。

    谢谢

    Aswin

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

    请找到随附的链接器命令文件 (.cmd) 以供审核。 该文件包含.TRIMSECTION我上一篇文章中提到的存储器段定义和映射。 由于插入.cmd 文件时出现一些问题、我将扩展名更改为.txt 并已将其上载到 below.e2e.ti.com/.../0243.2838x_5F00_FLASH_5F00_lnk_5F00_cpu1.txt

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

    我循环链接器专家、我看不到链接器 cmd 文件有问题。

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

    感谢您邀请专家参与。 由于这种阻碍、我们的发展目前处于停顿状态、因此、在我们接近生产截止日期时、我们非常希望能够协助加快解决问题。 我们随时准备提供所需的任何进一步日志或文件。

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

    请考虑使用文章 强制对全局变量进行排序的方法之一

    谢谢。此致、

    -乔治