こんにちは、
KW47 SDKのBluetoothLEHost_Init()について質問があります。
私のアプリケーションはFreeRTOS上で動作しており、いくつかのタスクはxTaskCreateStatic()を使って事前に作成しています。
これらのタスクを作成した後、BluetoothLEHost_Init() を呼び出して BLE を初期化します。SDKsをステップアップしていると、NBUとの通信中に初期化プロセスがタスク間イベント情報を待っていることに気づきました。その結果、BluetoothLEHost_Init() がまだ実行中で、関数呼び出し自体が戻る前に、他の優先度の低いタスクがスケジュールされ、実行が開始されます。
念のため申し上げますが、私が言及しているのは、BluetoothLEHost_Init() に提供されるホスト初期化完了コールバックのことではありません。私はそのコールバックを待つ必要はありません。
私が懸念しているのは、BluetoothLEHost_Init() が戻る前にタスク切り替えが発生することです。BluetoothLEHost_Init()関数呼び出し自体が戻るまで、他のアプリケーションタスクの実行を防ぎたいです。
私の質問は以下のとおりです。
・BluetoothLEHost_Init()を実行している間(例えばNBU通信待ち中)にタスク切り替えを防ぐための設定、API、または推奨される方法はありますか?
・BluetoothLEHost_Init()が完了し戻ることを他のタスクに譲ることなく確実にする方法はありますか?
・もしそのような方法が存在するなら、推奨される方法の指針や例を教えていただけますか?
私の目標は、BluetoothLEHost_Init()が戻るまで、アプリケーションタスクが通常のプロセッシングを開始しないようにすることです。
どんなアドバイスでも大変ありがたいです。
こんにちは、 @t_hosomi さん。お元気でお過ごしでしょうか。
以下に説明するように、異なるFreeRTOSアプローチで他のタスクの実行を保留することができます:
どちらの選択肢も FreeRTOSリファレンスマニュアル を参照することをお勧めします。後者については、イベントグループの作成方法やイベント待ちタスクの設定を示すSDKの「freertos_event_cm33_core0」例を参照することをお勧めします。
この情報がご要望にお応えできるかどうか、お知らせください。