最初は、1バイトのディジタル値の入力に使用している単純変数をそのまま配列
変数に変更することにする。配列変数にしておけば、後で要素数を変更すること
によって1バイト以上のデータを入力することが可能になるからである。
配列変数を使って1バイトのデータを入力するdio_read関数と
dio_tstプログラムを作成する。
現在のプログラムを変更する前に、実験の失敗に備えて、これを保存しておく。
dio_read関数が宣言している単純変数の
を
配列変数の
に変更する。
この変更に対応して、バイトデータを読み込む処理の
を配列変数にふさわしい形式に変更すること。
また、カーネル空間のデータをユーザ空間へコピーする処理の
も配列変数にふさわしい形式に変更すること。
変更が終わったらmakeでコンパイルする。
つぎのように、前のドライバを削除し、新しいドライバを格納する。
# rmmod dio_drv
# insmod dio_drv.o
次に、アプリケーション(テストプログラムdio_tst.c)も変更する。
dio_tst.cが宣言している単純変数の
を
配列変数の
に変更する。
この変更に対応して、readシステムコールの
を配列変数にふさわしい形式に変更すること。
また、データを画面表示する処理の
も配列変数にふさわしい形式に変更すること。
変更が終わったらmakeでコンパイルする。
コンパイルでエラーが出なければ、実行可能イメージとしてのdio_tstア
プリケーションが生成されているので、念のためlsコマンドで確かめる
こと。
CHK-2101(スイッチ & LEDテストボード)の入力スイッチ1から8までを使って、任
意のディジタルデータを設定する。
例えば、スイッチ1とスイッチ8までを全てONにして、次のように
# ./dio_tst
を実行すれば、
[dio_open] ga Yobareta.
[dio_read] ga Yobareta.
read data = FF h
read data = 255 d
[dio_release] ga Yobareta.
|
と表示されるはずである。