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