nagashima
2018年3月6日 10時53分
長島と申します。お世話になっております。
tftpdl でカーネルとユーザランドの書き換えを行おうとしたところ、
ユーザランドのところで「tftp: Out of memory -NG overflow」が出るようになり、
書き換えができなくなり困っております。
tftpboot も試しましたが同じエラーが出ます。
1tftpdlに関する投稿で「--blksize 1024」のオプションを付けていたので、
Out of memory には関係ないだろうなと思いつつ試してみましたが、
やはり同じエラーが発生いたします。
こちら原因はユーザランドの肥大化でしょうか?
(現在、ダイエット中)
原因と対策をご教授頂ければ幸いです。
皆様、よろしくお願いいたします。
コメント
at_ohsawa
フラッシュメモリのマップを標準から変更しているでしょうか?
> -rw-r--r-- 1 atmark atmark 32111261 3月 6 10:54 dame.img.gz <== 日本語フォント(TakaoGothic)入り
> -rw-r--r-- 1 atmark atmark 27808882 3月 6 11:08 romfs.img.gz <== 日本語フォントなし
フラッシュメモリのuserland領域は3.x系のA440だと標準で 26.875MBなので
前者のイメージは書き込めないはずです。
hermitはOut of memoryとは出していますが、受信バッファのサイズは
フラッシュメモリの書込みする領域分(--userland=ならユーザーランド領域)
だけバッファを取って、そこから溢れた時にOut of memoryを表示してエラー
させているので、ワーキングメモリ不足というより書き込み先のフラッシュ
メモリの領域に対してデータが大きすぎる状態だと思います。
> tftpdl, tftpboot とも、上記 dame.img.gz(日本語フォント入り)だとエラー、
> romfs.img.gz(日本語フォントなし)ならエラーが出ないので、
> 「Out of memory」の文字通り、romfs.img.gz のファイルサイズが原因ですね。
>
> さて、どうしたものか... ^^;
nagashima
長島です。
ohsawa 様、コメントありがとうございます。
> フラッシュメモリのマップを標準から変更しているでしょうか?
変更は
・独自アプリとそのための画像の追加
・カーネルコンフィグ(GPIO、デバイスドライバなど)
ぐらいです。
romfs.img.gz の中身を見ると
6.9M libavcodec.so.53.35.0
が目立っております。
今回のターゲットでは動画や音声を使わないので、これを消して、
イメージファイルのサイズを4MBぐらい小さくしたいところです。
カーネルコンフィグを見てますが、今のところ選択項目が見つけられておりません。
ご存じの方いらしゃいましたらご教授ください。よろしくお願いいたします。
at_ohsawa
nagashima
nagashima
2018年3月6日 11時22分
お世話になっております。長島です。
自己レスになります。
現在のターゲットでは日本語を表示するので TakaoGothic を入れているのですが、
これが大きいと思い、外してビルドしてみました。
-rw-r--r-- 1 atmark atmark 32111261 3月 6 10:54 dame.img.gz <== 日本語フォント(TakaoGothic)入り
-rw-r--r-- 1 atmark atmark 27808882 3月 6 11:08 romfs.img.gz <== 日本語フォントなし
tftpdl, tftpboot とも、上記 dame.img.gz(日本語フォント入り)だとエラー、
romfs.img.gz(日本語フォントなし)ならエラーが出ないので、
「Out of memory」の文字通り、romfs.img.gz のファイルサイズが原因ですね。
さて、どうしたものか... ^^;