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.

[参考译文] CCS:关于_TI_STATUS_BASE 或 c6xabi_DSBT_BASE

Guru**** 2589280 points
Other Parts Discussed in Thread: AWR1843

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/965228/ccs-about-_ti_static_base-or-c6xabi_dsbt_base

Thread 中讨论的其他器件:AWR1843

工具/软件:Code Composer Studio

大家好、

需要您对我们客户的问题提供专业知识。 代表他们发布此帖子:

我想知道_TI_STATIC_BASE 的地址是否 必须对齐4个字节? 在我的映射中、我看到 _TI_STATIC_BASE 表示.bss (0x0081b77a)的地址、它无法正常运行。 它在某些断言函数中中止、该条件不满足。 但是、如果我在.bss 段(.bss{.=align (4);})中进行修改、.bss 的地址为0x0081b77c、则会正常运行。 可以帮帮我们吗?


提前感谢!


此致、

Jejomar

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

    [引用 user="Jejomar Ildefonso"]我想知道_TI_STATIC_BASE 的地址是否 必须对齐4个字节?

    文档未说明任何此类限制。  尽管如此,这种情况将是非常不寻常的。  这意味着程序在 DP 相关的段中仅具有 char 和 short 变量(通常为.bss.neardata.rodata)。  另一种说法是:程序中的所有标量全局变量都是 char short。  标量变量是指不是数组、结构体或联合体的变量。  如果一个标量全局变量是 intlongfloatdouble、指针、 等、则包含它的段必须在4字节或8字节边界上对齐。

    是这样吗?

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    非常感谢您对此进行深入研究。 我们已将您的回复告知客户、他们的回复如下:

    在我的程序中、我只有一个无符号短整型全局变量(其他变量是结构或数组)。 该全局变量位于.bss 段(占用2个字节:0x0081b77a 和0x0081b77b)中、.bss 段的长度为2个字节。 在我的映射文件中、_TI_STATIC_BASE 的地址为0x0081b77a、但程序确实运行异常。 那么、原因是什么?

    在我的 CMD 文件中、我将".bss{}  >UMAP0"修改 为".bss{.= align (4);}  >UMAP0"、程序正常运行。 比较这两个地图、我发现只有两个不同点:
     1..bss 0x0081b77a      VS   .bss 0x81b77c
    2.  _TI_STATIC_BASE 0x0081b77a   VS  _TI_STATIC_BASE 0x0081b77c

    您能告诉我原因吗? 我的处理器是 AWR1843的 DSP


    此致、

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

    您好!

    您的程序似乎需要在4字节边界上对齐.bss。

    必须分析.bss 中的数据

    可能其中一个数据结构或变量需要进行这种对齐。

    如果没有有关代码的更多信息、则很难提供更多信息

    谢谢你

    Cesar

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

    您好、Cesar、

    感谢你的答复。 但是、在.bss 中、只有一个无符号 short (16位)变量、在我的测试程序中、我仅在以下位置使用了该变量:
    volatile unsigned short testCnt;
    testCnt = xxx;

    变量是否需要对齐?


    此致、

    Jejomar

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

    您好!

    此变量不需要对齐。

    但是、.bss 段中必须有一些其他结构体需要对齐、并且它们未正确对齐。

    这将解释该行为。

    这可能是您正在使用的预先存在的代码。

    您正在运行什么演示?

    演示中可能包含未在4字节边界上正确对齐的数据数组?

    由于节假日、对该主题的响应将延迟至1月5日

    谢谢你

    Cesar

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

    您好、Cesar、

    对拖延表示歉意。 通过映射文件可以看出  、.bss 段中只有一个变量(testCnt)、其大小为2字节。 它不包含任何其他 结构。

    我在 AWR1843的 DSP 上运行我的程序。

    期待您的回应!


    此致、

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

    你(们)好

    您可以与我们共享地图文件吗?

    谢谢你

    Cesar

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

    您好、Cesar、

    对延迟答复表示歉意。 我们客户在调试其公司的程序时遇到问题、因此映射文件 是加密的、无法通过 USB 从其计算机复制。

    但是、他们比较了这两个映射文件、只有两个不同之处:

    不对齐(运行异常)                 对齐(正常运行)
     1..bss 0x0081b77a                 与      .bss 0x81b77c
    2.  _TI_STATIC_BASE 0x0081b77a     VS    _TI_STATIC_BASE 0x0081b77c


    此致、

    Jejomar

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

    您好!

    我在 DSS 映射文件中查看了我们发布的几个演示、并注意到 TI_STATIC_BASE 始终位于32位边界上对齐的地址。 但是、我在链接器 cmd 文件中看不到强制对齐此段的任何指令。

    我仍然需要向编译器团队调查导致这种对齐的原因、并将返回给您

    谢谢你

    Cesar

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

    您好!

    很抱歉耽误你的时间、

    我已经与编译器团队讨论过。

    我的理解是、在 TI 演示中、TI_STATIC_BASE 始终位于在32位边界上对齐的地址、因为.bss 中有需要32位 alignement 的段

    谢谢你

    Cesar

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

    您好、Cesar、

    我们已与客户分享了您的更新详情、他们希望进一步澄清。 您是说.bss 段的地址需要32位对齐吗? 遗憾的是、我们无法在任何文档和 TI 的演示程序中找到描述。 没有类似"{.=align (4)"的语句。 它如何确保地址对齐4?


    此致、

    Jejomar

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

    您好!

    一般而言、正如 George Mock 在前一次答复中提到的、.bss 段不要求在32位边界对齐。

    但是、如果.bss 段中包含的某些缓冲区需要32位对齐、则编译器将在32位边界上对齐.bss 段。

    这是否能回答您的问题?

    谢谢你

    Cesar

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

    您好 Cesar、

    我对拖延表示歉意。 我已经向客户分享了您的最新回复、很明显、他们明确希望知道的是、为什么他们的程序在.bss 段的地址不对齐时无法正常运行4?

    George 提到.bss 段的地址在其映射文件中始终保持一致4、您能帮助我们向客户提供这样做的原因吗?


    此致、

    Jejomar

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

    您好!

    请给我一些时间与 George 讨论他的意见。

    我将在本周晚些时候回来。

    谢谢你

    Cesar

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

    您好!

    我与乔治讨论了这个问题。

    如果是 BSS。 部分仅包含一个字节(char)数据格式、我们认为这应该没有问题。

    我们是否可以获得一个小测试案例来重现此问题?

    谢谢你

    Cesar

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

    您好 Cesar、

    对拖延表示歉意。 我们已尝试为客户申请测试案例、但由于问题发生在他们公司的软件代码中、此问题已加密、不能通过任何形式发送。

    您能否尝试复制正常程序和有问题程序之间的唯一区别? 这是.bss 段的起始地址。

    非常感谢您的持续支持!


    此致、

    Jejomar

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

    您好!

    遗憾的是、我们所有的演示都没有显示此问题。

    谢谢你

    Cesar