21

Linux デバイスドライバーを開発しました。現在、Ubuntu 12.04 で arm 用のクロスコンパイラを使用してコンパイルし、arm Linux イメージで insmoding しています。しかし、それを Linux ソース コードに追加し、arm Linux の構成を通じて追加/削除するオプションを提供して、Linux ソース コード コンパイルでコンパイルできるようにする方法を学びたいですか?

何か案は?

4

3 に答える 3

47

arm アーキテクチャで独自のドライバをクロス コンパイルするには、以下で説明するいくつかの手順に従う必要があります。

  1. ドライバーのドライバー (Linux ソース コードにある) 内に my_drvr のようなディレクトリを作成し、このディレクトリ内にドライバー (my_driver.c) ファイルを配置します。次のようになります /linux_source_code/drivers/my_drvr/my_driver.c

  2. ドライバー ディレクトリ内に 1 つの Makefile を作成し (vi 任意のエディターを使用)、このファイル内にobj-$(CONFIG_MY_DRIVER) += my_driver.o このファイルを配置して保存します。これは次のように表示されます/linux_source_code/drivers/my_drvr/Makefile

  3. Kconfigドライバー ディレクトリ内 (vi 任意のエディターを使用) とこの put 内に1 つのファイルを作成します。

    config MY_DRIVER
    tristate "my driver" //ベンダー名などのドライバーの説明を提供します。
    ARMに依存
    ARM の場合はデフォルトの y
    ヘルプ
      私のドライバーモジュール。
  4. このファイルを保存すると、次のように表示されます/linux_source_code/drivers/my_drvr/Kconfig

  5. Linux ソース ドライバにとMakefileファイルの両方を追加し、 とにあるファイルを追加します。KconfigMakefileKconfig/linux_source_code/drivers/Makefile/linux_source_code/drivers/Kconfig

  6. Makefile の最後の行に以下を追加します

    obj-y += my_drvr/

    また

    obj-$(CONFIG_MY_DRIVER) += my_drvr/
  7. Kconfig ファイルの最後の行に以下を追加します

    ソース「drivers/my_drvr/Kconfig」
  8. 最後に、Kconfigファイルをアーキテクチャ固有の構成ファイルに追加する必要があります。これはkernel_source/arch/arm/configs/--defconfig、最後のこの行の下に追加されます

    CONFIG_MY_DRIVER=y

注:- 最後の手順はアーキテクチャによって異なるため、注意が必要です。これで、make コマンドを使用してドライバーをコンパイルできます。(例: sun7i_defconfig)

于 2013-10-30T11:07:13.270 に答える
7

デバイス ドライバーを配置するカーネル ソース サブディレクトリの Kconfig ファイルに構成オプションを追加する必要があります。また、そのディレクトリの Makefile に行を追加する必要があります。明らかに、ソース ファイルもそのディレクトリにコピーする必要があります。

ドライバーは ARM アーキテクチャに依存しているため、Kconfig では、次のように「依存する」オプションを配置する必要があります。

config SND_ARMAACI
tristate "ARM PrimeCell PL041 AC Link support"
depends on ARM_AMBA

Makefileは次のようになります

obj-$(CONFIG_SND_ARMAACI)   += snd-aaci.o
snd-aaci-objs       := aaci.o

したがって、カーネル ソース ツリーで make menuconfig を実行すると、Kconfig に配置した構成オプションが見つかり、それをカーネルにコンパイルするか、モジュールとしてビルドするか、またはまったくコンパイルしないかを選択できます。

ドライバーのサブシステム ディレクトリで例を探してください。

于 2012-07-30T17:35:41.257 に答える
3

パッチを作成し、カーネル tarball の解凍後、構成/コンパイルの前のステップとして、このパッチの適用を追加します。

于 2012-07-29T14:32:00.707 に答える