2011-12-07 6 views
6

組み込みデバイス用の最小限のLinuxを作成しようとしています。つまり、カーネルとドライバをコンパイルする必要があります。 1つのドライバは、作成者がデバイスのボード用に直接書き込むため、リポジトリではありません。これはカーネルモジュールとしてコンパイルできます。モジュールではなくカーネルの一部としてドライバをコンパイルする

しかし、Linuxの不変の性質とメモリのごくわずかな使用のために、私はモジュールを使いたくありません。私はすべてのドライバをカーネルに組み込みたい。そしてカーネルに付属のドライバはすべてこのように設定しました。

私の問題は、その1つの特別なドライバをカーネルにコンパイルする方法です。

すべての検索では私に解決策が提供されていません。すべてがモジュールとしてのみコンパイルされています。

ありがとうございました。

+0

モジュールをカーネルソースツリーに置き、それを含むようにMakefileの一部を修正する必要があります。私は、しかし、具体的には不明です。どのモジュールを使用していますか? –

+0

家庭用のドライバーです。私はそれをカーネルソースに追加する必要があることを知っています。しかし、私はいくつかの詳細、メークファイルの変更方法などが必要です。 –

+1

[Insert linux kernel module static]の重複の可能性があります(http://stackoverflow.com/questions/7353851/insert-linux-kernel-module-statically) –

答えて

5

ドライバソースをカーネルソースツリーに置き、メイクファイルを更新する必要があります。これは1.1から1.3のステップでどのように動作するかを見ることができますhere

ユーザレベルのソフトウェアがデバイスドライバと話している場合は、おそらくシステムコール経由で行われます。ドライバのソースを検索してasmlinkageを探していれば、システムコールを追加しようとしています。上のドキュメントの残りの部分では、それらの設定方法について説明します。少なくとも2つのファイルを変更する必要があります(カーネルのバージョンによって多少異なる場合があります)。

デバイスドライバがカーネルと直接話している場合は、割り込み、メモリマップI/O、またはDMAを扱います。正直言って私はあなたのドライバのソースファイル内で処理できるかどうかはわかりません(その場合は良いことです)か、ソースツリー内の他のファイルを変更する必要があるかどうかはわかりません。 Thisはそのようなもののための良いリソースです。

幸運

関連する問題