ホームページ  >  記事  >  運用・保守  >  Linuxドライバーエンジニアが知っておくべきカーネル構成の知識

Linuxドライバーエンジニアが知っておくべきカーネル構成の知識

嵌入式Linux充电站
嵌入式Linux充电站転載
2023-07-31 15:51:411495ブラウズ

Linux カーネル構成システムの構成

Linux カーネルのソース コードは数多くあり、構成オプションは数千あります。そして構成は非常に大規模で複雑です。

必要な機能構成をより適切に選択できるように、Linux カーネル ソース コードは構成システムを構成します。

構成システムは 3 つの部分で構成されます:

  • Makefile: 全体的な構成のコンパイルを担当します
  • Kconfig: 構成オプションのソース
  • 設定メニュー

この設定システムは、make menuconfig:

Linuxドライバーエンジニアが知っておくべきカーネル構成の知識
# を実行すると表示されるグラフィカル インターフェイスです。

##カーネル Kconfig ファイル

Kconfig 階層関係

カーネル構成オプションのソース ファイルは

Kconfig ファイルです;

メイン オプションの構成ソース ファイルは次のとおりです: arch/$(ARCH)/Kconfigファイル###;###<p data-tool="mdnice编辑器" style="padding-top: 8px;padding-bottom: 8px;line-height: 26px;">main<code style='font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);'>Kconfig ファイルは他のディレクトリの Kconfig ファイルを呼び出し、他のディレクトリの Kconfig ファイルは次の Kconfig を呼び出します。すべてのレベルのサブディレクトリ。ツリー状の構成オプションを形成するファイル。

Kconfig 構文の概要

例: drivers/net/ usb/Kconfig、DM9601 メニュー:

Linuxドライバーエンジニアが知っておくべきカーネル構成の知識

config USB_NET_DM9601 メニュー項目 で、メニュー項目の下には があります。メニューの属性;

メニューはすべて config で始まり、途中にスペースがあり、メニュー項目は大文字で表記されます。

  • #tristate : プロンプト情報を示します。 設定メニューに表示される文字列
  • # によって異なります: 依存オプションを示します (このオプションは依存オプションが選択されている場合のみ選択できます)
  • select: このメニューが選択された後、自動的に選択されたメニュー
  • ヘルプ : ヘルプ テキスト;

Kconfig 構文の詳細なリファレンス: Documentation/kbuild /kconfig-langages.txt

.config ファイル

カーネル設定が完了すると、 ## に配置されます。 #kernel ソース コード トップ ディレクトリに .config ファイル を生成します;

.config ファイルを開くと、次の内容が表示されます:

Linuxドライバーエンジニアが知っておくべきカーネル構成の知識
ここでは、

「Davicom DM96xx based USB 10/100 Ethernet device」 オプションが構成で選択されており、「CONFIG_USB_NET_DM9601=」が生成されます。 .config ファイル。y" 構成情報。選択されていない場合は、"#" でコメントアウトされます。

カーネル Makefile ファイル

Kconfig と同じで、最上位に # があります##Makefileファイル。その機能は次のとおりです:

  • トップレベルの
    Makefileは、Linuxカーネル全体の構成とコンパイルを担当します。 #トップレベルMakefile
  • .config
  • ファイルを読み取り、
    .config ファイルの構成オプションに従ってカーネルをコンパイルします。 トップレベル makfile
    カーネル ソース コード内のすべてのサブディレクトリを再帰的に走査し、すべてのターゲット ファイルをコンパイルします;
  • Mekefile## があります# 各サブディレクトリ内のファイル、これらの
    Makefile
  • このファイルは、
  • .config
    ファイル内の情報を使用して、対応するファイルをコンパイルします; Makefile の例:
    Linuxドライバーエンジニアが知っておくべきカーネル構成の知識

    obj-$(CONFIG_USB_NET_DM9601) = dm9601.o

    以下と同等:

    obj-y = dm9601.o

    • obj-y は、dm9601.o ターゲット ファイルをカーネル dm9601 にコンパイルすることを意味します。 .o ターゲット ファイルは、dm9601.c または dm9601.S ファイル (
    • #obj-m) からコンパイルする必要があります。 はターゲット ファイルをモジュールにコンパイルすることを意味します

    カーネル設定のロード方法

    通常、各メーカーには独自の

    defconfig ファイルがあります。設定をロードするときは、make xxx_defconfig を実行するだけで、.config ファイルが作成されます。これは、設定がロードされたことを意味します。

    日々の開発プロセスでは、変更された .config の場合、通常、.config のコピーが元の xxx_defconfig で上書きされ、コードがアップロードされます。 。

#

以上がLinuxドライバーエンジニアが知っておくべきカーネル構成の知識の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は嵌入式Linux充电站で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。