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に追加する必要があります。これはgen-mach-typesスクリプトを使用してカーネルmakefileによって処理され、/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のブートの非常に早い段階でアセンブラで行われます。
http://lxr.free-electrons.com/source/arch/arm/mach-imx/?v=4.4のKconfigとMakefileを見てください。たとえば、KconfigはMACH_MX31MOBOARD変数を宣言し、その変数はMakefileでボード固有のコードを作成するために使用されます。 – alexander
実際には、今のところプラットフォーム情報をデバイスドライバにハードコードしておき、設定可能にするにはDTを使用することができます。 – user3528438
@ user3528438素晴らしいアイデアは、これは私に多くの時間を節約します。それを答えると私はそれを受け入れるでしょう。 – fadedbee