TOPICS

トピックス

2021年10月【Variscite】VarisciteのSystem On Module向けカーネル・コンフィギュレーション・ガイドに付いて解説します。

Varisciteカーネル構成(コンフィギュレーション)ガイド入門

序章

System On Module用にカスタムキャリアボードを設計した後、お客様が最初
に行うソフトウェアタスクの1つは、Linuxカーネルに次に示すサポートを
追加することです。
1.Linuxカーネルに新しいデバイスツリーファイルを追加
2.デバイスをデバイスツリーへ追加
3.各デバイスのドライバーをカーネル構成で有効化

このガイドでは、Linuxカーネルでデバイスドライバーを有効にする方法を示します。
デバイスツリーに新しいデバイスノードを追加する方法については、Varisciteの
Varisciteデバイスツリー入門」ガイド(日本語)をご覧ください。

カーネルDefconfig

defconfigファイルは、カーネル構成の最小表記で、組込みまたはモジュール
としてコンパイルされるドライバーリストが含まれています。
組み込みドライバーは、カーネルバイナリ(Image.gz/zImage/uImage)に
含まれています。
ドライバモジュールは“.ko”ファイルにコンパイルされ、“/lib/modules/…”の
下のルートファイルシステムにインストールされます。

Linuxカーネルソースツリー内のdefconfigファイルの場所は、SoCアーキテクチャに
よって異なります。

・32ビットプロセッサの場合: arch/arm/configs
・64ビットプロセッサの場合: arch/arm64/configs

例えば、VarisciteのDART-MX8M-MINIおよびVAR-SOM-MX8M-MINIのdefconfigファイルは、
次の場所にあります。

arch/arm64/configs/imx8_var_defconfig

defconfigファイルには、使用可能なドライバーリストが含まれています。 例えば:

# CONFIG_CXD2880_SPI_DRV is not set
CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=m
CONFIG_CRC_ITU_T=m
CONFIG_CRC7=m
CONFIG_DMA_CMA=y

各ドライバーには、次の3つの構成オプションがあります。

“is not set” コンパイルされません
“=m” モジュール(.koファイル)としてコンパイルされインストールされます
“=y” 組込みとしてコンパイルされインストールされます


前述のように、defconfigファイルはカーネル構成の最小表記であるため、使用可能な
すべてのドライバーを明示的にリストする訳ではありませんが、完全な構成を表すため
にデフォルト値とドライバー依存関係に依存しています。

構成(コンフィギュレーション)ファイルの編集

1.Defconfigファイルを直接編集することはお勧めしません。代わりに、
「menuconfig」Makeターゲットを使用してカーネルを構成する必要があります。
以下は、VarisciteのDART-MX8M-MINI/VAR-SOM-MX8M-MINIのカーネルを構成するプロセス
を示しています。
https://variwiki.comにアクセスし、使用するSOMとYoctoリリースをクリックしてから、
“Build the Linux kernel from source code”リンクをクリックします。
そのページの指示に従って、カーネルソースコードをダウンロードし、ブランチを変更して
クロスコンパイラーを構成します。

例えば、DART-MX8M-MINI/VAR-SOM-MX8M-MINI Yocto Hardknottリリースのリンクは次のとおりです。
https://variwiki.com/index.php?title=Yocto_Build_Linux&release=RELEASE_HARDKNOTT_V1.0_DART-MX8M-MINI

2.ターゲットボードのデフォルトのdefconfigファイルを使用してカーネルを構成します。
この例では、次のコマンドを使用します。

$ make imx8_var_defconfig

このコマンドは、Linuxカーネルソースツリーのルートに、imx8_var_defconfigに基づいて
.configと呼ばれる完全な構成ファイルを作成します。
これで、すべての変更が.configファイルに加えられます。

3.menuconfigを使用して、構成ファイルに変更を加えます。

$ make menuconfig

ターミナルウィンドウに以下のメニューが表示されます 。

図1:カーネルmenuconfig画面

「デバイスドライバ」項目内に、使用可能なすべてのドライバが各ドライバの左側にある
チェックボックスとともに一覧表示されます。
オプションは次の通りです。
[ ] – コンパイルされません。
[M] – モジュールとしてコンパイルされインストールされます。
[*] – 組み込みとしてコンパイルされインストールされます。

ドライバの選択を変更した後、構成ファイルを保存して終了します。
新しい構成が.configファイルに書き込まれます。

4.makeコマンドでカーネルを構築します。 これにより、カーネルイメージ、モジュールおよび
デバイスツリーが構築されます。

$ make -j$(nproc)

カーネルを構築した後、バイナリ(Image.gz/zImage/uImage)はarch/arm64/boot/ に配置されます。
また、コンパイルされたデバイスツリーblob(.dtbファイル)は、
arch/arm64/boot/dts/freescale/imx8* に配置されます。

モジュールをルートファイルシステムにインストールするには、次のコマンドを実行します。

$ make modules_install INSTALL_MOD_PATH=path_to_the_target_rootfs

5.変更をdefconfigファイルに保存します

menuconfigを使用して変更を加えた後、新しい構成は.configに保存されます。
変更を永続的にするには、arch/arm64/configs/imx8_var_defconfig を更新し、Gitにコミットします。

$ make savedefconfig
$ mv defconfig arch/arm64/configs/imx8_var_defconfig
$ git add arch/arm64/configs/imx8_var_defconfig
$ git commit –m “commit message”

defconfigでドライバーを見つけて有効化する

カーネル内のドライバーを見つけるには、まずドライバーとドキュメントディレクトリで
デバイスモデルを検索することから始めるのが最善です。
ドライバファイル名は、カーネル構成オプションを見つけるために使用できます。

次の例は、一部のVariscite評価キットで使用されるds1337リアルタイムクロックのドライバーを
見つけて有効にする方法を示しています。

1.「drivers」ディレクトリでデバイスを検索します。

$ grep -ir –include “*.c” “ds1337” ./drivers

これにより、次の一致する多数のファイルが生成されます。

drivers/rtc/rtc-ds1307.c

2..cファイルと同じディレクトリにあるMakefileを検索して、構成文字列を見つけます。

$ grep “rtc-ds1307” drivers/rtc/Makefile obj-$(CONFIG_RTC_DRV_DS1307) += rtc-ds1307.o

3.menuconfigを使用してCONFIG_RTC_DRV_DS1307を有効化します

$ make menuconfig

“/”と入力して、カーネル構成オプションを検索します

“CONFIG_RTC_DRV_DS1307”と入力して< OK >を選択すると、検索結果が表示されます。

最初の検索結果を選択するには、“1”と入力してドライバーが有効になっていることを確認します。

ドライバが有効になっていない場合は、[*]または[M]を選択し、終了して保存してください。
必要なすべての依存関係も選択され、新しい構成が.configファイルに書き込まれます。

4.変更を arch/arm64/configs/imx8_var_defconfig に保存します。

$ make savedefconfig $ mv defconfig arch/arm64/configs/imx8_var_defconfig

5.カーネルイメージ、モジュール、およびデバイスツリーを構築します。

$ make -j$(nproc)

次のステップ

USBデバイスなど、自動的に検出できるデバイスの場合、カーネル構成でドライバーを有効にするだけ で十分な場合があります。 ただし、多くのデバイスでは、1つ以上のノードをデバイスツリーに追加する必要があります。 Linuxデバイスツリーの編集方法の詳細については、Varisciteの 「Varisciteデバイスツリー入門」ガイド(日本語)、またはVarisciteの各モジュールとサポート されているオペレーティングシステムの詳細なガイドを提供するVarisciteのソフトウェアウィキに アクセスしてください。

関連リソース (英語)

ウェビナー:VarisciteSOMのデバイスツリー入門 (Getting Started with Device Tree on Variscite SOMs)

ブログ投稿:i.MXデバイスツリーのPinmux設定 (i.MX Device Tree Pinmux Settings)

ブログ投稿:Varisciteカーネル構成ガイド(Variscite Kernel Configuration Guide)

ブログ投稿:カスタムYoctoBSPレイヤーの作成(Variscite Kernel Configuration Guide)

2016y02m19d_112136818

RECRUIT

一緒に働ける仲間を募集中!

半導体流通市場も大きく広がっていき、さらに成長を続けています。
自分の能力を存分に発揮したいという方、
エレクトロニクス分野で活躍したい方 企業家・事業化精神に
あふれた方、想いにお応えできるフィールドがあります。

CONTACT US

製品に関するお問合せ

製品の他にも、サービスに関する事、PRに関するご質問等、
承っております。みなさまからのお問合せについては、
以下の窓口よりお受けしております。
お気軽にご連絡ください。

EMAIL NEWS

Eメールニュース購読者募集中!

新規取扱い製品や新製品など、アロー・エレクトロニクス・ジャパン株式会社の最新情報をお届け!

pageTop

© 2017 Arrow Electronics Japan KK. All Rights Reserved