我正在使用 IMXRT1170-EVK 评估套件,能够让 CM7(主要)和 CM4(次要)简单应用程序在 FreeRTOS 上运行。
在我的简单测试应用程序中,每个 CM7 或 CM4 都有独立的任务运行,以 1000 毫秒延迟切换 GPIO,并将消息输出到单独的 UART。
CM7 通过 UART1 输出信息,CM4 将信息输出到 UART12。
下面的快照显示了我的 CM7 和 CM4 时钟配置。
我的 freeRTOS 配置在 CM7 和 CM4 上是相同的,它们将相应的系统节拍设置为 5 毫秒周期。
freeRTOS 配置的 CM4 部分:
FreeRTOS 配置的 CM7 部分:
这是 CM7 任务和 CM4 任务中 GPIO 切换的范围输出。
您可以看到 CM7 的切换时间为 1 秒,这是正确的,而 CM4 的切换速率对于 1 秒切换来说大约慢 2.6 倍。
CM7 打印消息和切换:
CM4 打印消息和切换:
我检查了一下,似乎相应的 CM7 和 CM4 正确获取了 SystemCoreClock。
有人可以帮我理解为什么对于相同的 vTaskDelay,Cm4 的切换速率比 CM7 慢 2.6 倍吗?
配置似乎有问题。
我的理解是每个 CPU 内核(M7 或 M4)都有自己的系统时钟节拍。
所以我的设置应该会产生正确的结果,除非 SystemCoreClock 是错误的。
在这一点上,我的想法不多了。你能帮忙吗?
请让我知道,如果需要,我可以压缩 CM7 和 CM4 项目并在此处发布。