
Linux を使って、I/Oポートにアクセスすつプログラムの例です。
fj.engr.controlで質問して、教えていただきました。-O オプションで
コンパイルし、root で、実行する必要があります。
$ cc -c -O sample.c
Contec のI/Oボードで作動を確認しました。
#include <asm/io.h>
#include <linux/ioport.h>
int main (int argc, char *argv[])
{
unsigned char input_value;
unsigned char output_value;
if (ioperm (0x300, 2, 1) < 0)
{
perror ("ioperm");
exit (1);
}
input_value = inb (0x300); /* input from port 0x300 */
printf ("%x\n",input_value);
output_value = 0x11;
outb (output_value, 0x300); /* output output_value to port 0x300 */
return (0);
}
30msec程度の制御なら、リアルタイムクロック(/dev/rtc),1msec程度の 制御なら、リアルタイムリナックスの使用をお勧めします。
リアルタイムクロックは、カーネルの再コンパイルで使用可能になります。 リアルタイムリナックスは、カーネル2.0.33にパッチをあてて から、コンパイルすることで使用可能になります。
リアルタイムリナックスのインストール方法
簡単なデバイスドライバーの作成方法私のホームページへ
1998年12月21日改訂