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.

[参考译文] RM48L950:FreeRTOS -启动调度程序时预取中止

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/616013/rm48l950-freertos---prefetch-abort-when-starting-scheduler

器件型号:RM48L950
主题中讨论的其他器件:HALCOGEN

您好!

将 FreeRTOS 9.0.0移植到 RM48开发 USB 记忆棒时遇到问题。 我按照 Halcogen 的指示设置了正确的中断(vPortYieldProcessor、vPortYeildWithinkAPI)、并且我可以跟踪一直运行到 portRESTORE_Context (在 portasm.asm 中)的芯片。 当程序调用 portRESTORE_CONTEXT 宏时、它会生成预取中止。

我使用的是 heap_1.c. 我已经使用相同的结果测试了其他 heap_x.c、但 heap_3.c 除外、它为我提供 了一个 vApplicationMallocFailedHook。

什么可能导致此类预取错误? 它是否与内存管理相关?

此致、

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

    您是否尝试实现了 Halcogen 附带的 FreeRTOS 版本? 我不认为 Halcogen 默认设置了所有必要的挂钩来支持较新的9.0版本。 我还复制了我们的一位 FreeRTOS 专家的答复,以便他们也可以查看并提供建议,如果他们对 FreeRTOS v.9.0的集成有任何建议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Chuck、

    感谢您指出这一点。 我已经在 Halcogen 中尝试了包含的 FreeRTOS 示例、它的工作方式很有魅力。 它位于 FreeRTOS 7.4.0上、但我确信它可以满足我的需求。

    我注意到示例 Halcogen 项目针对 RM48L950ZWT。 它是否可移植到其他 RM4x 芯片或必须内置 Halcogen 模板?

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

    您好、Charles、

    您是否使用旧版本的 Halcogen? 我的印象是 FreeRTOS v.包含在 Halcogen 中。 此外、当您  在 Halcogen 中打开一个新项目时、每个器件型号都有一个可选的 FreeRTOS 设置。

    此外、在 Halcogen 示例目录中有针对每个支持的器件型号系列的示例、其中包括所有 RM4x 器件。

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

    你好、Chuck、

    我在闪烁测试中使用了 Halcogen 04.06.01。 我在 FreeRTOSConfig.h 文件中看到了 FreeRTOS 7.4.0,但主 OS_*文件是 FreeRTOS 8.2.0。 我的坏!

    至于使用其他芯片、假设我在实际项目中使用 RM46L440ZWT。 Halcogen 似乎没有针对这个特定器件的带有 FreeRTOS 的器件模板。 我还注意到、Halcogen 输出的 FreeRTOS 文件与 FreeRTOS.org 上下载的版本略有不同。 创建一个包含正确 FreeRTOS 文件且针对特定芯片的 Halcogen 项目的最简单方法是什么?

    感谢您抽出时间、这些 Hercules 芯片的支持远远超出了我的预期。

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

    您应该能够选择 RM46L852ZWT_FreeRTOS 并将其用作您的起点。 您可能需要修改链接器命令文件以调整存储器大小、因为较高的器件型号(扩展集器件)将具有更多与其关联的存储器。 您可能还需要注意随附的外设、因为超集器件中的某些外设可能不包含在较小的器件中。 由于我没有具体做过这件事、我无法说出它的所有细节。 如果 FreeRTOS 专家需要添加任何内容、我将会发出提示音。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    正如 Chuck 提到的、对于每个器件系列、我们都为其中一个器件型号添加了 FreeRTOS 支持。 您始终可以将其用作参考项目。 对于其他器件型号、您可能需要如他所述更改链接器命令文件。 每个器件型号的闪存和 RAM 存储器大小不同。 您可能还需要更改时钟配置。  HALCoGen 中提供的默认时钟设置可能因器件而异。

    如果您想在任何 RM48x 器件上移植 FreeRTOS、我建议您使用 RM48L950ZWT_FreeRTOS 创建 HALCoGen 项目。 在 GUI 中进行更改、以便时钟设置与目标器件类似。 还可以使用目标器件创建另一个项目。 为这两个文件生成代码、然后组合生成的文件。

    如果您在执行同样的操作时发现任何问题、请告诉我。

    谢谢、此致、

    Veena