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