gpt4 book ai didi

arm - 中断在多核系统中是如何工作的?

转载 作者:行者123 更新时间:2023-12-03 19:55:15 30 4
gpt4 key购买 nike

我想为Raspberry pi 2上的按钮中断编写代码。该板使用四核Broadcom BCM2836 CPU(ARM架构)。这意味着,该板上只有一个 CPU(Raspberry pi 2)。但是我不知道在多核系统中如何中断。我想知道中断线是连接到每个内核还是一个CPU。所以,我通过谷歌找到了下面的段落。

多核系统中断
在多核系统上,每个中断都指向一个(并且只有一个)CPU,尽管与哪个无关。这是如何发生的由板上的可编程中断 Controller 芯片控制。当您在系统启动时初始化 PIC 时,您可以对它们进行编程以将中断传送到您想要的任何 CPU;在某些 PIC 上,您甚至可以让中断在每次关闭时在 CPU 之间循环。


这是否意味着每个 CPU 都会发生中断?我无法完全理解上述信息。如果每个内核发生中断,我必须考虑按钮的每个中断服务例程上共享数据的临界区。

如果每个 CPU 发生中断,我就不必考虑共享数据的临界区。什么是正确的?

总结一下,我想知道在多核系统中如何中断?中断线是连接到每个内核还是CPU?那么,我是否应该考虑相同中断的临界区?

最佳答案

你从谷歌的报价看起来很一般,甚至可能依赖于 x86 的大小,但如果是这种情况,这并不重要。

我当然希望你能够控制每个 cpu 的中断,这样你就可以让一种类型转到一种类型,另一种类型转到另一种类型。

同样,如果您需要,可以选择将所有这些都打断。

中断与共享资源无关,无论是否在 ISR 中,您都必须处理共享资源,因此中断无关紧要,您必须处理它。能够将中断从一个外设隔离到一个 cpu 可以使共享更容易,因为您可以让一个 cpu 拥有资源,而其他 cpu 向拥有它的 cpu 发出请求,例如。

双核、四核等无关紧要,将每个核视为单个 cpu,它就是这样,并像处理单个 cpu 一样解决中断问题。再次共享资源是共享资源,在中断期间或不在中断期间。解决一个cpu的问题,然后处理任何共享。

作为 ARM,每个芯片供应商的实现可能会有所不同,因此不可能有一个通用的答案,您必须阅读 arm 核心的 arm 文档(如果可能,特定版本可能/确实有所不同)以及芯片供应商文档,了解他们在 arm 核心周围的任何内容。在这种情况下,作为博通,芯片供应商文档祝你好运。它们充其量是有限的,尤其是 raspi2。您可能需要深入研究 linux 源代码。不管是什么,arm、x86、mips等等,你只需要阅读文档并做一些实验。首先将每个内核视为独立的 CPU,然后根据需要处理资源共享。

如果我没记错的话,默认情况是只有第一个内核在 SD 卡上运行 kernel7.img,其他三个内核在循环中旋转,等待写入地址(每个都有自己的地址)以让它们跳转并开始做其他事情。所以你真的可以从一个单一的 CPU 开始,不共享,然后弄清楚,如果你选择在其他 CPU 上没有接触该资源的代码,那就完成了。如果你这样做,那么弄清楚如何共享资源。

关于arm - 中断在多核系统中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33955582/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com