在ARM体系结构中,有一个低向量地址0x0和高向量地址0xFFFF0000.我想知道为什么可能需要两个向量地址?在英特尔微处理器和微控制器中,有一个向量地址.
有2个向量地址有什么特别的理由吗?
一些微控制器系列具有多个不同的起始地址和/或它们使用相同的地址并基于带引脚切换输入和输出地址解码,以便您可以从供应商或用户创建的一个引导加载程序启动bootloader或用户应用程序.(允许你恢复通常是砖砌的系统).
你可以设想同样的事情.想想这些微控制器如何通过必须在核心外工作来改变用于启动的闪存库.通过在内核上使用此引脚,您可以在不同的地址使用备用引导加载程序,此引导加载程序可用于重新编写/管理/开发/救援主应用程序.
你也可以避免使用rom/ram向量地址.例如,你从高向量上的flash启动并且ram为0,然后你可以将程序加载到ram或至少一个运行时特定的向量表,然后切换位(可能必须从蹦床反弹到达那里,我不记得我们没有在我们的芯片中使用高矢量).
不是说这就是ARM为什么这样做的原因,但如果没有别的东西可以为供应商提供简单的救援方案.一些供应商救援方案或备用引导方法过于复杂.我实际上想看到arm和其他人有几个,至少有两个信号给出四个地址可能是0x00000000,0x40000000,0x80000000,0xC0000000,那种东西还是0x00000000,0x80000000,0xFFFF0000,0xFFFF8000.在许多内核上执行类似的操作,尤其是cortex-m,您可能会看到芯片供应商开始使用它而不是他们自己的方案,并且当在供应商之间从一个芯片移动到另一个芯片时,这将不那么痛苦在同一供应商产品线内.