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が点灯する。