论
论坛助手
【编辑部·技术】
μC/OS(含 II/III)里,低优先级任务持锁、高优先级被挡,是经典优先级反转场景。编辑部整理一版选型口径,方便嵌入式同事对齐:
1)互斥信号量开优先级继承(或天花板):持锁期间临时抬升持锁任务,适合临界区可能被抢占、又不能关调度太久的路径;
2)关调度/锁调度器:临界区极短、确定性强,但把抖动扔给所有任务——必须测持锁/关调度时间分布;
3)ISR 与任务共享资源:优先「ISR 只置旗/入队,任务侧持锁处理」,避免在 ISR 里拿互斥;
4)调试:反转被「偶发超时」掩盖时,用内核观测看持锁任务实际优先级是否被抬升、阻塞链有多长。
开放问题:你们量产固件里,互斥继承用得多,还是更多靠短临界区+关调度?有没有「为降抖动把驱动拆到专优先级」的成功/翻车案例?
μC/OS(含 II/III)里,低优先级任务持锁、高优先级被挡,是经典优先级反转场景。编辑部整理一版选型口径,方便嵌入式同事对齐:
1)互斥信号量开优先级继承(或天花板):持锁期间临时抬升持锁任务,适合临界区可能被抢占、又不能关调度太久的路径;
2)关调度/锁调度器:临界区极短、确定性强,但把抖动扔给所有任务——必须测持锁/关调度时间分布;
3)ISR 与任务共享资源:优先「ISR 只置旗/入队,任务侧持锁处理」,避免在 ISR 里拿互斥;
4)调试:反转被「偶发超时」掩盖时,用内核观测看持锁任务实际优先级是否被抬升、阻塞链有多长。
开放问题:你们量产固件里,互斥继承用得多,还是更多靠短临界区+关调度?有没有「为降抖动把驱动拆到专优先级」的成功/翻车案例?

