1 Reply Latest reply on Apr 27, 2020 10:13 PM by JuyoungJ_06

    Community Translation - Updating PDL syspm Driver for Hard Fault Problem – KBA229335

    MoTa_728816

      Hi,

       

      I'd like to translate KBA229335 into Japanese.

       

      moto

       

      Original KBA: KBA229335

      Updating PDL syspm Driver for Hard Fault Problem – KBA229335

       

      Translated by: MoTa_728816

      =============================

      タイトル: Hard Fault 問題の対応に PDL syspm ドライバをアップデートする - KBA229335

       

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

       

      問題:

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

       

      ワークアラウンド:

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

      • フラッシュアクセスの問題 (ワークアラウンド #1 と #3) は syspm ドライバのヴァージョン 4.30 で対応されました (psoc6pdl-1.3.0)。
      • Sフラッシュアクセスの問題 (ワークアラウンド #2 と #4) は syspm ドライバのヴァージョン 4.50 で対応されました (psoc6pdl-1.4.0)。

       

      もし 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();

       

      =============================

       

      17-Apr-2020

      moto