[Armadillo:04670] Re: [a500][hermit][patch] setenv できない文字列がある問題について
nakai
email@hidden
2009年 10月 15日 (木) 16:19:06 JST
nakai
URATAN Shigenobu さんは書きました:
> うらたんと申すものです。
>
> 以下の環境で、Armadillo-500 のあたりをとっております。
>
> ・Armadillo-500 + 開発ボード
> ・atmark-dist-20090318.tar.gz
> ・linux-2.6.26-at6.tar.gz
> ・atde2-20090403.zip
>
>
> さて、hermit bootloader の setenv コマンドにて、設定できない
> 文字列があることを以下の例で発見してしまいまして、
> +----------------------------------
> |Hermit-At v1.1.21 (Armadillo-500) compiled at 18:40:00, Mar 25 2009
> |hermit> setenv video=mxcfb:CRT-VGA,16bpp
> |hermit> setenv
> |1: <--- NG
> |hermit> setenv
> |hermit> setenv video=mxcfb:CRT-VGA,8bpp
> |hermit> setenv
> |1: video=mxcfb:CRT-VGA,8bpp <--- OK
> |hermit>
> +----------------------------------
>
> 詳細を追いかけたところ以下のような挙動でありました。
>
> ・書き込むべきデータがなにやら FLASH に対するコマンドとして
> 効いてしまっている感じ。
> (文字列末の "p\0" が 16bit boundary で 0x0070 になる場合が問題)
> ・書き間違いではなくて 読み間違いのようだ。
>
> 確認したところ、予想通り以下の症状となりました。
>
> 修正前の操作ログ
> +----------------------------------
> |Hermit-At v1.1.21 (Armadillo-500) compiled at 18:40:00, Mar 25 2009
> |hermit> clearenv
> |hermit> setenv
> |hermit> setenv p ... 0x0070: Read Status Register
> |hermit> setenv
> |1: <--- NG
> |hermit> setenv
> |hermit> setenv
> |hermit> setenv P ... 0x0050: Clear Status Register
> |hermit> setenv
> |1: P <--- OK
> |hermit> setenv @ ... 0x0040: Word Program
> |hermit> setenv
> |1: <--- NG
> |hermit> setenv
> |hermit> setenv
> |hermit> setenv ` ... 0x0060: Lock/Unlock/...
> |hermit> setenv
> |1: <--- NG
> |hermit> setenv
> |error status: 000000b0
> |hermit> setenv
> |hermit> setenv pp
> |hermit> setenv
> |1: pp <--- OK
> |hermit> setenv ppp
> |hermit> setenv
> |1: <--- NG
> |hermit> setenv
> |hermit> setenv
> |hermit>
> +----------------------------------
>
> ソースを見まして、明らかにクサイ、ところを修正した結果、
> 直ったように思います。
>
> 修正後の操作ログ
> +----------------------------------
> |Hermit-At v1.1.21u (Armadillo-500) compiled at 15:59:06, Oct 14 2009
> |hermit> clearenv
> |hermit> setenv
> |hermit> setenv p
> |hermit> setenv
> |1: p <--- OK
> |hermit> setenv P
> |hermit> setenv P
> |1: P <--- OK
> |hermit> setenv @
> |hermit> setenv <--- OK (@で始まるものは隠しパラメータらしい)
> |hermit> setenv
> |hermit> setenv `
> |hermit> setenv
> |1: ` <--- OK
> |hermit> setenv pp
> |hermit> setenv
> |1: pp <--- OK
> |hermit> setenv ppp
> |hermit> setenv
> |1: ppp <--- OK
> |hermit>
> +----------------------------------
>
> 末尾にパッチを添付します。(command.c のパッチはおまけです)
> # この param.c は たいへんいい教材ですね。
>
> 以上ですが、よろしくお願いいたします。
armadillo メーリングリストの案内