[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 メーリングリストの案内