3

MPC875CPUでソフトウェアウォッチドッグタイマーを使用する際に問題が発生しました。

タイマーはリセット信号を非常に速くトリガーします。プリスケーリングを有効にしてカウントダウン値(SWTC)を最大に設定しましたが、タイマーをオンにしてリセット信号を受信するまでに約0.5秒未満かかります。

これが私がそれを行う方法です(JTAGスクリプト):

CF   TAR      875
CF   GRP      400F

INN

SR  PLPRCRK 0x55CCAA33
SR  PLPRCR  0x1A4D5000  ; Configure Phase-Lock Loop

SR  SCCRK   0x55CCAA33
SR  SCCR    0xF47F0002  ; Configure System Clock

SR  SYPCR   0xFFFFFF87  ; Enable the Software Watchdog Timer


SR SWSR 0x556c  ; Reset the timer
SR SWSR 0xaa39

SR SWSR 0x556c
SR SWSR 0xaa39

SR SWSR 0x556c
SR SWSR 0xaa39

SR SWSR 0x556c
SR SWSR 0xaa39

SR SWSR 0x556c
SR SWSR 0xaa39

SR SWSR 0x556c
SR SWSR 0xaa39

SR SWSR 0x556c
SR SWSR 0xaa39  ; The HRESET issued after few moments from this point

プリスケーリングを有効にすると(SYPCRのSWPビット)、最後のカウンタリセット(最新のSR SWSRコマンド)から約0.5秒後にHRESET信号をアサートします。また、プリスケーラを無効にすると、SWSRレジスタを最初に変更する前でも(非常に短時間で)HRESET信号がアサートされます。このように、タイマーは設定の変更に何らかの形で反応しているように見えますが、タイミングに問題があります。

すでに確立され実行されているアプリケーション(VxWorks上)で同じ構成を取得しているが、ウォッチドッグタイマーがオフになっているため、システムクロックとフェーズロックループは正しく構成されているはずです。

また、SYPCRレジスタのSWFビットをクリアして、JTAGがCPUを停止している間にタイマーがカウントされないようにしました(FRZ信号をアサートすることによって):その後、ブレーク/ステッピングモードを終了するまでのみ機能し、アプリケーションを実行すると、リセットが発生します非常に短い時間。

リファレンスマニュアルによると、タイマーは次のように機能します。

MPC885ソフトウェアウォッチドッグタイマーダイヤグラム

ダウンカウンターがあり、ゼロに達すると、回路はHRESET信号をアサートするか、システムリセット割り込みを発生させます。カウンタは2バイトの長さで、オプションで2048の係数で事前スケーリングされます。システムクロックを2048で割ったレートでデクリメントされます。したがって、プリスケーラが有効で最大カウンタ値1 / (80MHz / 2048) * (65535 * 2048)が約3435秒の場合の予想タイムアウトです。プリスケーラを無効にすると、約1.7秒になります。実際の値ははるかに小さく、事前スケーリングされたカウンターでは約0.5秒、プリスケーラーがオフの場合ははるかに小さくなります(測定すらできません)。

図によると、SWTはコアクロックとSYPCRレジスタのみに依存します。レジスタの説明は次のとおりです。

MPC885システム保護制御レジスタ-図 MPC885システム保護制御レジスタ-フィールドの説明

値0xFFFFFF87を設定しました(実際にはさまざまなオプションを試しました)。これは、次のことを意味します。

  • SWTC:0xFFFF(タイマーカウント、SWSRレジスタにマジックシーケンスを書き込むと、最大値が内部ダウンカウンター(図を参照)にロードされます)。
  • BMT:0XFF(バスモニタータイマーカウント、最大値)
  • BME:1(バスモニターが有効になっています。設定された値に関係なく常にJTAGで有効になっているため、ビットをオフにする意味はありません)。
  • SWF:0(JTAGがFRZ信号をアサートした場合でもタイマーはカウントされます)。
  • SWE:1(ウォッチドッグが有効)。
  • SWRI:1(HRESETをアサートするように構成されていますが、NMIへの切り替えは役に立ちませんでした)。
  • SWP:1(SWTCは2048の係数で事前スケーリングされています)。

助言がありますか?

4

1 に答える 1

1

あなたはあなたの公式を確信していますか?変に見えます。1 /(80MHz / 2048/65536)= 1.5秒のようなものが、ウォッチドッグの最大期間の正しい値になると思います。

于 2013-01-16T10:59:21.957 に答える