第14章 無線LAN(AWL13) 用 Linux デバイスドライバーのビルド

本章では、無線LANモジュール Armadillo-WLAN(AWL13)用のデバイスドライバーソースコードを作業用PCでクロスビルドし、カーネルモジュールを作成する方法について記載します。

事前に 11章開発環境の準備 を参照して、作業用PCに開発環境が構築されている必要があります。

14.1. ソースアーカイブ取得

AWL13 用のデバイスドライバーソースアーカイブ awl13-[version].tar.gzを取得します。ソースアーカイブはArmadilloサイト(http://armadillo.atmark-techno.com)または、付属DVD-ROMから取得可能です。

14.2. カーネルの準備

AWL13 用のデバイスドライバーソースコードをビルドするためには、ビルド済みのカーネルソースコードが必要です。12章カーネルのビルド を参照してカーネルソースコードをビルドします。以下のコンフィギュレーションが有効になっている必要があります。[10]

  • CONFIG_MMC

  • CONFIG_SYSFS

  • CONFIG_WIRELESS_EXT

14.3. ビルド

「ソースアーカイブ取得」で取得したソースアーカイブを展開し、ビルド環境にあわせたパラメーターを設定しビルドを行います。「カーネルの準備」でビルドしたカーネルソースコードが~/linux-2.6.35-a800eva-[version]に配置されている場合、以下のコマンドを実行します。

1[PC ~]$ tar zxvf awl13-[version].tar.gz
2[PC ~]$ cd awl13-[version]
3[PC ~/awl13-[version]]$ AWL13_DEVICE=SDIO make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- KERNELDIR=~/linux-2.6.35-a800eva-[version]
make -C ../linux-2.6.35-a800eva-[version]/ M=/home/atmark/aerial-awl13 modules
make[1]: ディレクトリ `/home/atmark/linux-2.6.35-a800eva-[version]' に入ります
  CC [M]  /home/atmark/aerial-awl13/src/awl13_log.o
  CC [M]  /home/atmark/aerial-awl13/src/awl13_sdiodrv.o
  CC [M]  /home/atmark/aerial-awl13/src/awl13_ioctl.o
  CC [M]  /home/atmark/aerial-awl13/src/awl13_fw.o
  CC [M]  /home/atmark/aerial-awl13/src/awl13_sysfs.o
  CC [M]  /home/atmark/aerial-awl13/src/awl13_wid.o
  LD [M]  /home/atmark/aerial-awl13/src/awl13_sdio.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/atmark/aerial-awl13/src/awl13_sdio.mod.o
  LD [M]  /home/atmark/aerial-awl13/src/awl13_sdio.ko
make[1]: ディレクトリ `/home/atmark/linux-2.6.35-a800eva-[version]' から出ます
4[PC ~/awl13-[version]]$ ls src/awl13_sdio.ko
  awl13_sdio.ko

1

AWL13 のソースコードアーカイブを展開します

2

ソースコードディレクトリに移動します

3

ビルドを実行します

4

カーネルモジュール awl13_sdio.ko が作成されます

図14.1 AWL13ドライバーのビルド


[ティップ]

AWL13_DEVICEには、ホストインターフェースを指定します。Armadillo-800 EVAでは、AWL13がSDIO起動モードで動作するよう設定されています。

14.4. インストール

AWL13 用カーネルモジュールを、内蔵ストレージの Debian GNU/Linux システムにインストールします。事前に9章SDブートの活用を参照して、Debian GNU/Linux を SD ブートしている必要があります。

「ビルド」で作成したAWL13 用カーネルモジュールはカレントディレクトリ以下にあることを想定しています。

[armadillo ~]# ls
awl13_sdio.ko
1[armadillo ~]# mount /dev/mmcblk0p2 /mnt
2[armadillo ~]# cp awl13_sdio.ko /lib/modules/$(uname -r)/awl13/
[armadillo ~]# umount /mnt

1

eMMCパーティション2をマウントします。

2

eMMCパーティション2の/lib/modules/$(uname -r)/awl13/以下にカーネルモジュールをコピーします。

図14.2 AWL13 用カーネルモジュールのインストール




[10] Armadillo-800 EVAのデフォルトのコンフィギュレーションでは有効になっています。