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);
}


この他に、デルタタウ社のPmac、ガリル社のボードなども、Linuxで 使いました。


The Linux Kernel Hackers' Guide にもI/Oにアクセスする関数のことが載って います。このガイドは、Linux the Complete Referenceに、収録されています。

30msec程度の制御なら、リアルタイムクロック(/dev/rtc),1msec程度の 制御なら、リアルタイムリナックスの使用をお勧めします。

リアルタイムクロックは、カーネルの再コンパイルで使用可能になります。 リアルタイムリナックスは、カーネル2.0.33にパッチをあてて から、コンパイルすることで使用可能になります。

リアルタイムリナックスのインストール方法
簡単なデバイスドライバーの作成方法
私のホームページへ

1998年12月21日改訂