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.

[参考译文] TMS320F28377D:尝试为 TMS320F377D 构建 FreeRTOS

Guru**** 2885260 points

Other Parts Discussed in Thread: C2000WARE, LAUNCHXL-F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1638970/tms320f28377d-attempting-to-build-freertos-for-the-tms320f377d

器件型号: TMS320F28377D
主题中讨论的其他器件: C2000WARELAUNCHXL-F28379D

我从 SYSCFG 选项中选择了 FreeRTOS:

image.png

构建后、我收到一个未定义的错误:

image.png

现在、适用于 377S 的演示工程 freertos_ex1_c28x_led_blinky_syscfg 没有此问题、构建正常。  我注意到构建顺序并不相同。  INT_FreeRTOS 在 hw_ints.h 中定义、但这两个项目中的 diramism 下的此文件均从构建中排除。  有何不同?

 

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

    让我回顾一下、然后回来。

    此致、
    Shaunak

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

    我认为这与 RTOS 中断向量有关。  您如何在不接触 FreeRTOS 代码的情况下对此进行设置?

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

    顺便说一下、我使用的是 Code Composer 20.5.0 和 C2000 ware 26_00_00_00。

    无论编译中包含的 driverlib 文件是否如此、也没有任何区别。

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

    尊敬的 Lee:

    遗憾的是、这是 F2837x 器件的错误。 该问题将在 C2000Ware 的即将发布版本中得到修复。

    为了回答您的问题、   kernel\freertos\Source\portable\ccs\C2000_C28x\portdefines.h 中使用了 INT_FreeRTOS 值、以提供 FreeRTOS SW 中断将映射到的 PIE 矢量行。 您可以通过在 portdefines.h 顶部添加以下定义来解决错误

    #define INT_FREERTOS                0x00D70B10U // 11.16 - FreeRTOS SW interrupt
     

    这与 用于器件单核变体的 INT_FreeRTOS 相同、在 driverlib\f2837xs\driverlib\inc\hw_ints.h 中定义。 此向量本质上映射到低优先级未使用的 PIE 向量、以便更高优先级的中断不会受到影响。

    如果您有任何其他问题、请告诉我。

    此致、

    Arnav

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

    更好、但仍然存在一个问题:

    下面将创建这些部分:

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

    我想出了这个问题。  缺少周期:

    freertosstaticstack{*(.freertosStaticStack)}>> RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMM0
    freertosheap {*(.freertos堆)}>> RAMGS0 | RAMGS1

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

    FreeRTOS 现在已构建、但我遇到了一个新问题。  在 Launchxl-F28379D 评估板上运行、FreeRTOS 初始化会崩溃:

    我在任务调度器处放置一个断点:

    我尝试执行非法指令:

    添加了一些内容以获取 FreeRTOS 以便构建:

    1. 在 portdefines.h 中:  

    #define DO377DFIX
    #ifdef DO377DFIX
    #define INT_FreeRTOS         0x00D70B10U // 11.16 - FreeRTOS 软件中断
    #endif
    2. 内存段 freerthosstaticstack 和 freertoseap:
    3. 通过 FreeRTOS 选择添加了 timer2:
    我想知道是否应启用 timer2 中断。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在 PIE 上启用中断没有任何影响。  初始化仍然崩溃。

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

    尊敬的 Lee:

    syscfg TIMER2 条目仅用于阻止选择它、中断配置和使能会在端口层发生、因此这不会有问题。

    由于它在调度程序启动之前崩溃、我会通过单步执行代码来检查初始化时间问题、以查看中断达到的位置。 需要检查的几个事项是栈溢出(在调度程序启动之前,将使用主 CPU 栈)、并确保 定义_LAUNCHXL_F28379D

    我们已经验证、标准闪烁示例在 F2837xD 上按预期运行、只需 添加 INT_FreeRTOS 即可

    此致、

    Arnav