对于x86,相同(实模式)引导程序几乎可以在任何x86设备上运行。 这是可能在ARM上还是我需要为每个'cortex'创建一个特定的引导加载程序?
答案 0 :(得分:1)
x86或者说PC兼容系统与... pc兼容。它们支持古老的bios调用,因此存在大量兼容性。按设计,由芯片供应商(intel)提供软件供应商(BIOS,操作系统)和主板供应商。
ARM现在的形状或形式就是这样。您可以选择几乎或一直工作的指令集,但请记住您购买ARM内核的ARM系统并将其添加到您的特殊芯片,您和您的特殊/定制的东西,然后放在一个或多个不同的板。几乎没有兼容性。指令集和arm核心是整个图片的一小部分,大部分代码都是针对非arm的东西。
u-boot和其他人可能是相当庞大的引导程序,本身就是一个操作系统,并且必须像操作系统一样移植到每个芯片/电路板组合中。芯片供应商,如果这是一个Linux兼容系统,很可能有一个参考设计和一个BSP,包括一个u-boot端口和/或其他一些解决方案(rasberry pi就是一个很好的例子)。启动linux或以前是相当简单的,没有理由进行大规模过度复杂的u-boot。没有DTB,你设置一些内存位置一个或两个寄存器并分支到内核,就是这样(再次看看覆盆子pi),我假设用DTB你构建dtb然后把它放在某个地方,设置几个寄存器并分支到linux内核(raspberry pi?ntc芯片?)答案 1 :(得分:0)
有一个Arm开源项目,可以涵盖Armv7 / v8 Cortex-A处理器的引导加载程序。
另一个针对Cortex-M处理器的开源项目: