私はいくつかの趣味のOSの開発を迷惑にしています。メモリマップされたI/Oアドレスについて少し混乱しています。メモリ全体のI/Oコンセプトを理解していますが、開発者がどのようにハードウェアを操作するためのアドレスを取得するのかを把握しようとしています。メモリマップドI/Oアドレスはどこから得られますか?
ハードウェアベンダーによって指定されたアドレスか、すべてのコンピュータの標準アドレスのようなアドレスですか。たとえば、テキスト印刷用のVGAメモリは0xB8000番地から開始されます。すべてのx86マシンの標準ですか?もしそうなら、誰がその基準を定めましたか?たとえば、イーサネットカードと話したければ、通信に使用するアドレスやポートをどのように知ることができますか?
ありがとうございます。
あなたは、オンラインまたは書籍のどこかにリストされたポートの明確なリストを知りましたか? – QAH
最新のlinuxカーネルをダウンロードした場合、いくつかのアーキテクチャでは 'arch/XXX/mach-XXX'ディレクトリにデバイスが宣言されています。また、QEMUには、リポジトリの 'hw /'ディレクトリに手作業で宣言された豊富なマッピングがありますが、これらはいずれも権威的で現実的なものではありません。詳細は、PCIやSCSIなどのさまざまなバスプロトコルを調べて、マッピングの検出機能があるかどうかを確認してください。 – Alex
また、私は間違いであなたを捨てることはありません、それはiomemであり、ioportsではありません。私の悪い。 – Alex