実現したいこと
FreeRTOSのキュー機能を使って、イベント通知する処理を
実装したい。
このため、FreeRTOSのxQueueSend関数やxQueueReceive関数が
スレッドセーフに実行されるのかを知りたいです。
前提
ESP-IDFの環境において、BuletoothLEイベントをキューを通して
イベント処理タスクに通知しています。
これがESP32(マイコンです)では動いたのですが
ESP32-C6では、キューイングのタイミングでエラーになっています。
発生している問題・エラーメッセージ
assert failed: xQueueGenericSend queue.c:936 (pxQueue) Core 0 register dump: MEPC : 0x4080096e RA : 0x4080e374 SP : 0x4083c740 GP : 0x40815514 --- 0x4080096e: panic_abort at D:/ESP32/esptools/idf/esp-idf-v5.4/components/esp_system/panic.c:468 0x4080e374: __ubsan_include at D:/ESP32/esptools/idf/esp-idf-v5.4/components/esp_system/ubsan.c:311 TP : 0x4083c9a0 T0 : 0x37363534 T1 : 0x7271706f T2 : 0x33323130 S0/FP : 0x00000091 S1 : 0x00000001 A0 : 0x4083c77c A1 : 0x40816ae9 A2 : 0x00000001 A3 : 0x00000029 A4 : 0x00000001 A5 : 0x40821000 A6 : 0x0000000c A7 : 0x76757473 S2 : 0x00000009 S3 : 0x4083c886 S4 : 0x40816ae8 S5 : 0x00000000 S6 : 0x00000000 S7 : 0x00000000 S8 : 0x00000000 S9 : 0x00000000 S10 : 0x00000000 S11 : 0x00000000 T3 : 0x6e6d6c6b T4 : 0x6a696867 T5 : 0x66656463 T6 : 0x62613938 MSTATUS : 0x00001881 MTVEC : 0x40800001 MCAUSE : 0x00000002 MTVAL : 0x00000000``` ### 該当のソースコード ```C言語 //========================================================================== // イベントのエンキュー処理 //========================================================================== if (xQueueSend(s_evt_queue, &e_evt, 0) != pdPASS) { return ESP_FAIL; } // 正常終了 return ESP_OK;
試したこと
基本設定としてBLE4.2の機能を有効化する一方で、BLE5の機能については
無効化しました。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2025/03/13 17:46