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