Hard Fault 問題の対応に PDL syspm ドライバをアップデートする - KBA229335- Community Translated (JA)
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
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 *) (®_IPC_STRUCT_ACQUIRE(CY_IPC_STRUCT_PTR(CY_IPC_CHAN_DDFT))));
4. #2798 行目に以下の deviceRev 宣言を追加してください:
uint8_t deviceRev = Cy_SysLib_GetDeviceRevision();
- タグ:
- psoc creator