1

大多数ARM 双核或多核系统中,异常/向量表似乎只有一个和一个——@典型的 0x0000 或 0xffff0000 地址。一个例外(没有双关语:-)似乎是 cortex-M3,其中有一个寄存器 VTOR(大概是每个内核)有一个变量/动态异常/向量表基地址。

而英特尔 x86 多核架构支持多个 IDT(每个单独内核的多个 IDTR 寄存器)。

因此,如果我们要设计一个新的操作系统(中断处理方案),我发现当 GIC 中断任何一个逻辑时,我们不能为不同的内核、单个异常(比如 FIQ)有不同的 ISR,这有点限制ARM 内核

当然,可以说可以链接和/或共享中断,使用自旋锁之类的同步机制,但同样……对我来说似乎是一种限制。

为什么 ARM 不将此作为所有最新 ARM 多核/版本的标准功能(如 cortex-M3 VTOR)?

有什么想法吗?

4

1 回答 1

2

与任何可执行代码位置一样,向量的地址都受 MMU 转换的影响,因此您可以将它们放在物理内存中的任何位置。可能您甚至可以为不同的内核使用不同的向量(通过不同的 MMU 表)。Linux 使用“高向量”位,将它们置于 0xFFFF0000,但简单的 ARM 机器不太可能拥有超过 3GB 的 RAM。

另请参阅重定位 ARM 异常向量?

于 2013-07-26T11:53:19.877 回答