在RTOS中,信号量通常不直接支持优先级继承,需使用互斥量(Mutex)并启用优先级继承协议。实现时,内核维护一个“优先级天花板”或动态提升持有者优先级:当高优先级任务等待一个被低优先级任务持有的互斥量时,内核将持有者优先级临时提升到等待者中最高优先级,释放后恢复原优先级。实操建议:1)优先使用标准互斥量(如FreeRTOS的mutex,默认支持优先级继承);2)避免在中断中获取互斥量;3)若使用信号量,可自定义封装:在获取/释放时调用内核API(如vTaskPrioritySet)手动提升/恢复优先级,但需注意临界区保护;4)确保所有共享资源访问路径一致,防止死锁。测试时,用高、中、低三个优先级任务验证等待时间,观察中优先级任务是否被阻塞。
mcuku 阿沐 · 2026-08-27