- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PCIデバイスについて)
PCIデバイスについて
このQ&Aのポイント
- BusyBoxで作ったルートファイルシステムとKernel.orgから取ってきたLinuxカーネルを使って組み込み用のLinux環境を作成しました。lspciコマンドを使うとエラーメッセージが表示されます。sysディレクトリを用意する必要がありますか?
- Linuxにはターゲット上のPCIバスにつながっているデバイスを自動で認識して、初期化を行う機構があります。該当するカーネルソースの場所を教えてください。
- PCIデバイスに関する質問です。組み込みLinux環境でlspciコマンドを使用する際にエラーメッセージが表示されています。sysディレクトリの作成が必要でしょうか?また、ターゲット上のPCIバスにつながっているデバイスを自動で認識するためのカーネルソースの場所を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
kernel.orgはカーネルソースしか配布していないと思います。 またこれまでのソースが全て入っていますが、どのバージョンをお使いでしょうか? また、kernel make時の設定はどのようにしたのでしょうか? 1. sysfsについて 2.6.xでCONFIG_SYSFS=yでmakeしたカーネルでしたら、/sys ディレクトリを作成した上で、 mount -t sysfs sysfs /sys とすればマウントできます。 (カーネルソースのDocumentation/filesystems/sysfs.txtに書かれています)。 多くのディストリビューションでは起動時に自動的にマウントするようになっているようですが、組み込み系では設定されていないのかもしれません。 2.PCIの初期化 Device Driverを書くのに必要最低限の知識しか持っていないので、ちゃんと説明できなくて申し訳ないのですが、「初期化」と一言で言っても、PCIバスの初期化、PCIデバイスのポートやメモリ、割り込みの割り当て(ただしアクセス可能にするのはデバイスドライバ)、個々のデバイスドライバが行うデバイスの初期化と言った段階を追った初期化が行われます。 それぞれのデバイスドライバはLinux Kernelに対して、自分がどのVendor ID:Device IDを扱えるかを登録しておき、kernelはコンフィグレーションレジスタのVendor ID:Device IDを見てデバイスドライバを見つけるようになっています。 下記のJFの文書が役に立つかもしれません。
お礼
情報提供ありがとうございました。 まだまだ初心者なので、こういった情報は非常に助かります。 1. sysfsについて ディレクトリを作るだけでは駄目なんですね!! sysfsの有効と、sysのマウントが必要と理解しました。 ご教示いただいた、テキストの内容をこれから確認させていただきます。 2.PCIの初期化 JFの文書を確認させていただきます。 理解するのに大変そうです。 今回は本当にありがとうございました。