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

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


nakaiです。

# ゴミが出ちゃいました。すみません。

「setenv p」の件、ご報告有難う御座います。
確認してみましたが、確かに変な動作になります。
ご指摘のとおり、
>>         (文字列末の "p\0" が 16bit boundary で 0x0070 になる場合が問題)
この場合が問題で、(多分)FlashメモリのStatusRegisterが見えるようになっている
と思います。

教えていただきました修正内容ですが、問題ないと思います。
パラメータ文字列先頭アドレスを取得する関数なので、
Flashメモリ上のアドレスに'\0'を代入する必要がありませんでした。

本不具合は、次回のアップデート時に修正したいと思います。


nakai さんは書きました:
> 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 mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo



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