看看在Makefile
同一个目录下。对于mach-mx31ads.c,它有,
# i.MX31 based machines
obj-$(CONFIG_MACH_MX31ADS) += mach-mx31ads.o
Kconfig 有对应的入口,
config MACH_MX31ADS
bool "Support MX31ADS platforms"
default y
select IMX_HAVE_PLATFORM_IMX_I2C
select IMX_HAVE_PLATFORM_IMX_SSI
select IMX_HAVE_PLATFORM_IMX_UART
select SOC_IMX31
help
Include support for MX31ADS platform. This includes specific
configurations for the board and its peripherals.
添加这些将为您的开发板提供一个 Kconfig 菜单项并构建文件。唯一缺少的其他部分是机器类型。您需要使用gen-mach-types脚本将其添加到由内核 makefile 处理的arm/tools/mach-type中,以创建生成的/mach-type.h。你在你的板文件中使用它来创建一个静态机器描述(放在一个特殊的部分)。
MACHINE_START(MX31ADS, "Freescale MX31ADS")
/* Maintainer: Freescale Semiconductor, Inc. */
.atag_offset = 0x100,
.map_io = mx31ads_map_io,
.init_early = imx31_init_early,
.init_irq = mx31ads_init_irq,
.init_time = mx31ads_timer_init,
.init_machine = mx31ads_init,
.restart = mxc_restart,
MACHINE_END
该machine_desc
结构位于arch.h中。您不需要添加所有元素,因为如果不存在它们将不会被调用。内核 init 看起来是机器 ATAG 并遍历这些部分以匹配引导加载程序传入的机器。machine_desc
在 linux 引导的早期就在汇编程序中完成定位。