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