私は現在、グリーンヒルズプロジェクトにおいてS32k344 BISTの実装を進めているところです。私はTresosやNXP DSを使用していないため、ソースコード形式のSW32K3_SPD_1.0.6_D2512を使用しています。ほとんどのbist関数はインポートできましたが、いくつかの定義だけはどこにも分かりません(どこにも見つかりません)。以下の質問に誰か答えてもらえますか?
1. S32k344がロックステップモードの状態でLBIST MBISTを動かしてもいいですか?
2. コードを調べて推測した以下の定義は正しいでしょうか?
#define BIST_MBIST_0 1U
#define BIST_MBIST_1 2U
#define BIST_MBIST_2 3U
#define BIST_MBIST_3 4U
#define BIST_MBIST_4 5U
#define BIST_MBIST_5 6U
#define BIST_MBIST_6 7U
#define BIST_MBIST_7 8U
#define BIST_MBIST_8 9U
#define BIST_MBIST_9 10U
#define BIST_MBIST_10 11U
#define BIST_LBIST_0 0U
私が使用した設定データは以下のとおりです。
static const BIST_CHANNEL_CONFIG_TYPE BistConfig[BIST_SAFETYBOOTCFG_NB] =
ヤージュ
ヤージュ
(BIST_CHANNEL_TYPE)BIST_MBIST_0、
(BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_1))
}、
ヤージュ
(BIST_CHANNEL_TYPE)BIST_MBIST_1、
(BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_2))
}、
ヤージュ
(BIST_CHANNEL_TYPE)BIST_MBIST_2、
(BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_3))
}、
ヤージュ
(BIST_CHANNEL_TYPE)BIST_MBIST_3、
(BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_4))
}、
ヤージュ
(BIST_CHANNEL_TYPE)BIST_MBIST_4、
(BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_5))
}、
ヤージュ
(BIST_CHANNEL_TYPE)BIST_MBIST_5、
(BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_6))
}、
ヤージュ
(BIST_CHANNEL_TYPE)BIST_MBIST_6、
(BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_7))
}、
ヤージュ
(BIST_CHANNEL_TYPE)BIST_MBIST_7、
(BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_8))
}、
ヤージュ
(BIST_CHANNEL_TYPE)BIST_MBIST_8、
(BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_9))
}、
//#endif
ヤージュ
(BIST_CHANNEL_TYPE)BIST_MBIST_9、
(BIST_CONTROL_TYPE)((0x80100000U) | BIST_MBIST_PTR_VAL(BIST_MBIST_10))
}、
ヤージュ
(BIST_CHANNEL_TYPE)BIST_MBIST_10、
(BIST_CONTROL_TYPE)(0x00100000U)
}、
ヤージュ
(BIST_CHANNEL_TYPE)BIST_LBIST_0、
(BIST_CONTROL_TYPE)((0x00001108U) | BIST_LBIST_PTR_VAL(BIST_NIL))
}
};
こんにちは、
1. S32k344がロックステップモードの状態でLBIST MBISTを動かしてもいいですか?
はい。S32K344のロックステップアーキテクチャは、STCU2 LBIST/MBISTの実行を妨げません。BIST機構はデバイスセーフティインフラストラクチャの一部であり、STCU2で管理される論理とメモリをテストするために設計されています。S32K3セーフティマニュアルには、ロックステップとSTCU2 LBIST/MBISTの両方が装置のセーフティ機構として明示されています。
2. コードを調べて推測した以下の定義は正しいでしょうか?
数値値は基本的にS32K344に正確ですが、セーフティ上の観点からセーフティブート構成にMBIST_10(HSE_ROMs)を含める必要はなく、推奨されるパスは検証済みのSPD構成を直接利用することです。
よろしくお願いいたします。
ピーター
ピーター、
ご返信いただき、誠にありがとうございます。ここ数日間、BISTテストの問題で行き詰まっています。私はS32k344ホワイトボードでテストしており、コードはGreen HillsのマルチIDE rev 8.1で構築しています。セーフティブーツのBISTが通っていません。コアやペリフェラルの最大クロック要件は満たされていると思います。外部水晶発振器16MHzとPLLからcore_clkを160MHzに設定し、AIPS_PLAT_CLKは80MHz、AIPS_SLOW_CLKは40MHz、DCM_CLKは40MHz、LBIST_CLKは40MHz、QSPI_MEM_CLKは160MHzに設定しています。bist 実行からユニットをリセットすると、DES レジスタが 0x00408175 になり、いくつかの予約ビットが設定され、FES レジスタが 0x2000 になります (意味がわかりません)。以下の質問にお答えいただけますでしょうか?
1. 上記のすべてのクロック信号は、MC_CGM->MUX_0_DC_x レジスタを介して有効化する必要がありますか?私は手に入れている
情報が矛盾していますが、現在有効になっています。
2. リファレンス・マニュアルのSTCU2章には、「EMACタイムスタンプメモリ上でMBISTを実行する際、MC_CGM MUX_9_9_DC_0[DIV]はEMAC_CLK_TS AIPS_SLOW_CLK周波数の少なくとも1.5倍であるべきであるように適切に設定されるべきである。」つまり、クロックを設定して、MC_CGM->MUX_9_DC_0レジスタで有効にする必要があるということですか?
3. SW32K3_SPD_1.0.6_D2512パッケージでS32_SPD_Demo例コードを見たい場合は、最新のNXP Design Studioをインストールし、spd zipファイルを更新サイトとしてインポートし、RTDパッケージも同時にインポートする必要があると思います。それで合っていますか?
4. MBIST 10はHSE_RAMS、MBIST 11はHSE_ROMSだと思います。SPDドキュメントフォルダにある以下の表を参照してください。
| MBIST | ||||
| BIST ID | BISTインスタンス名 | ドメインのリセット | セーフティブーツ | セーフティ診断 |
| 0 | SYS0_RAMS | 主要 | ü | ü |
| 1 | SYS1_RAMS | 主要 | ü | ü |
| 2 | DMA_TCD_RAM | 主要 | ü | ü |
| 3 | CM7_0_TOP | 主要 | ü | ü |
| 4 | CM7_1_TOP | 主要 | ü | ü |
| 5 | フレックス・キャン・ラムズ | 主要 | ü | ü |
| 6 | QSPI_PERI_RAMS | 主要 | ü | ü |
| 7 | EMAC_TSN_RAM | 主要 | ü | ü |
| 8 | EMAC_RAMS | 主要 | ü | ü |
| 9 | b03_ETF_RAMS | 主要 | ü | ü |
| 10 | HSE_RAMS | 主要 | ü | ü |
| 11 | HSE_ROMS | 主要 | ü |
考えられるすべての時計を確認しましたが、どれも正確だと思います。レジスタ内の設定データをNXP Studio SPDのサンプルプロジェクトの値と比較してみましたが、それらも正しかったです。新しい情報が1つあります。システムがBISTリセットから復帰した後、DCMROD3レジスタに値0x18が記録されているのを確認しました。このエラーを解決するにはどうすればよいですか?ありがとう。
XRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.pngXRen_Parker_0-1788544110794.png
こんにちは、
STCUの自己診断シーケンスが開始され、ST_DONEリセットフェーズに到達しました。しかし、STCUは回復不能な故障(STCU_URF)も報告しており、これがSAFのBISTドライバがその後BIST_NORUNを報告する理由を説明しています。したがって、この問題はBISTが一度もトリガーされなかったCASEではなく、STCUの実行・設定失敗であるようです。
S32K3では、破壊リセットと機能リセットの両方の表示が同時に見られる場合、それはリセット履歴を表示している可能性が高く、必ずしも直接のリセット元を表示しているとは限りません。
ソフトウェアを移植するとのことですので、まずはPLLから取得したデータでMBISTテストのみを実行して、合格するかどうかを確認してみることをお勧めします。
また、テスト時の時計設定を再度確認してください。
よろしくお願いいたします。
ピーター
こんにちは、
S32K344では、RCCUがロックステップの不一致を報告し、デバッガと接続すると、単独実行では決して起こらないRCCU関連の故障が発生することも珍しくありません。
例の設定に従うなら、フルBISTです。
この例はテスト済みで、デフォルト設定で完全に動作します。
しかし、あなたのポートはURFエラーを報告しているので、すべてが同じではないことがわかります。
STCUのドキュメントを見ると、ユーザーはテストへのポインタを設定できます。
54.9.4 STCU2 設定 (CFG)
petervlna_0-1788766597312.pngpetervlna_0-1788766597312.pngpetervlna_0-1788766597312.pngpetervlna_0-1788766597312.png
まずは検査を縮小してから、徐々に検査を増やす方法もあります。
MBISTおよびLBIST制御レジスタでは、どのテストが最後に行われるかを設定できます:
petervlna_1-1788766735386.pngpetervlna_1-1788766735386.pngpetervlna_1-1788766735386.pngpetervlna_1-1788766735386.png
例えばCFGレジスタで を指し示すことで、単一のMBISTパーティションを実行できます:
petervlna_2-1788766853581.pngpetervlna_2-1788766853581.pngpetervlna_2-1788766853581.pngpetervlna_2-1788766853581.png
petervlna_3-1788766973925.pngpetervlna_3-1788766973925.pngpetervlna_3-1788766973925.pngpetervlna_3-1788766973925.png
よろしくお願いいたします。
ピーター
mbistを順番に実行してみたり、個別のmbistテストIDを使って実行してみたりしました。結果は同じで、新たな状態は観察されなかった。トリガー設定直前のセーフティブート用の以下のSCU2レジスタ設定を確認できますか?ありがとう。
XRen_Parker_0-1788899133217.pngXRen_Parker_0-1788899133217.pngXRen_Parker_0-1788899133217.png
これは、S32k344マイクロコントローラでLBIST/MBISTの実装に苦労しているコミュニティの方々のためのものです。何日も進展がなかった後、ようやく試験に合格することができました。SPDドライバー1.06のカスタム移植でそうしました。ドライバーコードは動作しますが、故障を回復不能な障害に設定する必要があります。以下は設定が必要なクロックです。これらのいずれかが正しく設定されていない場合、テストシーケンスが同時に実行され、他のステータスが表示されず、完了ビットが設定されないため、テストは BIST_NORUN(0x03) ステータスで失敗します。
1. FXOSCモジュールのCTRLレジスタを設定して外部オシレーターまたは水晶発振器を使用するようにします。これがS32k344で最大160MHzを得る唯一の方法です。
2. PLL回路用にPLLDIGモジュールを設定し、PLLDVレジスタのrdiv、mfi、およびodiv2ビットを設定して、最大周波数が出力されるようにします。
3. PLLクロックをcore_clkとemac_clkのリファレンス・マニュアルの手順に従って切り替え、MC_CGM_MUX_xレジスタ設定を行います。
4. MC_CGM->MUX_0 レジスタと MC_CGM->MUX_9 レジスタを設定して、以下のクロック信号を取得します。
AIPS_PLAT_CLKを80MHzに設定
AIPS_SLOW_CLKを40MHzに設定
HSE_CLKを80MHzに設定
DCM_CLKを40MHzに設定
LBIST_CLKは40MHz
QSPI_MEM_CLKを160MHzに設定
EMAC_CLKは80MHz
注: RUNSW レジスタのビット 8 と 9 を設定しないでください。設定するとテストが失敗します。これはSPDドライバーコードには記載されていません。リファレンス・マニュアルには矛盾した情報があるため、これを言及します。