next up previous
次へ: デバイスドライバの拡張 上へ: システムコールの再実装(dio_write) 戻る: ドライバの格納

アプリケーションの作成

Linuxのユーザ空間で動作させるアプリケーションを作成する。

処理内容としては、ビット単位の基本動作を確認するために、 CHK-2101(スイッチ & LEDテストボード)の任意のスイッチをONに して、それに対応するLEDを点灯する。合わせて32個のスイッチの どれをONにしたかを画面に表示することにする。

次のコードを記述し、dio_tst.cというソースファイルにする。

#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(void)
{
   int fd, i;
   ssize_t r_count, w_count;
   unsigned char buff[32];

   fd = open("/dev/pci2726c", O_RDWR);
   if (fd < 0) {
      printf("[open] no Shippai.\n");
      return -errno;
   }

   // INPUT SW1-SW32
   r_count = read(fd, buff, 32);
   if (r_count > 0){
      printf("read buff =");
      for (i = 0; i < r_count; i++){
         printf(" %x", buff[i]);
      }
      printf("\n");
   }
   printf("read count = %ld\n", r_count);

   // OUTPUT LED33-LED64
   w_count = write(fd, buff, r_count);
   printf("write count = %ld\n", w_count);

   close(fd);

   return 0;
}

最初にテストプログラムdio_tst.cを次のようにコンパイルする。

     # make

コンパイルでエラーが出なければ、実行可能イメージとしてのdio_tstア プリケーションが生成されているので、念のためlsコマンドで確かめる こと。

任意のスイッチをONにして、

     # ./dio_tst

を実行すれば、ONにしたスイッチに対応するビットが画面に表示され、それに対 応するLEDが点灯する。



MANOME Yoichi 平成18年12月26日