日本Androidの会 金沢支部 出村成和

HALドライバを作成する

 次に、Androidから学習リモコンを操作できるように、HALドライバを作成します。HALとは、Hardware Abstraction Layerの略で、ハードウエアを抽象化するライブラリを指します。AndroidでいうHALは、デバイス特有の機能に対して「Android Framework」から簡単にアクセスできるようにする「ラッパー」という位置付けです。HALで扱うハードウエアは、GPS(Global Positioning System)や バイブレータなどがあります。

 では実際にPC-OP-RS1を扱うライブラリを作成してみましょう。先ほどの/hardwareディレクトリ以下には「libhardware」ディレクトリと「libhardware_legacy」ディレクトリがありますが、今回はlibhardwareディレクトリ内に構築していきます。今回のライブラリ名は、「pcremocon」です。作成するファイルおよび構成は図7のようになります。

図7●ファイル配置
図7●ファイル配置

 ビルド方法は前々回と同じです。最初にターゲットとするハードウエアを「TARGET_PRODUCT」環境変数で指定し、かつ便利なコマンド群が利用できるようにするスプリプト「envsetup.sh」を使ってビルド環境を整えます。

% export ANDROID=Androidソースコードを置くディレクトリ 
% export TARGET_PRODUCT=omap3beagle 
% source ./build/envsetup.sh 

 その後、ライブラリとテストのディレクトリに移動しビルドします。ファイルの依存関係も考慮しビルドは、最初に「modules」を実施し、次に「tests」を行います。

% cd $ANDROID/hardware/libhardware/modules/pcremocon/ 
% mm  ← ライブラリのビルド
% cd $ANDROID/hardware/libhardware/tests/pcremocon-recv-test/ 
% mm  ← 受信テストのビルド
% cd $ANDROID/hardware/libhardware/tests/pcremocon-send-test/ 
% mm  ← 送信テストのビルド

 ビルド後、ライブラリは「out/target/product/beagleboard/system/lib」ディレクトリに、テストの実行ファイルは「out/target/product/beagleboard/system/xbin」ディレクトリに生成されます。ライブラリは、SDカードの「android-sys」領域の/system/libディレクトリに、テストの実行ファイルは、/system/xbinディレクトリにコピーします。