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
- 名称
-
- 書式
-
- 解説
-
- プログラミングインタフェース
-
- 使用例
-
- バグ
-
Time: 07:07:24 GMT, January 12, 2009