Посмотрите на Makefile
in the same directory. Для маха-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 и создать файл. Единственным недостающим элементом является тип машины. Вам нужно добавить это к arm/tools/mach-type, который обрабатывается файлом make kernel, используя сценарий gen-mach-types, чтобы создать сгенерированный/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.
Взгляните на Kconfig и Makefile в http://lxr.free-electrons.com/source/arch/arm/mach-imx/?v=4.4. Например, Kconfig объявляет переменную MACH_MX31MOBOARD, и эта переменная используется в Makefile для создания конкретного кода платы. – alexander
На самом деле вы можете просто скорректировать информацию о платформе в драйвере устройства и использовать DT, когда хотите, чтобы они были настроены. – user3528438
@ user3528438 Отличная идея, это сэкономит мне много времени. Сделайте это ответом, и я приму это. – fadedbee