0

我想用一个嵌入式 Linux 内核支持两个类似的硬件平台。内核是否支持多种struct machine_desc结构?这种结构的实例通常使用板的 C 定义文件中的MACHINE_STARTMACHINE_END宏来定义。

有一种机制可以将MACH_TYPE引导加载程序传递给内核,因此内核可以支持多台机器似乎是有道理的。有什么特别需要做的吗?

4

1 回答 1

0

我花了一些时间查看内核代码(版本 2.6.33),ARM 架构支持同一内核中的多台机器。但是我不确定其他架构是否可以。这是它的工作原理

  1. 对于内核要支持的每一种板卡类型,都CONFIG_MACH_TYPE_*需要在配置文件中设置相应的值。构建后,内核将根据源代码中包含的mach-types版本生成所有机器宏。机器定义的源代码也将被编译到内核中。
  2. r1启动时,引导加载程序需要在启动内核之前将相应的机器类型编号(即 mach-types 的最后一列中的编号)放入寄存器中。
  3. 在初始化期间,内核将机器类型号从寄存器r1传递到__lookup_machine_type以查找机器定义并初始化板。
于 2012-08-17T14:58:31.817 回答