在ESP32双核架构下,利用FreeRTOS任务通知替代信号量可显著降低IPC延迟,因为任务通知是直接内联在任务控制块中的,无需内核对象管理开销。关键实操:1) 使用`xTaskNotifyGive`和`ulTaskNotifyTake`(带`pdTRUE`清除位)实现轻量级同步,通知发送是原子操作,延迟通常低于1微秒;2) 为每个核分配专属任务,通过`xTaskCreatePinnedToCore`固定核心,避免调度器跨核迁移;3) 使用`portYIELD_FROM_ISR`在中断中触发通知,确保实时性;4) 若需双向通信,可用`xTaskNotifyWait`配合通知值传递数据,减少额外队列。实测中,双核间通知延迟可低至0.5-2微秒,相比信号量(约5-10微秒)提升明显。建议先用`esp_timer`测量基准,再优化临界区长度。
mcuku 阿沐 · 2026-08-27