ARM的启动过程是什么?
|
众所周知,对于X86架构:按下电源按钮后,机器开始在0xFFFFFFF0处执行代码,然后开始在BIOS中执行代码以进行硬件初始化。执行BIOS后,它将使用引导加载程序将OS映像加载到内存中。最后,OS代码开始运行。
对于ARM体系结构,使用后按电源按钮的启动过程是什么?
谢谢!
没有找到相关结果
已邀请:
3 个回复
委婪绷冗诉
当发生异常时,处理器只是从一个特定的偏移量开始执行,因此通常该表包含单指令分支,这些分支指向代码中更进一步的完整处理程序。典型的经典向量表如下所示:
在运行时,向量表可以重定位到0xFFFF0000,通常将其实现为紧密耦合的内存范围,以实现最快的异常处理。但是,上电复位通常从0x00000000开始(但是在某些芯片中,可以通过处理器引脚将其设置为0xFFFF0000)。 新的微控制器模型用于Cortex-M芯片系列。那里,向量表实际上是0的向量表(指针),而不是指令。第一个条目包含SP寄存器的启动值,第二个条目是复位向量。由于处理器设置了堆栈,因此这允许直接用C写复位处理程序。同样,可以在运行时重新定位表。 Cortex-M的典型向量表如下所示:
请注意,在诸如OMAP3或Apple的A4之类的现代复杂芯片中,执行的第一段代码通常不是用户代码,而是片上Boot ROM。它可能会检查各种条件,以确定从何处加载用户代码以及是否完全加载用户代码(例如,可能需要有效的数字签名)。在这种情况下,用户代码可能必须符合不同的启动约定。
旅牢斯讲
奥李