Hard Fault 問題の対応に PDL syspm ドライバをアップデートする - KBA229335- Community Translated (JA)

Version 2

    Community Translated by  MoTa_728816          Version: **

     

    質問: PSoC 6 アプリケーションで Deep Sleep から起きるとハードフォールト(hard fault)になることがあるのはなぜですか?

     

    問題:

    非常に稀ですが Deep Sleep からの復帰がハードフォールトを引き起こす場合があります。これはシステムが flash / sflash (がアクセス可能になる前に) 早期のアクセスを要求することによります。

     

    ークアラウンド

    もし ModusToolbox を使用していて、この現象に遭遇した場合、syspm ドライバを最新版にアップデートしてください

    • フラッシュアクセスの問題ークアラウンドドライバのヴァージョン対応されました
    • Sフラッシュアクセスの問題ークアラウンドドライバのヴァージョン対応されました

     

    もし PSoC Creator を使用していて、この問題に遭遇した場合、cy_syspm.c ファイルにある (Cy_SysPm_CpuEnterDeepSleep() 関数の一部である) EnterDeepSleepRam() 関数に以下の修正をほどこしてください

     

    1. #2883行目のコード

     

    while(0U == _FLD2VAL(IPC_STRUCT_ACQUIRE_SUCCESS, REG_IPC_STRUCT_ACQUIRE(CY_IPC_STRUCT_PTR(CY_IPC_CHAN_DDFT))))

     

    を以下のコードに置き換えてください

     

    while (0U == _FLD2VAL(IPC_STRUCT_ACQUIRE_SUCCESS, (*ipcAcquire)))

     

    2. #2889行目のコード

     

    if (Cy_SysLib_GetDeviceRevision() == CY_SYSLIB_DEVICE_REV_0A)

     

    を以下のコードに置き換えてください

     

    if (deviceRev == CY_SYSLIB_DEVICE_REV_0A)

     

    3. #2797行目に以下の ipcAcquire 宣言を追加してください:

     

    volatile uint32_t *ipcAcquire = ((uint32_t *) (&REG_IPC_STRUCT_ACQUIRE(CY_IPC_STRUCT_PTR(CY_IPC_CHAN_DDFT))));

     

    4. #2798 行目に以下の deviceRev 宣言を追加してください:

     

    uint8_t deviceRev = Cy_SysLib_GetDeviceRevision();