2013-09-04 7 views
5

Googleとこのサイトでこのトピックを検索しようとしましたが、適切な回答が見つかりません。linuxの起動中のメモリの割り当て?

私は、Linuxブートプロセス中に設定された物理アドレスに大きな連続ブロック(数MB)を割り当てようとしています。しかし、私はまだどこに私の "alloc_bootmem"機能を置くべきか明確ではない。私はARMプロセッサでLinuxを実行しています。

  1. 私の知る限り、「alloc_bootmem」への呼び出しが含まれ、その後、カーネルに直接そのドライバをコンパイルドライバを作成する方法があります。

  2. もう1つの方法は、Linuxカーネルソースのどこかに "alloc_bootmem"を追加することです。

  3. 最後に私が考えているのは、ブート時にLinuxが割り当てたいメモリを予約するように、boot.rc?(分からない)のような設定ファイルを作成することです。

この質問への回答が明確な方法やリンクがある場合は、本当に感謝しています。基本的な質問は、 "どこで" alloc_bootmem "と呼ぶべきですか?それで、起動時に動くでしょうか?"それは初期のブート段階のためのメモリ割り当てを説明http://lwn.net/Kernel/LDD3/章8:

おかげで、 Shahril

+0

場合:MMUが稼働したら私の知る限り

あなたは大が続くメモリ割り当てを探しているなら、あなたはおそらく別のアロケータを使用する必要がありますメモリをアクセスのない可能な方法は、見てみましょうありません「設定された」物理アドレスはハードウェアによって指示され、カーネルがそのメモリを汎用RAMと見なさないようにする第4の方法があります。 ATAG(またはDT)および/またはカーネルコマンドラインでカーネルに提供されるメモリリストから、ブートローダ(U-Bootなど)にこの物理メモリ領域を除外させます。この予約されたメモリリソースを使用するデバイスドライバに渡すために、新しいATAG(またはDTエントリ)を作成します。もう少し詳細は[こちら]です(http://stackoverflow.com/questions/11580285/pass-large-amount-of-binary-data-from-u-boot-to-linux-kernel/12137511#12137511)。 – sawdust

答えて

関連する問題