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

Fumito Morishima email@hidden
2005年 9月 5日 (月) 20:57:59 JST


森島です。

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

原因ですが、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)で調べる事が可能です。


email@hidden wrote:

>浅井です。
>
>ブートローダーにて、SDRAMの auto-precharge の設定を有効にすると、発生しなくなる
>ということは
>根本原因はどういったことになるのでしょうか。
>また、busクロックの変更はどのようにすればよろしいでしょうか。
>
>
>できれば、推奨される(ハードウェア的に動作保証される)方法での対応ができればと思
>      っています。
>
>ほかにも対策がありましたら、ご教授ください。
>
>
>
>宜しくお願いいたします。
>
>
>
>
>
>
>
>Fumito Morishima <email@hidden> 2005/09/01 11:46:23
>
>
>
>Armadillo series general discussion list <email@hidden>に返
>      信してください
>
>宛先: Armadillo series general discussion list
>      <email@hidden>
>cc:
>件名: [Armadillo:00477] Re: ウォッチドッグタイマーについて
>
>
>
>森島です
>
>ブートローダーにて、SDRAMの auto-precharge の設定を有効にすると、
>watchdog によるリブート時にエラーが発生しなくなりました。
>
>ただ、この設定に問題があることが以下のErrataにて
>報告されているため、推奨はできません。
>http://download.atmark-techno.com/armadillo-9/doc/datasheet/ER638D2.pdf
>あわせて、busのクロックを50MHz以下に落とす必要があります。
>
>一応 auto-precharge を有効にするための hermit の patch を添付しますので、
>よければ試してみてください。hermitのソースは以下にあります。
>http://download.atmark-techno.com/armadillo-9/source/hermit-1.3-armadillo9-3.tar.gz
>
>
>30回程度のリブートを行い、無事に起動することを確認しています。
>
>
>
>
>_______________________________________________
>armadillo mailing list
>email@hidden
>http://lists.atmark-techno.com/mailman/listinfo/armadillo
>  
>




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