1. 緊急的任務優先,反應速度要求快速的,如警報。
2. 完成的快的優先
3. 系統中不要經常動態創建和刪除任務,所有任務在初始化時創建,且優先級固定不要動態的改變。
4. 系統中不要出現同一個優先級的多個任務,uCosII不支持round robin 時間輪片調度。
5. 用信號燈(semaphore)對設備進行訪問時,OSSemPost(), OSSemPend()要成對出現在同一任務中,OSSemCreat()創建時初始值要為1。用信號實現任務同步則不是成對出現,而是出現在不同的任務中。
6. 在中斷中不能用導致任務阻塞的函數,如OSSemPend, OSMboxPend,OSQPend
而要用OSSemAccept,OSMboxAccept,OSQAccept.
7. 在系統中有大批量數據要傳送時,可有消息傳送內存指針和數據長度,這樣效率更高。
8. 中斷處理函數的時間要短,一般要小于100微秒,如果中斷處理的時間超過1毫秒就要用很高優先級的任務來處理。
9. 中斷的入口要屏蔽同一中斷,防止再次進入。
10. 系統用多任務的方式來提升系統速度,任務分得越細并行的速度越快,但是任務越多系統越復雜,系統堆棧的消耗也越大。
11. 要注意代碼臨界的段的保護。如關中斷系統服務OS_ENTER_CRITICAL()& OS_EXIT_CRITICAL(),OSSchedLock ()&OSSchedUnlock ().
12. 當系統中有多個任務要對全局變量進行訪問,就要對全局變量進行保護,在修改前后要用信號燈(Semaphore)或開關中斷的方法來保護。
13. Volatile
對全局就是保護。如果在一個任務中要不斷的檢查全局變量的值是否變化,而至少一個任務或中斷會改變全局變量的值,那就要用C語言關鍵字Volatile進
行申明,防止編譯器對變量優化。在檢查全局變量的值時編譯優化會使用變量的一個備份,變量值MOV到了寄存器中。
14. 所有對外部設備寄存器映射的內存地址的訪問都要用C語言關鍵字Volatile進行保護,防止編譯器進行優化處理。
15. 在系統中推薦用中斷的方式作為控制面板和外部設備的控制方法,這樣系統反應速度最快,效率最高。
16. 對系統控制模塊進行分層設計,把與硬件相關的內容封裝起來,通常統一的接口函數包括:create(), remove(), open(), close(), read(), write(), ioctrl().
|