多核ARM:如何将关键任务分配给一个专用核

多核ARM:如何将关键任务分配给一个专用核,arm,embedded,multicore,rtos,Arm,Embedded,Multicore,Rtos,假设有一个嵌入式系统项目,我有一个多核ARM处理器(为了简单起见,假设两个内核之间有一个非共享缓存)。假设我的系统包含一个关键任务和几个非关键任务 因此,我可以将关键任务专门分配给“核心1”吗?和所有其他的“核心2”独家 如果是这样,从实现的角度来看,如何做以及最佳实践是什么[假设我使用C]?我应该使用图书馆吗(如果是的话,是哪一个)?RTOS?好的,我看到你在EE板上也问了这个问题。他们的回答和我想给你的一样。使用某种操作系统来处理线程亲缘关系。如果您的RTO或您拥有的任何东西都不支持这一点,

假设有一个嵌入式系统项目,我有一个多核ARM处理器(为了简单起见,假设两个内核之间有一个非共享缓存)。假设我的系统包含一个关键任务和几个非关键任务

因此,我可以将关键任务专门分配给“核心1”吗?和所有其他的“核心2”独家


如果是这样,从实现的角度来看,如何做以及最佳实践是什么[假设我使用C]?我应该使用图书馆吗(如果是的话,是哪一个)?RTOS?

好的,我看到你在EE板上也问了这个问题。他们的回答和我想给你的一样。使用某种操作系统来处理线程亲缘关系。如果您的RTO或您拥有的任何东西都不支持这一点,那么研究一下它,看看它实际上是如何处理进程/线程调度的

通常,系统上的每个CPU都会被分配某种线程来处理任务调度。这个线程是操作系统设置的第一件事情之一。请随意研究一些微内核,看看如何为您的特定处理器做到这一点。您还可以在特定CPU的ARM文档中找到设置此线程的秘诀

但是,我有点冒险,假设这远远超出了给你的任何项目任务的范围。我希望你在所得到的东西中有某种亲和力。为已知操作系统设置关联只需几秒钟。在完全没有操作系统的裸机系统上设置亲缘关系要复杂得多

原始问题:

如果您不需要实时功能,您可以在带有Linux内核的设备上轻松实现


请参见此问题

您应该能够为正在运行的线程设置核心关联,以确保操作系统将其放置到所需的核心上。有id寄存器,您当然可以将代码隔离到一个核心,如果id寄存器=core0,则else执行其他操作。但是…如果是裸机,如果不是裸机,那么你需要知道你正在使用的操作系统是如何工作的,这是一个不同的问题,和/或可能是操作系统没有这个功能。这是一个太宽泛的问题,但从技术角度来看,是的,你可以做这样的事情。“两个核心之间的非共享缓存”-你的意思是,每个核心都有自己的私有缓存?@Vroomfondel Yeah[在二级和三级]非常感谢michael,实际上你的答案比EE中的答案更详细。我很快就会把这件事标记为已解决。