RTX 內核核心能力
RTX(Real-Time eXecutive)是 ARM 官方提供的輕量級 RTOS,核心功能:
- 任務創建/刪除/調度(優先級搶佔式)
- 任務間通信與同步機制完整集合
- 中斷管理與中斷安全 API
- 內存池、定時器等輔助組件
四大同步通信原語深度解析
1. 事件標志
- 每任務擁有 **16 位事件標志組**
- 任務可等待**任意單個**或**組合事件**(邏輯 AND/OR)
- **中斷安全**:ISR 中調用 `isr_evt_set()` 置位,實現異步事件同步
- 典型場景:按鍵中斷通知處理任務、網絡數據包到達通知協議棧任務
2. 信號量
- **計數型信號量**(非二值),內含可用資源計數器
- P 操作(`os_sem_wait`):計數器 >0 遞減並繼續;=0 任務掛起進入等待隊列
- V 操作(`os_sem_send`):有等待任務則喚醒最高優先級任務;否則計數器遞增
- **超時機制**:防止任務永久阻塞,返回超時錯誤碼
- 適用:資源池管理(連接池、緩衝區池)、生產者-消費者
3. 互斥鎖
- **所有權機制**:僅鎖持有者可釋放,防止誤釋放
- **優先級反轉保護**:內置**優先級繼承協議**——高優先級任務等待鎖時,提升持有者優先級至等待者級別,防止中優先級任務搶佔導致反轉
- **遞歸支持**:同一任務可重複獲取(需配對釋放)
- 適用:保護共享數據結構、非線程安全硬件外設
4. 郵箱
- **消息指針傳遞**:發送端分配內存填充數據,指針入隊;接收端取出指針處理後**必須釋放內存**
- **動態內存管理責任在應用層**——防止內存洩漏的關鍵
- 適用:高層協議數據傳遞(TCP/IP 包、ISDN 幀)、大數據塊零拷貝傳遞
- 阻塞/超時/非阻塞三種接收模式
原語選型決策表
| 場景 | 推薦原語 | 理由 |
| 單一事件通知(中斷→任務) | 事件標志 | 輕量、中斷安全、無數據負載 |
| 有限資源池訪問控制 | 信號量 | 計數語義天然匹配 |
| 共享數據結構互斥訪問 | 互斥鎖 | 所有權+優先級繼承防反轉 |
| 異步消息傳遞(含數據負載) | 郵箱 | 指針傳遞零拷貝、靈活內存管理 |
| 任務同步屏障 | 事件標志(組合等待) | 支持多事件 AND/OR 同步 |
開發關鍵提示
- **任務優先級設計**:0(最高)~ 255(最低),系統任務佔用高優先級,用戶任務建議 100+
- **棧大小估算**:啟用棧檢查(`os_chk_stk`),留 20%+ 余量
- **中斷服務程序**:盡量短,僅置事件標志/發送郵箱/釋放信號量,複雜處理拋給任務
- **內存池預分配**:郵箱消息、任務棧、TCB 均從靜態池分配,避免運行時 `malloc` 不確定性