[Armadillo:00489] Re: ウォッチドッグタイマーについて

email@hidden
2005年 9月 6日 (火) 09:40:27 JST


浅井です。

詳細のご説明ありがとうございます。
watchdog によるリセット後にSDRAMが正常動作していないという事ですが、
原因究明・修正(SDRAMが正常動作するように)の見通しはいかがでしょうか。







Fumito Morishima <email@hidden> 2005/09/05 20:57:59



Armadillo series general discussion list <email@hidden>に返
      信してください

宛先: Armadillo series general discussion list
      <email@hidden>
cc:
件名: [Armadillo:00485] Re: ウォッチドッグタイマーについて



森島です。

説明が足りなくてすみません。とりあえず現状分かっている事を書きます。

原因ですが、watchdog による リセットが発生した後、
SDRAMが正常動作していないことです。

bootloaderにメモリのチェックを行うプログラム
(書き込んだ値を読み出して整合性を確認する)を盛り込み、
watchdogのリセットかけたところ、時々エラーが発生する事から
上記判断をしています。

この現象は、power on reset時には発生しません。
また、一度読み込みを行ったアドレスに対してもエラーは発生しないようです。

auto-precharge を on にすることで現象を回避できる事から、
ブート時に発行する precharge all コマンドが
何らかの理由で失敗していると予想しています。


errataに従った修正を行う場合ですが、
busのクロックを50MHzに落とし、auto-precharge を on に
するのがよいと思います。

クロックの設定を行っているソースコードは、bootloader内にあります。
(
http://download.atmark-techno.com/armadillo-9/source/hermit-1.3-armadillo9-3.tar.gz
)
hermit-1.3-armadillo9-3/src/target/boot.S です。

54行目の
orr r1, r1, #0xa40000 を
orr r1, r1, #0xd00000 に
変更することで、50MHzになります。

クロックの設定に関する詳細は、
http://download.atmark-techno.com/armadillo-9/doc/datasheet/EP9315_Users_Guide.pdf

の147pを参照してください。

また、SDRAMコントローラに関しては Chaper13に、
SDRAMの初期化シーケンスに関しては 499p に記載されています。


他の対処法ですが、
リセット時にメモリへのアクセスを行うことで、現象を防げるようです。
これはアクセスにより、prechargeされるからだと思います。

実際、bootloader にて 0xc0000000 - 0xc2000000, 0xc4000000 - 0xc6000000
の範囲で0x400番地ごとに一度読み込みを行う処理を追加すると
現象が発生しませんでした。

リセット発生時にその要因が power on reset なのか watchdog なのかを調べ
bootloaderで処理を分けるのがよいかもしれません。
要因は、PwrStsレジスタ(0x80930000)で調べる事が可能です。

_______________________________________________
armadillo mailing list
email@hidden
http://lists.atmark-techno.com/mailman/listinfo/armadillo









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