[Armadillo:04672] Re: [a500][hermit][patch] setenv できない文字列がある問題について

nakai email@hidden
2009年 10月 15日 (木) 16:31:57 JST


nakaiです。

> (command.c のパッチはおまけです)

これは、多分プロンプト文字列を消さないためのものですよね?
こちらも確認してマージさせていただきたいと思います。


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