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.

[参考译文] CC2642R:CC26XX 任务配置

Guru**** 2589280 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1377128/cc2642r-cc26xx-task-configuration

器件型号:CC2642R

工具与软件:

您好!

在最新 SDK 的 simple_peripheral_CC26X2R1_LAUNCHXL_tirtos7_ticlang 示例中、我们有以下任务声明

// Task configuration
Task_Struct spTask;
#if defined __TI_COMPILER_VERSION__
#pragma DATA_ALIGN(spTaskStack, 8)
#else
#pragma data_alignment=8
#endif
uint8_t spTaskStack[SP_TASK_STACK_SIZE];
  

如果我们激活所有编译器警告(-wall) 、我们将得到"Description Resource Path Location Type"
未知 pragma 忽略[-Wunknown-pragma simple_peripheral.c /simple_peripheral_CC26X2R1_LAUNCHXL_tirtos7_ticlang/应用第257行 C/C++问题"

问题是:

-有了新的 TiRTOS7和 Tiarmclang 环境,我们是否仍然需要在堆栈上有8字节数据对齐? (我在文件中找不到任何建议。)

-如果是,为什么不使用 clang "___ attribute _(( aligned (8)))"版本?  还是我们应该使用它?

感谢您的帮助。

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

    您好!

    我认为8字节数据对齐仍是必要的。 我不知道为什么按当前的方式配置它。 我猜这是因为这就是工具链期望对其进行配置的方式。 我建议将设置保留为默认值、以确保一切都按预期运行。

    此致、

    1月

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

    您好!

    可以、但问题是、示例的代码与工具链期望对其进行配置的方式不一致。  

    因此、将所有内容保持原样意味着堆栈不会有8字节对齐。 除非有其他选项强制它为8字节对齐、否则...

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

    您好!

    明白了。 在这种情况下、您是否可以尝试使用__attribute__版本查看应用程序中的行为是否仍符合预期?

    此致、

    1月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. 是的、我可以尝试、但我想知道 TI 是否建议对 TiRTOS7任务栈进行8字节对齐。 我在文档中找不到任何信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我已经进一步对此进行了研究、在  第 7.4.3节 HeapBuf 中的 SYS/BIOS (TI-RTOS 内核) v7.x 用户指南中、提到具有32位架构的器件使用8字节对齐。  如 CC2642R 产品说明书中所指定、该器件 基于32位 ARM 内核、因此字节对齐将为8字节。

    此致、

    1月

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

    您好、Jan:

    我对这一主题仍有疑问。

    在 SYS/BIOS 文档中、它会显示"在具有32位架构的器件上、使用8字节对齐。 缓冲区的基地址也应与该大小对齐"  

    "已使用"并不意味着必须使用。 此外、这一章讨论的是堆、而不是任务堆栈。 在特定的 CC26XX Technical Manuel 中未提及任务堆栈设置的对齐。

    此外、LaunchPad 的 CLANG 简单外设示例未使用8位对齐。 它使用 TIArmCLang 编译器无法识别的旧 SYS/BIOS pragma (激活-Wall 可以查看该 pragma)。

    因此、非常感谢 TI 工程师对于我们是否必须使用 clang __attribute__((aligned (8)))进行任务堆栈声明采取明确的立场。

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

    您好!

    据了解、我将在内部与其他工程师讨论、看看我们是否可以进一步发掘更多信息。 同时、您是否尝试过使用__attribute__((aligned (8)))来查看会发生什么情况? 行为是否符合预期?

    此致、

    1月

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

    您好!

    我们在 TI Clang 文档中找到 aligned 关键字的定义:

    https://software-dl.ti.com/codegen/docs/tiarmclang/compiler_tools_user_guide/compiler_manual/c_cpp_language_implementation/attributes/function_attributes.html#aligned

    退后一步、您能告诉我们您为什么要改变为已调整的状态吗? 是删除警告还是在应用程序开发过程中看到问题?

    此致、

    1月

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

    您好 Jan:

    我不想更改对齐、我想做 CC2642供应商推荐的有关 TiRTOS7任务的堆栈对齐的事情。

    我问这个问题的 第一个原因是它没有记录、第二个原因是 SDK 示例不一致(请参阅我的初始问题)。

    simple-peripheral 示例使用旧的 #pragma DATA_alignment=8、而不是 clang  __ attribute ___((aligned (8)))    (是否只是一个错误...?)

    project-zero 示例使用  clang  __attribute__((aligned (8)))

    我试了两次,他们似乎是一流的工作,所以它不会推动任何东西。

    因此我的问题是:建议的 TiRTOS7/TiArmClang 任务的栈对齐是什么?

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

    您好!

    我认为、使用较旧的#pragma 定义可能是早期 SDK/RTOS 中的遗留内容、但我的理解是、即使出现警告、它仍然应该可以正常工作。

    此致、

    1月