我想用一个嵌入式 Linux 内核支持两个类似的硬件平台。内核是否支持多种struct machine_desc
结构?这种结构的实例通常使用板的 C 定义文件中的MACHINE_START
和MACHINE_END
宏来定义。
有一种机制可以将MACH_TYPE
引导加载程序传递给内核,因此内核可以支持多台机器似乎是有道理的。有什么特别需要做的吗?
我花了一些时间查看内核代码(版本 2.6.33),ARM 架构支持同一内核中的多台机器。但是我不确定其他架构是否可以。这是它的工作原理
CONFIG_MACH_TYPE_*
需要在配置文件中设置相应的值。构建后,内核将根据源代码中包含的mach-types版本生成所有机器宏。机器定义的源代码也将被编译到内核中。r1
启动时,引导加载程序需要在启动内核之前将相应的机器类型编号(即 mach-types 的最后一列中的编号)放入寄存器中。r1
传递到__lookup_machine_type
以查找机器定义并初始化板。