問題タブ [ioports]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - デバイスに割り当てられている ioport を見つける方法
製造されたすべてのデバイス用に Linux で予約された io ポート番号があります。
Intelビルトインネットワークカードのようなデバイスがあります。または、realtekのwifi(usb)用に持っている別のデバイス。github の Linux リポジトリでは、デバイス ドライバーは特定の io ポートを使用して登録します。そして、カーネルはそれらのポートをデバイスドライバーに割り当てます。デバイス ドライバーは通常、request_region 関数の呼び出しを使用してポートを要求します。したがって、一部のイーサネットデバイスでは、次のように要求します
0x110
上記はtoで始まり0x200
、任意のポートをカーネルによってドライバーにこの範囲で割り当てることができ、/proc/ioports ファイルに表示されます。これは、ドライバーが からの成功リターンの時間までにその io ポートを使用していることを意味しrequest_region
ます。
質問 : 私の質問は、Linux がカーネル 5.7 または最新のカーネル バージョンで使用可能なすべての製造済みデバイスに io ポートを割り当てているということですか?
質問 : 任意のデバイスのデバイス ドライバーを作成したい場合はどうすればよいですか。要求する io ポート番号の範囲を見つけるにはどうすればよいですか。カーネルコードを調べて、より類似したドライバーのポート範囲を見つける必要があるとは思いません。そのioポート番号の範囲を見つけるにはどうすればよいですか。デバイスドライバーの作成に必要なこの最初のステップを達成する方法(任意のデバイス。wifiインターネットデバイスまたはイーサネットデバイス)
assembly - ワードサイズの OUT からバイト IO レジスタへ? 古い VGA コードの命令なしでシーケンス コントローラ レジスタを設定する
この例では、いくつかの古い VGA コードを使用してシーケンス コントローラ レジスタがどのように設定されているか理解できません。
この例は、Michael Abrash の VGA 本からのものです: https://www.phatcode.net/res/224/files/html/ch47/47-02.html
説明によると、彼はインデックス 4 にあるメモリ モード レジスタを設定したいと考えています。彼は、ビット インデックス 3 にある chain4 を無効にしたいと考えています (すべて、Richard F. Ferraro による EGA、VGA、およびスーパー VGA カードのプログラマーズ ガイドによると)。 )。
なぜ彼が 06 と 04out
の 2 バイトを ax に入れ、それらを . out レジスタは 1 バイトのみであり、アドレス指定のためにレジスタのインデックスを明示的に設定していません。私が理解できない魔法が起こっているのでしょうか?