0

デバイスドライバーを読み始めたばかりで、Start_kernal関数はアーキテクチャに依存しないコードの一部であり、アーキテクチャに依存する部分から呼び出されました。このstart_Kernalルーチンが、カーネルの起動時に意味を呼び出す前に、実際に何が起こるかを知りたいと思いました。

newtorkデバイスまたはUSBデバイスがこのアーキテクチャに依存するコードと相互作用するとどうなるかを知りたいです(アーキテクチャに依存するのは、ハードウェアと相互作用する最初のソフトウェアであると信じています)。

アーキテクチャに依存するコードは、システムに接続されているハードウェアデバイスのMACアドレス、ベンダーIDなどの情報を取得する責任がありますか?

4

1 に答える 1

1

初期のカーネル コードは次の点に重点を置いています。

  • メモリの初期化、MMU と仮想メモリの設定。
  • クロックとタイマーの初期化。
  • 割り込みサブシステムを初期化します。
  • 重要な GPIO ピンの構成
  • ARM ATAG情報など、アーキテクチャに依存するデータの取得。

アーキテクチャに依存する初期化は一度に行われないことに注意してください。ボード初期化関数は、カーネルの起動後、ドライバが初期化される前に呼び出すことができます。

newtork デバイスまたは USB デバイスは、このアーキテクチャ依存コードと対話します

ネットワークおよび USB ホスト & ガジェット デバイスは、初期のカーネル コードよりもかなり後に初期化されるデバイス ドライバーによって表されます。「相互作用」は最小限であり、確立されたカーネルドライバーインターフェースに準拠します。デバイス ドライバーは、ボード固有の依存関係をすべて削除し、それらを構成オプションに置き換えるように作成する必要があります。そうでない場合、そのドライバー コードは、ドライバーディレクトリではなく、プラットフォームまたはマッハソース コード ディレクトリにある必要があります。

アーキテクチャに依存するコードは、次のような情報をフェッチする責任があります...

MAC アドレスは、カーネル コマンド ラインで渡すか、ブートローダーによってインストールできます (デバイス ドライバーによる取得用)。
ベンダー ID、ボード ID、およびその他のデータは、アーキテクチャに依存するコードにすることができます。ARM の場合、カーネルはATAGを使用してメモリ バッファでこの情報を受け取ります。

于 2012-11-28T02:04:42.843 に答える