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