初期のカーネル コードは次の点に重点を置いています。
- メモリの初期化、MMU と仮想メモリの設定。
- クロックとタイマーの初期化。
- 割り込みサブシステムを初期化します。
- 重要な GPIO ピンの構成
- ARM ATAG情報など、アーキテクチャに依存するデータの取得。
アーキテクチャに依存する初期化は一度に行われないことに注意してください。ボード初期化関数は、カーネルの起動後、ドライバが初期化される前に呼び出すことができます。
newtork デバイスまたは USB デバイスは、このアーキテクチャ依存コードと対話します
ネットワークおよび USB ホスト & ガジェット デバイスは、初期のカーネル コードよりもかなり後に初期化されるデバイス ドライバーによって表されます。「相互作用」は最小限であり、確立されたカーネルドライバーインターフェースに準拠します。デバイス ドライバーは、ボード固有の依存関係をすべて削除し、それらを構成オプションに置き換えるように作成する必要があります。そうでない場合、そのドライバー コードは、ドライバーディレクトリではなく、プラットフォームまたはマッハソース コード ディレクトリにある必要があります。
アーキテクチャに依存するコードは、次のような情報をフェッチする責任があります...
MAC アドレスは、カーネル コマンド ラインで渡すか、ブートローダーによってインストールできます (デバイス ドライバーによる取得用)。
ベンダー ID、ボード ID、およびその他のデータは、アーキテクチャに依存するコードにすることができます。ARM の場合、カーネルはATAGを使用してメモリ バッファでこの情報を受け取ります。