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.

[参考译文] freertos-AM243X:"Hello World"工程、带有在 Core-1上运行的 MCU-PLUS-SDK

Guru**** 2465890 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1472806/mcu-plus-sdk-am243x-hello-world-project-with-freertos-that-runs-on-core-1

器件型号:MCU-PLUS-SDK AM243X

工具与软件:

您好!

我正在寻找一个包含在 Core-1上运行的 FreeRTOS 的简单示例项目。

我已在 Core-1上成功运行"Hello World"FreeRTOS 项目。

在中main.c、在中创建了静态任务app_main.c、该任务运行循环:

while (1)
 {
  printf("%d\n", counter++);
  vTaskDelay(500);
}

问题是它开始运行但在内部崩溃vTaskDelay(500);

我怀疑我可能在中犯了一个错误linker.cmd、可能是错误放置中断。

同一个工程(原始"Hello World")在 Core-0上可以正常运行。

谢谢!
Eli

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

    Eli、您好!

    我正在查看您的问题、您可以通过 EOD 进行回复。

    此致、

    Anil。

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

    尊敬的 Anil:

    什么是 EOD? 你的意思是讨论结束吗?

    您可以帮助我激活 FreeRTOS 的"Hello World"以便在两个内核上同时运行吗?

    我已经在运行 Core-0、那么 Core-1的 linker.cmd 应该是什么、这样它就不会与 Core-0联合使用?

    在 syscfg 中为 Core-1上的 FreeRTOS 选择哪个计时器?

    谢谢!

    此致、

    Eli

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

    Eli、您好!


    对不起的困惑,我的意思是 EOD 是一天的结束。

    我的建议是、不要将 R5F0_0内核和其他 RTOS 计时器设置的链接器移动到 R5F0_1内核中、而是直接使用其为所有内核设置的专用 RTOS 的空项目。

    这样您就可以轻松地对所有内核使用 FreeRTOS。

    C:\ti\mcu_plus_sdk_am64x_10_01_00_32\examples\empty\am64x-evm

    您可以采用 systemfreertos 项目并对其进行编译。

    完成所有项目编译后、将您的应用集成到所选的内核中。

    此致、

    Anil

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

    尊敬的 Anil:

    我少了一些东西。

    我看到对于内核0、矢量表位于0x0000。 对于 Core-1、我是否应该将向量移至0x8000?

    当我做时,在 Core-1上 vTaskDelay ()崩溃,并转到地址0x10。

    您能否建议为 Core-1使用 linker.cmd?

    对于 Core-0、我在 syscfg 中看到 timer-8用于 tick。 对于 Core-1、我应该使用 timer-9吗?

    谢谢!

    此致、

    Eli

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

    还有一点,您能详细说明您提到的示例在哪里。

    谢谢!

    此致、

    Eli

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

    尊敬的 Anil:

    我找到了示例。

    我仍然感到困惑的矢量内核0和内核1都从0x0开始?

    如果我运行他们两个怎么他们不 colide ?

    谢谢!

    此致、

    Eli

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

    Eli、您好!

    向量例程 从 TCM 存储器运行。

    在本地 R5F 内核视图中、所有 R5F 内核的此 TCM 存储器可以相同。

    但是、SOC 存储器视图中每个 R5F 内核上的此 TCM 存储器不同、此处可能没有重叠。

    通常、所有 R5F 内核的 TCM 存储器不同、但当 R5F 内核在本地视图中显示时、它们是相同的。

    此致、

    Anil。

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

    尊敬的 Anil:

    我将针对矢量使用相同的地址和相同的计时器8、我看到这两个内核能够正确运行。

    您说如果向量位于地址0、则每个内核都可以在不同的地址中看到它。 您能说发生这种情况的 TCM 的绝对地址是在哪个?

    谢谢!

    此致、

    Eli

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

    Eli、您好!

    请查看下面的 TRM 图像以了解 TCM 存储器。

    此处、每个 R5F 内核都有可提供32KB 内存的 TCMA 和 TCMB。

    当我们将 R5F 内核配置到各个内核中时、R5F0_0最多可以使用32KB、而当两个内核可以配置为单个内核时、可以使用64KB。

    现在,在 MCU+SDK 中,R5F0_0内核将  在0x00内存位置为 TCMA 使用0x78000000内存。

    并且、另一个 R5F0_1内核在0x00存储器位置使用 TCM 0x78200000存储器位置。  

    但是、在 R5F 本地视图中、这些存储器仅从0x00开始。

      

    请对两个应用程序使用两个计时器实例。

    此致、

    Anil。

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

    尊敬的 Anil:

    感谢您的讲解。  我已经成功地在两个内核上同时运行 FreeRTOS "Hello World"!

    现在、我为这两者都使用了计时器8、它可以正常工作。 我将尝试使用单独的计时器。

    感谢大家的帮助。

    此致、

    Eli