2361431_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2361431_ja-JP

2361431_ja-JP

S32K358をベースとしたSPDのBIST

こんにちは:

ソフトウェアトリガー を介した電源投入時自己診断テストの ために、S32_SAF (SPD) v1.0.6 の Bist_Run() API を使用して、S32K358 上で STCU2 オンライン BIST (LBIST + MBIST) を実行します

プラットフォーム

  • MCU: NXP S32K358 、Cortex-M7
  • RTD: 6.0.0 (AUTOSAR 4.7)
  • SPD: S32_SAF v1.0.6、ビルド S32_SAF_1_0_6_20250818
  • システムクロック:FIRC 48MHz → PLL 160MHz
  • PMIC: FS27(デバッグモード)
  1. RUNSW=0x301 (LBSWPLLEN + MBSWPLLEN が有効): LOCKESW がトリガーされます すぐに STCU起動時。レジスタダンプには、 LB_END0=0x0、 MB_END0=0x0  テストチャネルは一つも実行されませんでした。これは、PLLロックエラーがBIST実行時ではなく、STCU初期化時に発生したことを示しています。ERR_STAT=0x180000はLOCKESWとWDTOSWが失敗したことを意味します

  2. RUNSW=0x1 (PLL監視なし):PLLが初期化されているかどうかに関わらず、MCUは永久にハングアップし、リセットされません。これはSTCUハードウェアが動作するためにPLLクロックを必要とすることを示唆しているが、 0x1 PLLメンテナンス機構は作動しません。

  3. これにより 矛盾:PLLイネーブルビットを設定すると即座にLOCKESWが発生するが、設定しないとMCUがハングアップする。

私の質問は、S32K358におけるSTCU2ソフトウェアトリガー(RUNSW)の正しい構成とシーケンスは何ですか?ということです。または、特別な設定はありますか?


添付ファイルは私のメインコードです。問題点を確認するのを手伝ってください。よろしくお願いします。

Re: BIST of SPD based on S32K358

こんにちは、 @danielmartynek さん

MCU BISTのテストは成功しましたが、結果が正しいかどうか確認していただけますか?Mcu_GetResetReason 関数を使用すると、システムが Bist_Run 関数で停止する理由がわからないため、アドレスを直接読み取ることで今のところは問題ありません。以下は私のbist関数です。

void BSW_BistHandler(void)
ヤージュ
uint32_t stcu_cfg = *(volatile uint32_t *)0x403A000CUL;

if (stcu_cfg == 0U)
ヤージュ
if ((*(volatile uint32_t *)0xE000EDF0UL & 0x1UL) == 0U)
ヤージュ
Bist_Run(BIST_SAFETYBOOT_CFG);
のために(;;) {}
}
それ以外
ヤージュ
Printf("デバッガーが接続されました。BISTはスキップされました\r\n");
}
}
それ以外
ヤージュ
Bist_StatusType ステータス = Bist_GetExecStatus(BIST_SAFETYBOOT_CFG);
uint32_t errStat = Bist_GetRawErrorStatus();

/* 讀取 STCU 一時保存: LBIST/MBIST 完了状態與成功狀状態 */
uint32_t lb_end = *(volatile uint32_t *)(0x403A005CUL); /* LB_END0 */
uint32_t lb_stat = *(volatile uint32_t *)(0x403A004CUL); /* LB_STAT0 (1=合格) */
uint32_t mb_end = *(volatile uint32_t *)(0x403A014CUL); /* MB_END0 */
uint32_t mb_stat = *(volatile uint32_t *)(0x403A010CUL); /* MB_STAT0 (1=合格) */

Printf("=== MCU BIST 結果 ===\r\n");
Printf(" ステータス : %d (%s)\r\n", status,
(ステータス == BIST_OK) ?"わかりました" :
(ステータス == BIST_FAILED) ?"失敗した" :
(ステータス == BIST_ERROR) ?"エラー" :
(ステータス == BIST_NORUN) ?「NORUN」:
(ステータス == BIST_INTEGRITY_FAIL) ?「INTEGRITY_FAIL」:
(ステータス == BIST_BUSY) ?「ビジー」: 「不明」);
Printf(" ERR_STAT : 0x%08X\r\n", errStat);
Printf(" LBIST END : 0x%X STAT: 0x%X (END=0x1、STAT=0x1 が予想されます)\r\n", lb_end, lb_stat);
Printf(" MBIST END : 0x%04X STAT: 0x%04X (END=0x1FFE、STAT=0x1FFE を期待)\r\n", mb_end, mb_stat);

}

そして結果はこうなる

BillWen_0-1778228397922.pngBillWen_0-1778228397922.png

何か見落としている点があれば教えてください。よろしくお願いします。


よろしくお願いします。

BR、ビルウェン


Re: BIST of SPD based on S32K358こんにちは、ダニエルさん。

私はセクション3.4.1の前提条件に従いました。
- Bist_Run() は Mcu_DistributePllClock() の後に呼び出され、Mcu_SetMode() の前に呼び出されます。
- BISTの前にペリフェラルの初期化は行わない
- PLLはロックされ、分散されています(160MHz)。
- デバッガーが接続されていません (DHCSR C_DEBUGEN = 0)

BISTリセット後のSTCU2レジスタダンプ:
- RUNSW = 0x00000300 (BISTは0x301でトリガーされました)
- CFG = 0x1021E000 (PTR=0x81、LB_DELAY=0xF、WRP=0)
- WDG = 0x000061A7
- ERR_STAT = 0x00180000 (LOCKESW + WDTOSW)
- LB_END0 = 0x00000000 (LBIST チャネルが完了していない)
- MB_END0 = 0x00000000 (MBISTチャネルが完了していません)

STCUの設定は正しく記述されています(CFG、WDGの値が一致しています)。
しかし、LOCKESWはロックフェーズ中にすぐに発生する - テストチャネルなし
全く実行しない。これはS32K358で常に発生します。

S32K358でソフトウェアトリガーによるBIST中にLOCKESWが発生する原因は何でしょうか?
追加のクロックゲーティングまたはMC_MEパーティション構成はありますか?
STCUがテスト対象のSRAMブロックをロックする前に必要ですか?

ありがとう
BR、ビルウェン
Re: BIST of SPD based on S32K358

こんにちは、 @BillWen さん

PLLは前提条件の一つであり、有効にしておく必要があります。

danielmartynek_0-1778146612597.pngdanielmartynek_0-1778146612597.png

システムクロックを設定した後、すぐに電源モードの切り替えを実行しているようですね。

Mcu_SetMode(McuModeSettingConf_0);


この呼び出しを削除して、もう一度テストしていただけますか?


BR、ダニエル

Re: BIST of SPD based on S32K358

こんにちは、 @danielmartynek さん

前回の返信で述べたように、私は既にBist_Run関数を実行して結果を取得できています。BISTプロセスが正しいかどうかを確認していただきたいだけです。

よろしくお願いします。

BR、ビルウェン

Re: BIST of SPD based on S32K358

こんにちは、 @BillWen さん

Bist_Run() 関数のどの部分で処理が停止してしまうのでしょうか?


Re: BIST of SPD based on S32K358

こんにちは、 @BillWen さん

はい、これは正しいようです。期待通りのBIST結果が得られています。


BR、ダニエル


Tags (1)
No ratings
Version history
Last update:
‎05-14-2026 02:32 AM
Updated by: