- ベストアンサー
OS無しの状態でのNICデバイスの認識について
- CPU側からオンボードLANチップにアクセスする際、メモリマップドI/Oからアクセスする事は可能なのでしょうか?
- BIOSサービスを使い、LANチップにアクセスするのか、それとも他の方法があるのか調べているが、情報が見つからない。
- 先輩方に再度、CPU側からオンボードLANチップにアクセスする方法について教えていただきたい。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
PCIバス関係の書籍は、こらぐらいしかしりません。 「改訂新版 PCIバス&PCI-Xバスの徹底研究」 http://www.cqpub.co.jp/hanbai/books/33/33321.htm 同じ本の古本を安価だったので買って持ってますが、PCIバスに接続する機器を作るハードを設計する人が読むような本です。ただ、PCIバスのBIOSの詳細などが書かれていますので参考にはなると思います。 でも、実際にこの本の内容を活用した事はありません。
その他の回答 (6)
- zwi
- ベストアンサー率56% (730/1282)
>オンボードの場合、チップセットに接続されているのではないでしょうか?? もちろんそうですが、PCIバスに接続すれば外付けのLANカードと同じになるので、同様な接続がされているんだと思います。ドライバが兼用できます。 そもそもPCIバスの信号を作り出しているのもチップセットですからね。 WindowsのデバイスマネージャでみるとオンボードのLANもPCIバス上にあると表示されますよ。
補足
zwiさん、何度もご回答いただき、誠にありがとうございます。 >PCIバスに接続すれば外付けのLANカードと同じになるので、同様な接続がされているんだと思います。ドライバが兼用できます。 >そもそもPCIバスの信号を作り出しているのもチップセットですからね。 上記2点のご教示頂き、すごく勉強になったと同時にほっと胸をなでおろしました。 もし、PCIバスではなく、チップセットとLANチップが直接接続されているとなると、 チップセットの仕様書も手に入れなければならないのかなと思っていました。 (もちろん、チップセットの仕様書も手に入れ、読むことになると思いますが。。。) >WindowsのデバイスマネージャでみるとオンボードのLANもPCIバス上にあると表示されますよ。 仰られた通り、デバイスマネージャで確認してみました! 場所の箇所に、PCIバスと表示されていました! そして、我が家のLinuxサーバ上でlspciコマンドを実行すると、 03:0b.0 Ethernet controller: intel Corporation 82541EI Gigabit Ethenet Controller の表示も確認できました!! これは、正直鳥肌が立つくらい感動しました。 本当に何度もご教授頂き、誠にありがとうございます。
- いけだ ひろし(@ike-2000)
- ベストアンサー率53% (69/129)
#5です。 LANが目的と言ったことは分かりましたが、CPUに関してはどうでしょうか。 また、ハード構成は一般のMB上のPCIスロット(PCIeだともっと大変)のLANカードにアクセスすると言うことで。 PCIのプロトコル仕様、CPUのインストラクションセット等の知識が必要と考えられます。 ちなみにx86のCPUであればi486マイクロプロセッサープログラマーズリファレンス・マニュアルは一読しておくべきです。 OSを作るようなものですから。
補足
ike-2000さん、ご回答頂き誠にありがとうございます。 >ちなみにx86のCPUであればi486マイクロプロセッサープログラマーズリファレンス・マニュアルは一読しておくべきです。 仰る通りです。 一応、手元には80386、80486の資料は山のようにあります。 intelの仕様書も手元にあり、 intelが出版している80486DXの書籍もあります。 >また、ハード構成は一般のMB上のPCIスロット(PCIeだともっと大変)のLANカードにアクセスすると言うことで。 ハード構成までご提案頂き誠に感謝申し上げます。 しかし、 これがオンボードの場合、使用するのはもちろんPCIスロットではないですよね? チップセットを使ってアクセスする方法だと思うのですが。。。 以上、お忙しい中大変申し訳ございませんが、ご確認ともう一度だけご教授宜しくお願い致します。 図々しくてすみません。
- いけだ ひろし(@ike-2000)
- ベストアンサー率53% (69/129)
気になった質問だったのでwatchしていました。 質問者におかれまして何をするために質問されているのでしょうか。どの立場(デバイス開発、デバドラ作成とか)で回答を得られたいのかを明確にした方が宜しいと思います。 ちなみに私は元ハード屋で今アプリ開発者なので微妙に気になっていました。
補足
ike-2000さん、ご回答頂き誠にありがとうございます。 ike-2000さんからご指摘のあった箇所についてお答えさせて頂きます。 >質問者におかれまして何をするために質問されているのでしょうか。どの立場(デバイス開発、デバドラ作成とか)で回答を得られたいのかを明確にした方が宜しいと思います。 私の過去の質問の中に「OS無しの状態でのNICデバイスの認識について。」という質問の中で言及させて頂いている通り、裸(少し言い方が悪いですが。。。)のPC/AT互換機でLANデバイスをコントロールするプログラムを書きたい人間なだけです。 巷では、PC/AT互換機上でOS作成と名の打った書籍がありますが、どれもネットワークに関連したトピックがなかった事が動機になったかもしれません。 以上、お忙しい中大変申し訳ございませんが、ご確認の程宜しくお願い致します。
- ralf124c
- ベストアンサー率52% (232/446)
参考にならないかもと前置きして・・・。 OSというよりもそれに付随するデバイスドライバ無しでNICデバイスにアクセスするとなるとIOポートを直接たたいてデータ送受信するしかないと思います。 ISAバスのころは自作で変なもの作ったりしましたが、MCAやPCIになってからはとんとご無沙汰です。 イーサネットも大学で企業からの委託研究で試作ボードをPC-88やらPC-98に8255でインターフェース作ってN88-BASICからいじったことも有りましたが今から思えばとんでもない手間でした。 BIOSの割り込みルーチンに関しては歴史的な背景を見てもNICに関するフォローはないと思います。 そのために、デバイスドライバが割り込みをフックしてBIOSをそのNIC用に拡張するという仕様をとっていたと記憶しています。 駆出しのペーペーだったころシリアルポートのBIOSルーチンが気に入らず、自作のデバドラを作って遊んだこともあるので敷居はそんなに高くないと思いますが、今から思えば割り込みというものの重要性を認識するまでがなかなかだったかなと思います。 そもそも当時はNICにしてもIBMが推していたのはトークンリングの方が主で、イーサネットはNetwareの普及とともにサードパーティとして(特にNE2000互換ボード)シェアを伸ばしてきた経緯もあり標準としてのNICというものが確立しておらず、その手の書籍からは範疇外であったと思います。 なんかすごい昔に感じるんだけどまだ20年経ってないんですね。 OS無しデバドラ無しじゃ八方ふさがりですが、IBM互換機の低レベル(といってもハード寄りという意味です)プログラムに関しては海外の文献でしか見たこと有りません(昔、新宿の紀伊国屋で見つけて購入しましたが仕事で海外に持って行ってなくしてしまいました)。 ソースブックとかピーターノートンの本とかには載っていなかったとおもいます。 保障は出来ませんが、DOS前提では有りますが希望に近いプログラムはSIMTEL-NETあたりを探せば出てきそうな気がします。国内だと理研のFTPサーバ内にミラーがありますので散策してみてください。 長々と乱文、すいませんでした。
補足
ralf124cさん、ご回答頂き誠にありがとうございます。 >参考にならないかもと前置きして・・・。 そんな事は全然ないです! ご回答して頂けるだけでとても嬉しい気持ちになります! >PC-88やらPC-98に8255でインターフェース作ってN88-BASICからいじったことも有りましたが今から思えばとんでもない手間でした。 私もPC-8801MK2とPC-8001MK2を所有していますが、BASICでそこまで出来るなんてびっくりです。 自分はBASIC初心者ですので、すごいと思ってしまいます。 >BIOSの割り込みルーチンに関しては歴史的な背景を見てもNICに関するフォローはないと思います。 >そのために、デバイスドライバが割り込みをフックしてBIOSをそのNIC用に拡張するという仕様をとっていたと記憶しています。 仰る通り、昔の「THE IBM PC&PS/2」やその他のDOS/V系のBIOSサービスが掲載されている書籍を見ているとNICのサービスは無いです。。。 その他、とても有益な情報頂き誠にありがとうございます。 以上、お忙しい中大変申し訳ございませんが、ご確認の程宜しくお願い致します。
- zwi
- ベストアンサー率56% (730/1282)
オンボードのLANチップでもPCIバスに接続されているはずですが?
補足
zwiさん、ご回答頂き誠にありがとうございます。 ご教授いただいた内容に疑問があります。 >オンボードのLANチップでもPCIバスに接続されているはずですが? オンボードの場合、チップセットに接続されているのではないでしょうか?? 大変申し訳ございませんが、もう一度だけご教授お願い致します。 本当にすみません。
- Tacosan
- ベストアンサー率23% (3656/15482)
詳しくないし裏もとってないし「オンボード」とわざわざつける理由もまったくわからないんだけど, いまどきの OS ってそもそも BIOS をほとんど使ってないんじゃないかなぁ....
補足
Tacosanさん、ご回答頂き誠にありがとうございます。 >「オンボード」とわざわざつける理由もまったくわからないんだけど, これについては、 オンボードのLANチップとPCIスロットに挿すタイプのLANカードがあるので、 強調して書かせて頂きました。 そして、PCIスロットに挿すタイプのLANカードですとPCIバスに何か動作をするプログラムを書けば、LANチップにアクセス出来ると思ったのですが。。。 >いまどきのOSってそもそもBIOSをほとんど使ってないんじゃないかなぁ.... 仰る通りです、しかしLinuxのセットアップルーチンを見ると、 初期チェック、物理メモリの大きさ、キーボードのリピートレートの設定、 VGAの属性チェック、等の(もちろん、これだけではありませんが。。。) の部分はやはりBIOSのサービスを使って実装されています。 以上、お忙しい中大変申し訳ございませんが、ご確認の程宜しくお願い致します。 やはり、カーネルを実装するしかないんでしょうか??
補足
zwiさん、ご回答頂き誠にありがとうございます。 ご紹介頂いた資料こそ、私が探し求めていた情報が掲載されていそうな気がします。 早速購入してみようと思います。 以上、お忙しい中大変申し訳ございませんが、ご確認の程宜しくお願い致します。