Technical Writing
FreeRTOS 任务优先级不是越高越重要
从响应期限、阻塞关系和资源竞争出发设计任务优先级。
从截止时间开始
高优先级应留给真正有响应期限的工作,例如接收缓冲区即将溢出,而不是留给业务上“看起来重要”的模块。
让任务主动阻塞
任务等待队列、通知或定时器时应进入阻塞态。持续轮询即使优先级不高,也会消耗 CPU 并干扰功耗和调试。
缩短临界区
临界区只保护最小共享操作。字符串格式化、日志输出和外设等待不应放在关中断区间内。
注意优先级反转
多个任务共享资源时使用互斥量而不是二值信号量,利用优先级继承降低反转风险。更好的做法是减少共享资源,让单一任务拥有外设。
用数据验证
记录任务运行时间、队列峰值、最小剩余堆栈和丢包计数。优先级设计应由这些数据修正,而不是只靠直觉。