Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

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

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

ChaitanyaV_61
Employee
Employee
50 questions asked 25 likes received 25 sign-ins

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

0 件の賞賛
292 件の閲覧回数
寄稿者