[Armadillo:00820] Re: Armadillo-9: bssを多く消費するkernelではboot不可?

Fumito Morishima email@hidden
2006年 1月 20日 (金) 21:36:54 JST


森島です。

いくつか心当たりを調べてみたんですが、
今のところ原因分からずです。

これからJTAGデバッガを使って、調べてみます。

SATO Yusuke wrote:
> こんにちわ
> 佐藤(ゆ)と申します
> 
> 初めて投稿します。
> 
> 最近Armadillo-9のケースモデルを入手いたしまして、いろいろといじってい
> るのですが、一点不可解な現象に遭遇してしまいました。アドバイスをいただ
> けないでしょうか?
> 
> いま、カーネル2.6向けユーザランドである romfs-20051017-2.6.12.3-a9-1.img.gz
> を書き込んだ Armadillo-9に対して、linux-2.6.12.3-a9-1.tar.gz をベース
> に、自分の好みのパッチを当てたkernelを作成し、それでブートさせようと考
> えています。 自分好みのパッチというのは、具体的には LIDS というもので
> す(http://www.lids.org/)。
> 
> しかし、linux-2.6.12.3-a9-1.tar.gz にLIDS patchを当てると、常にbootで
> きないkernelが作られてしまうことに気づきました。
> 
> 具体的には、LIDSを有効にしたkernelでbootしようとすると、
> 
> Hermit-At v1.0.0 (armadillo9) compiled at 18:43:28, Sep 26 2005
> hermit> b
> Uncompressing  kernel...........................................................
> ............................done.
> Uncompressing ramdisk...........................................................
> ................................................................................
> ....................................................................done.
> Doing console=ttyAM0,115200
> Doing mtdparts=armadillo9-nor:0x10000(bootloader)ro,0x170000(kernel),0x670000(us
> erland),-(config)
> 
> ここでピタッと止まってしまいます。kernelの一番最初のprintkまで辿り着い
> ていないような感じです。なお、純正のlinux-2.6.12.3-a9-1.bin.gz を書き
> 込んだ場合は、もちろん正常に起動します。
> 
> 
> いろいろ調べてみたところ、どうも、.bssを使いすぎるとbootできないkernel
> になるようなのです。たとえば、LIDS patchを当てていない、素のカーネルソー
> スをベースに、(どのファイルでもいいんですがたとえば) kernel/printk.c の
> 冒頭に、
>   volatile char this_is_dummy[1086500];
> と追記すると、起動できないkernelになります。1086500ではなく、
>   volatile char this_is_dummy[1086400];
> か、あるいはもっと小さな配列にすると起動できますので、このあたりが閾値
> のようです。
> 
> 起動する場合のSystem.mapは、
> 
> -------------------------------------------------
> c0014000 A swapper_pg_dir
> c0018000 T __init_begin
> ...
> c027e000 D __data_start
> ...
> c02cf0d0 D _edata
> c02cf0e0 B __bss_start
> ...
> c02db51c B this_is_dummy
> c03e48dc b logbuf_lock
> ...
> c03ff000 B _end
> -------------------------------------------------
> 
> となっています。起動しない場合は、
> 
> -------------------------------------------------
> c0014000 A swapper_pg_dir
> c0018000 T __init_begin
> ...
> c027e000 D __data_start
> ...
> c02cf0d0 D _edata
> c02cf0e0 B __bss_start
> ...
> c02db51c B this_is_dummy
> c03e4940 b logbuf_lock
> ...
> c03ff060 B _end
> -------------------------------------------------
> 
> です。_end と __bss_start のアドレスの差は、
>   起動する場合:   0x0012ff20
>   起動しない場合: 0x0012ff80
> ですね。
> 
> クロス開発環境としては
>   binutils-arm-linux-2.15-6.i386.rpm
>   cpp-3.4-arm-linux-3.4.3-13.i386.rpm
>   g++-3.4-arm-linux-3.4.3-13.i386.rpm
>   gcc-3.4-arm-linux-3.4.3-13.i386.rpm
>   libc6-arm-cross-2.3.2.ds1-22.noarch.rpm
>   libgcc1-arm-cross-3.4.3-13.noarch.rpm
>   linux-kernel-headers-arm-cross-2.5.999_test7_bk-17.noarch.rpm
> などを (CentOS4/x86上で) 使用しています。
> 
> LIDS側にbssの消費を抑えるような変更を加えることも可能ではありますが、
> もし
> ・この現象が起きる原因
> ・この現象をArmadillo-9側でどうにか回避する方法
> などがわかる方がいらっしゃいましたら、ぜひ教えてください。
> 
> よろしくお願いいたします。
> 
> --
> SATO Yusuke / 佐藤 祐介 <email@hidden>
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/armadillo



armadillo メーリングリストの案内