PSoC®/PRoC™BLEアップグレード可能なスタックOTAプロジェクトが頻繁に電源をオン/オフするとランチャープロジェクトでスタックする - KBA219824 - Community Translated (JA)
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
Community Translated by NoTa_4591161
Version: **
Translation - English: PSoC®/PRoC™ BLE Upgradable Stack OTA Project Gets Stuck in Launcher Project if Frequently Powered ON...
質問:
PSoCまたはPRoC BLEチップを256Kフラッシュで使用し、アップグレード可能なスタックOTAをアプリケーションプロジェクトにマージします。頻繁に電源をオン/オフすると、プロジェクトがランチャープロジェクトでスタックし、フラッシュが破損します。この問題を解決するにはどうすればよろしいでしょうか?
回答:
これは、同じデータがすでにフラッシュにある場合でも、ブートローダーが起動中に毎回メタデータに書き込むために発生します。フラッシュ書き込みには、デバイスのVddおよびVssピンに安定した電力が必要です。起動時に同じデータがフラッシュにある場合にブートローダーがメタデータに書き込むのを防ぐには、Launcher.cファイルの2812行から2828行を変更します。これにより、フラッシュに書き込む前に同じデータがすでにフラッシュにあるかどうかがチェックされます。ブートローダーV1.5以前のバージョンに問題があり、これは今後のバージョンで修正される予定です。
if (rowData[address % CYDEV_FLS_ROW_SIZE] != runType)
{
rowData[address % CYDEV_FLS_ROW_SIZE] = runType;
#if(CY_PSOC4)
(void) CySysFlashWriteRow((uint32) rowNum, rowData);
#else
(void) CyWriteRowData(arrayId, rowNum, rowData);
#endif /* (CY_PSOC4) */
#if(CY_PSOC5)
/***************************************************************************
* フラッシュへの書き込み時に、命令キャッシュ内のデータが古くなる可能性があります。
* したがって、キャッシュデータは、フラッシュに書き込まれたばかりのデータとは相関しません。
*キャッシュ内のデータを無効にし、フラッシュから新しい情報を強制的にロードするには、
* CyFlushCache()の呼び出しが必要です。
***************************************************************************/
CyFlushCache();
#endif /* (CY_PSOC5) */
}