標(biāo)題: 分享心得:uCOS2的開發(fā)注意事項(xiàng) [打印本頁]

作者: rhcaxiu    時(shí)間: 2013-4-7 12:00
標(biāo)題: 分享心得:uCOS2的開發(fā)注意事項(xiàng)
 1.       緊急的任務(wù)優(yōu)先,反應(yīng)速度要求快速的,如警報(bào)。

2.       完成的快的優(yōu)先

3.       系統(tǒng)中不要經(jīng)常動(dòng)態(tài)創(chuàng)建和刪除任務(wù),所有任務(wù)在初始化時(shí)創(chuàng)建,且優(yōu)先級(jí)固定不要?jiǎng)討B(tài)的改變。

4.       系統(tǒng)中不要出現(xiàn)同一個(gè)優(yōu)先級(jí)的多個(gè)任務(wù),uCosII不支持round robin 時(shí)間輪片調(diào)度。

5.       用信號(hào)燈(semaphore)對(duì)設(shè)備進(jìn)行訪問時(shí),OSSemPost(), OSSemPend()要成對(duì)出現(xiàn)在同一任務(wù)中,OSSemCreat()創(chuàng)建時(shí)初始值要為1。用信號(hào)實(shí)現(xiàn)任務(wù)同步則不是成對(duì)出現(xiàn),而是出現(xiàn)在不同的任務(wù)中。

6.       在中斷中不能用導(dǎo)致任務(wù)阻塞的函數(shù),如OSSemPend, OSMboxPend,OSQPend

而要用OSSemAccept,OSMboxAccept,OSQAccept.

7.       在系統(tǒng)中有大批量數(shù)據(jù)要傳送時(shí),可有消息傳送內(nèi)存指針和數(shù)據(jù)長度,這樣效率更高。

8.       中斷處理函數(shù)的時(shí)間要短,一般要小于100微秒,如果中斷處理的時(shí)間超過1毫秒就要用很高優(yōu)先級(jí)的任務(wù)來處理。
9.       中斷的入口要屏蔽同一中斷,防止再次進(jìn)入。

10.   系統(tǒng)用多任務(wù)的方式來提升系統(tǒng)速度,任務(wù)分得越細(xì)并行的速度越快,但是任務(wù)越多系統(tǒng)越復(fù)雜,系統(tǒng)堆棧的消耗也越大。
11.   要注意代碼臨界的段的保護(hù)。如關(guān)中斷系統(tǒng)服務(wù)OS_ENTER_CRITICAL()&    OS_EXIT_CRITICAL(),OSSchedLock ()&OSSchedUnlock ().
12.   當(dāng)系統(tǒng)中有多個(gè)任務(wù)要對(duì)全局變量進(jìn)行訪問,就要對(duì)全局變量進(jìn)行保護(hù),在修改前后要用信號(hào)燈(Semaphore)或開關(guān)中斷的方法來保護(hù)。

13.   Volatile 對(duì)全局就是保護(hù)。如果在一個(gè)任務(wù)中要不斷的檢查全局變量的值是否變化,而至少一個(gè)任務(wù)或中斷會(huì)改變?nèi)肿兞康闹担蔷鸵肅語言關(guān)鍵字Volatile進(jìn) 行申明,防止編譯器對(duì)變量優(yōu)化。在檢查全局變量的值時(shí)編譯優(yōu)化會(huì)使用變量的一個(gè)備份,變量值MOV到了寄存器中。

14.   所有對(duì)外部設(shè)備寄存器映射的內(nèi)存地址的訪問都要用C語言關(guān)鍵字Volatile進(jìn)行保護(hù),防止編譯器進(jìn)行優(yōu)化處理。

15.   在系統(tǒng)中推薦用中斷的方式作為控制面板和外部設(shè)備的控制方法,這樣系統(tǒng)反應(yīng)速度最快,效率最高。

16.   對(duì)系統(tǒng)控制模塊進(jìn)行分層設(shè)計(jì),把與硬件相關(guān)的內(nèi)容封裝起來,通常統(tǒng)一的接口函數(shù)包括:create(), remove(), open(), close(), read(), write(), ioctrl().


作者: apingzai    時(shí)間: 2017-3-3 16:54
總結(jié)德不錯(cuò)
作者: xkf321    時(shí)間: 2018-9-4 11:07
感謝總結(jié)




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1