[Armadillo:05807] Re: メモリーマップについて
nakai
email@hidden
2010年 9月 10日 (金) 16:33:48 JST
nakaiです。
(2010/09/10 15:09), s.maruyama wrote:
> 出来るだけ、詳細なメモリーの割り当て情報が望まれます。
> 例えば、
> カーネルモジュールの開始アドレスと終了アドレス、及びサイズ、
> イーサネット モジュールの、開始アドレスと終了アドレス、及びサイズ、
kernelをビルドしたときに、System.mapというファイルが生成されるので、
それを参照すると、関数や変数などがマップされるアドレスがわかります。
または、arm-linux-gnueabi-objdump -x vmlinuxでもおなじです。
基本的に、Linuxは全て仮想アドレスになります。
> ユーザーランドメモリーの、
> アプリケーションA の、開始アドレスと終了アドレス、及びサイズ
> ” Bの、 ” ”
個別のアプリケーションがマップされるアドレスは、
readelfなどでわかります。
PC$ readelf -h sample
ELF Header:
Magic: 7f 45 4c 46 01 01 01 61 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: ARM
ABI Version: 0
Type: EXEC (Executable file)
Machine: ARM
Version: 0x1
Entry point address: 0x98f4
Start of program headers: 52 (bytes into file)
Start of section headers: 16988 (bytes into file)
Flags: 0x2, has entry point, GNU EABI
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 6
Size of section headers: 40 (bytes)
Number of section headers: 33
Section header string table index: 30
ユーザーランドのイメージの大きさは、ビルドするとできる
image.binの大きさとなります。ls -lなどでサイズはわかります。
PC$ ls -l images/romfs.img
-rw-r--r-- 1 nakai nakai 13574181 2010-06-03 16:40 images/romfs.img
または、
armadillo# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/ram0 13109 11979 468 96% /
のようにすると、イメージサイズがわかります。上記では13MBくらいです。
> 仮想アドレスでは無いと思っていますが、これは、間違いですか?
仮想アドレスです。
> 通常、ROMイメージを作成する時には、メモリー割り当てのマップが
> 作成されるものと考えていたのですが、それに類するようなものは
> 無いのでしょうか?
kernelは作成されます(上記参照)が、ユーザーランドは作成されません。
ログイン後、freeするとメモリ使用量がわかるので確認してみてください。
armadillo# free
total used free shared buffers
Mem: 126448 25164 101284 0 268
Swap: 0 0 0
Total: 126448 25164 101284
上記では、100MBくらい空いていることになります。
以下のような本を読むと参考になるかもしれません。
・組み込みLinux入門
http://www.cqpub.co.jp/hanbai/books/33/33271.htm
・組み込みLinuxシステム構築
http://www.oreilly.co.jp/books/4873111617/
armadillo メーリングリストの案内