こんにちは、 @lukaszadrapa
解決済み: Re: NXP s32k312 HSE リセット問題 - NXP コミュニティ
現在、RTD 4.0.0 を使用しており、新しいバージョンにアップグレードするオプションはありません。デバッガ接続なしで発生するHSEリセットの問題を解決するために、次のことを実装しました。 解決策1 以前のご提案に基づいて:
解決策1:
/* HSE_CLKを設定し、CONFIG_REG_GPRレジスタにアクセスする前に、
ドライバは、セキュアBAFがWFI状態に入るのを待つ必要があります。
PRTN0_CORE2_STATレジスタ。*/
する {
WfiStatus = (BOARD_MC_ME->prtn0_core2_stat & MC_ME_PRTN0_CORE2_STAT_WFI_MASK);
} while (WfiStatus != MC_ME_PRTN0_CORE2_STAT_WFI_MASK);
このソリューションは、デバッガーなしで適切なリセット動作を確保するために、クロックの初期化中に実装されます。
ただし、NXP コミュニティは別のアプローチも提案しています。
解決策2:
#MU_FSR_ADDRESS (揮発性 os_uint32_t*)0x4038c104U を定義します
#HSE_INIT_OK_SHIFT 24U を定義します
#UTEST_HSE_ENABLED_ADDRESS (揮発性 os_uint32_t*)0x1B000000U を定義します
#UTEST_HSE_ENABLED_DEFAULT 0xFFFFFFFFU を定義します
(UTEST_HSE_ENABLED_ADDRESS != UTEST_HSE_ENABLED_DEFAULT)の場合
{
ボードのHSEinitを待機します。
}
void board_waitforHSEinit(void)
{
揮発性 os_uint32_t* Mu_FSR_アドレス = MU_FSR_ADDRESS;
(((*Mu_FSR_Address >> HSE_INIT_OK_SHIFT) & 0x01) != 0x01U の間);
}
どちらの解決策もデバッガなしでリセットの問題を解決しますが、 解決策 2 : HSE ステータス ビットが予期せず破損したり、まったく設定されていない場合 (たとえば、ハードウェア障害が原因)、ソフトウェアが while ループ内で無期限に停止する可能性があります。
デバッガーのサポートなしで HSE リセットの問題を処理する場合、これら 2 つのアプローチのどちらがより適切かつ堅牢であるかを教えてください。