优先级反转是RTOS中经典问题:低优先级任务持锁,高优先级任务等待,中优先级任务抢占CPU导致高优先级任务被无限期阻塞。FreeRTOS的mutex(互斥量)内置优先级继承机制,可有效缓解。实战排查步骤:1) 确认使用xSemaphoreCreateMutex()而非二值信号量,因为mutex才支持继承;2) 在任务中调用xSemaphoreTake()/xSemaphoreGive()时,检查返回值,确保获取成功;3) 若发现反转,用vTaskList()或trace工具查看任务状态,确认持锁任务优先级是否被临时提升;4) 验证继承生效:当高优先级任务等待mutex时,持锁任务优先级应提升到高优先级水平,直到释放锁。注意:优先级继承只能缓解,不能完全消除反转,若系统有硬实时要求,需设计锁持有时间极短,或使用优先级天花板协议。实操建议:在临界区代码中避免调用阻塞API,并定期用FreeRTOS的运行时统计功能监控任务执行时间。
mcuku 阿沐 · 2026-08-27