PPI

Section: Devices and Network Interfaces (4)
索引 jman

BSD mandoc
FreeBSD  

索引

名称

ppi - ppbus パラレル 'geek' ポートへのユーザ空間インタフェース  

索引

書式

device ppi0 at ppbus?

マイナー番号: ユニット番号は ppbus 番号に直接対応する。  

索引

解説

デバイスドライバはユーザアプリケーションが パラレルポートの状態を操作するための便利な手段を提供し、 /dev/io インタフェースを使うことに起因するセキュリティ問題を生じることなく、 容易に低速 I/O 操作ができるようにします。  

索引

プログラミングインタフェース

Fd #include </sys/dev/ppbus/ppi.h> Fd #include </sys/dev/ppbus/ppbconf.h>

インタフェースでのすべての I/O は Fn ioctl 呼び出しを使うことによって行います。 各々のコマンドは 1 つの Ty u_int8_t 引数をとり、1 バイトのデータを転送します。 以下のコマンドを使うことができます。

PPIGDATA, PPISDATA
データレジスタの内容の読み出しと書き込みを行います。
PPIGSTATUS, PPISSTATUS
ステータスレジスタの内容の読み出しと書き込みを行います。
PPIGCTRL, PPISCTRL
制御レジスタの内容の読み出しと書き込みを行います。 以下ではこのレジスタのビットに対応した定義を行っています。 制御レジスタのビットをセットすることは相当する出力を low にすることになります。

STROBE
AUTOFEED
nINIT
SELECTIN
PCD

PPIGEPP, PPISEPP
EPP 制御レジスタの内容の読み出しと書き込みを行います。
PPIGECR, PPISECR
ECP 制御レジスタの内容の読み出しと書き込みを行います。
PPIGFIFO, PPISFIFO
ECP FIFO の読み書きをおこないます (8 ビット操作のみ)。

 

索引

使用例

データポートに値 0x5a を出力するために、 STROBE を low にした後 high に戻します。 次のコードを使うことができます。

        int             fd;
        u_int8_t        val;

        val = 0x5a;
        ioctl(fd, PPISDATA, &val);
        ioctl(fd, PPIGCTRL, &val);
        val |= STROBE;
        ioctl(fd, PPISCTRL, &val);
        val &= ~STROBE;
        ioctl(fd, PPISCTRL, &val);

 

索引

バグ

出力信号がレジスタ値と逆になっているのは混乱を招きかねません。

Fn ioctl インタフェースは低速であり、 複数の操作を連続して行うための方法が (まだ) ありません。

ユーザアプリケーションで必要なヘッダは 標準のシステムではインストールされません。


 

索引

Index

名称
書式
解説
プログラミングインタフェース
使用例
バグ

jman



Time: 07:07:24 GMT, January 12, 2009