[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:99567] Re: ユーザー空間からI/OPort への直接アクセス方法


安東です。
今井さん、アドバイスありがとうございます。
Kunihiko IMAI wrote:
> 今井です.
> 
> ええと,ボードは
> 	http://www.interface.co.jp/catalog/prdc.asp?name=pci-2752c
> こいつでしょうか.
はい、このボードです。


> マニュアルをダウンロードするにはユーザ登録がいるようなので,一般的な話だ
> け書くと
> 
> ・I/O ベースアドレス
> 	PCI デバイスの場合は,刺さっているボード同士の I/O アドレスが
> 	ぶつからないように BIOS 等が良きに計らってくれます.
> 	というわけで,マニュアルのサンプルプログラムに載っている(と思わ
> 	れる)I/O アドレスとは異なった I/O アドレスに割り当てられている
> 	可能性があります.
> 
> 	/sbin/lspci コマンドか cat /proc/pci で,ベースアドレスを確認し
> 	てみましょう
I/O アドレスは、cat /proc/pci で,ベースアドレスを確認し設定しています。


> ・I/O 空間にマップするデバイスなのか
> 	ボードによっては,ポートを I/O 空間にマップせずにメモリ空間にマッ
> 	プするものもあります.
> 	この場合は /dev/mem 経由のアクセスになると思います.
I/Oの公開情報があるのでI/O 空間にマップされていると思います。


> ・初期化
> 	PCI コンフィギュレーションレジスタなどをいじらないとボードの設定
> 	ができない場合,inw(), outw() を用いたユーザプログラムでは実現不
> 	可能(だと思った方が良い)です.
メーカーサポートでは特別な事はしていないので、アクセスできるはずとの回答
でした。アクセスできない理由に関してはサポート外で回答を得られませんでし
た。どうもドライバーの使用に関してのみサポートするみたいです。


> ・I/O レジスタの幅は?
> 	32bit や 8 bit 幅のレジスタに対して 16bit のアクセスを行った場合
> 	には,正常なアクセスができないデバイスである,ということも考えら
> 	れます.
早速、8,16,32bit幅でアクセスを行ってみました。しかし、いずれも全てのビッ
トに1が立っており、レジスタの幅の問題ではないようです。


> ・たまたまレジスタの値が 0xffff であった
> 	ええと
> 		何もレジスタの無いアドレスを叩いている
> 	のか
> 		レジスタにはアクセスしできているのだが,その値がたまたま
> 		0xffff であった
> 	のか,というあたりです.
> 	# マニュアルを読んでいないので,このレジスタの取るべき値がいくつ
> 	であるのかわかりませんが.
> 
> 	このボードは,入出力ボード,だそうなので,簡単な LED 駆動回路を
> 	ポートに接続し,ポートを出力モードに切替えて,LED を点滅させてみ
> 	てはどうでしょうか.
入出力ボードにはこのボード専用のテストボードを付けていて、入力状態をいろ
いろ変更していますし、出力も変かの無い状況です。
WindowsXpでこのボードをテストしましたが、問題無く動作しています。

そのほか、確認しなければならない点は無いでしょうか。





__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: