ソフト・マクロのCPUでLinuxを動かす(後編) ──OSの実装とネットワーク対応機器への応用
● ソフトウェアの開発
今回のソフトウェアは,ネットワーク側から受信した画像データをそのままLCDモジュールに書き出すだけのシンプルな構成とすることにしました.
1)LCDデバイス・ドライバ(suzaku_lcd.c)
LCDモジュールのデバイス・ドライバを,表3の仕様で作成します.
このデバイス・ドライバ内で使用している代表的なカーネル・コールを表4にまとめます.このドライバを,カーネルに静的に組み込んで使用します.
2)アプリケーション部
実際にネットワークから画像データを受信するアプリケーション部は,netcat(nc)というオープン・ソースのアプリケーションをそのまま使用します.具体的には,このアプリケーションをlistenモードで起動して,出力をLCDデバイスにリダイレクトするように設定するだけで,必要な仕様を満たすことができます.動作のようすを写真2に示します.
実際の機器の開発では,もちろん専用のアプリケーション・プログラムの開発が必要になります.
表3 デバイス・ドライバの仕様
デバイス・ドライバ名 | suzaku_lcd |
デバイス・ノード名 | /dev/suzaku_lcd |
デバイス・タイプ | キャラクタ・デバイス |
ドライバ初期化時動作 |
|
ドライバ開放時動作 |
|
writeメソッド |
|
ioctlメソッド |
|
表4 使用するカーネル・コール
カーネル・コール
|
内 容
|
kmalloc | カーネル内でのメモリ確保 |
kfree | カーネル内でのメモリ開放 |
register_cherdev | キャラクタ・デバイスの登録 |
unregister_chrdev | キャラクタ・デバイスの解除 |
copy_from_user | ユーザ空間からカーネル空間へのデータ・コピー |
写真2 LCD表示のようす