VR5510: I2C ウォッチドッグ リフレッシュは、非同期モードが有効になっている場合でも ISR でブロックされます - 真の非ブロッキング サポートNXPチームの皆様、こんにちは。
現在VR5510 PMICのデバッグを行っているのですが、ウォッチドッグの更新に関連するリアルタイムスケジューリングの問題に遭遇しました。
MCAL I2C ウォッチドッグのリフレッシュ (I2C を介して VR5510 ウォッチドッグにフィードする) は、 同期 手術。同期待機は割り込みコンテキスト内から呼び出されるため、CPUをブロックし、他のタスクのリアルタイムスケジューリングを低下させます。
ドライバーの設定やコードに 非同期 オプションがあるのに気づきました。しかし実際には同期のビジー待機(I2C転送が完了するまでブロックとポーリングを行う)を実行しているため、実際には転送を呼び出し元から切り離すことはありません。
私の質問:
- VR5510のウォッチドッグリフレッシュを公式にサポートされた方法で実行することは可能ですか? 真のノンブロッキング (例えば割り込み駆動かDMA駆動のI2C)で、他のタスクを停止させないために?
- 非同期オプションがノンブロッキングであることが想定されている場合、現在の同期ビジーウェイト動作は既知の制限事項でしょうか、それとも私の側の設定の問題でしょうか?
何かご助言、設定例、またはサンプルコードをご提供いただければ大変ありがたいです。
よろしくお願いします。
Re: VR5510: I2C watchdog refresh blocks in ISR even with async mode enabled – is true non-blocking sこんにちは、 @Jerry_cao
投稿ありがとうございます。
あなたが言及しているのは、使用されている以下のAPIでしょうか?
Std_ReturnType I2c_AsyncTransmit(uint8 チャネル、 const I2c_RequestType ∗ RequestPtr ) 「?
どのバージョンのRTDが使用されていますか?
BR
チェイン
Re: VR5510: I2C watchdog refresh blocks in ISR even with async mode enabled – is true non-blocking sこんにちは:
私のバージョンは:
* プロジェクト:RTD AUTOSAR 4.4
* プラットフォーム:CORTEXM
* ペリフェラル : VR5510
* 依存関係:なし
*
* Autosar バージョン:4.4.0
* Autosar リビジョン:ASR_REL_4_4_REV_0000
* AUTOSAR Conf.Variant :
* ソフトウェアバージョン:4.0.2
* ビルドバージョン:S32_RTD_4_0_2_HF02_D2311_ASR_REL_4_4_REV_0000_20231103
*
* (c) 著作権 2020-2023 NXP セミコンダクターズ
* 無断転載を禁じます。
*
この関数を使用するPmic_VR55XX_TriggerWatchdog
Re: VR5510: I2C watchdog refresh blocks in ISR even with async mode enabled – is true non-blocking sこんにちは、 @Jerry_cao
ご確認いただきありがとうございます。
対応するコードを確認すると、 I2C非同期通信用のVR5510ソリューションはRTD5.0.0QLP04に実装されていることがわかります。
詳細については、このバージョンのRTDに含まれる関連コードをご確認ください。
BR
チェイン
Re: VR5510: I2C watchdog refresh blocks in ISR even with async mode enabled – is true non-blocking sこんにちは:
私のバージョンは:
* プロジェクト:RTD AUTOSAR 4.4
* プラットフォーム:CORTEXM
* ペリフェラル : VR5510
* 依存関係:なし
*
* Autosar バージョン:4.4.0
* Autosar リビジョン:ASR_REL_4_4_REV_0000
* AUTOSAR Conf.Variant :
* ソフトウェアバージョン:4.0.2
* ビルドバージョン:S32_RTD_4_0_2_HF02_D2311_ASR_REL_4_4_REV_0000_20231103
*
* (c) 著作権 2020-2023 NXP セミコンダクターズ
* 無断転載を禁じます。
*
この関数を使用するPmic_VR55XX_TriggerWatchdog