[Armadillo:04279] Re: [Armadillo-500] NORフラッシュへの書き込みとブートについて
Masafumi Kuramoto
email@hidden
2009年 5月 27日 (水) 10:35:11 JST
SHOJI様
倉本です。
Yasushi SHOJI さんは書きました:
> At Tue, 26 May 2009 11:13:42 +0900,
> Masafumi Kuramoto wrote:
>>>> ちなみに、書き込みの手順はどちらも同じでバイナリファイルを指定し、
>>>> 0xA0000000から書きこむようにしています。
>>>> また、CS0を32bitバス幅に設定してから、0xA0000000をダンプして見たところ、
>>>> 期待した通りのイメージが書かれていることも確認できています。
>>> ITRONのバイナリと hermitのバイナリを比較してみました?
>>> 同じであれば同じように動作するはずですよ?
>> リプライありがとうございます。
>>
>> レジスタへの設定値等は問題なかったのですが、設定値の読み出し、書き込みの
>> 方法に問題があったようです。
>
> もし問題なければ、後学のためにどう間違ったか教えてもらえると嬉しいです。
お恥ずかしい話で恐縮なのですが、今回の問題は、私のARMアセンブラに対する
理解が足りなかったためで、当初、
ldr r2, =D_L2CC_CTRL
...
D_L2CC_CTRL DCD 0x00030024
...
と書けば、D_L2CC_CTRLの値がr2に代入されると思っていたのです。ところが、
逆アセンブラでこれを見ると、
08000034 e59f20ec ldr r2, $00000128
...
08000064 00030024 andeq r0, r3, r4, lsr #20
...
08000128 a0000064 andge r0, r0, r4, rrx
となっており、意図した値が実際には入っていなかったようです。これを、
ldr r2, D_L2CC_CTRL
...
D_L2CC_CTRL DCD 0x00030024
...
とすることで、
08000034 e59f2004 ldr r2, $00000040
...
08000040 00030024 andeq r0, r3, r4, lsr #20
となり、正しい値がレジスタに取り込めるようになったという訳です。
どうも、=の使い方を勘違いしていたようで、
ldr r2, =D_L2CC_CTRL
...
D_L2CC_CTRL EQU 0x00030024
...
という記述方法とごっちゃになっていたようです。
i.MX31は確かに強力なCPUなのですが、ブートの仕方に癖があり、弊社で所有す
るJTAG-ICEでは、bootrom側が常に見えており、NOR Flashが見えていなかったた
めミスの発見が遅れました。
あと、アットマークテクノ様には直接関係ないことですが、JTAG-ICEをつないだ
状態ではCPUは停止していると勘違いしていましたが、今回の経験で、PowerOn後
ある程度CPUは実行を進めてしまうこともあるんだということが分かりました。
結局自己解決してしまったのですが、また困ったことが出てきましたら質問させ
て頂くことがあろうかと思います。その際は、よろしくお願いします。
armadillo メーリングリストの案内