嵌入式實(shí)時(shí)操作系統(tǒng)uCOSII第12章配置手冊(cè)_第1頁(yè)
嵌入式實(shí)時(shí)操作系統(tǒng)uCOSII第12章配置手冊(cè)_第2頁(yè)
嵌入式實(shí)時(shí)操作系統(tǒng)uCOSII第12章配置手冊(cè)_第3頁(yè)
嵌入式實(shí)時(shí)操作系統(tǒng)uCOSII第12章配置手冊(cè)_第4頁(yè)
嵌入式實(shí)時(shí)操作系統(tǒng)uCOSII第12章配置手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 -MC/OS-II:實(shí)時(shí)操作系統(tǒng)內(nèi)核 #-MC/OS-II:實(shí)時(shí)操作系統(tǒng)內(nèi)核第12章 #-MC/OS-II:實(shí)時(shí)操作系統(tǒng)內(nèi)核 #-MC/OS-II:實(shí)時(shí)操作系統(tǒng)內(nèi)核配置手冊(cè)本章將介紹uC/OS-II中的初始化配置項(xiàng)。由于uC/OS-II向用戶提供源代碼,初始化配置項(xiàng)由一系列#defineconstant語(yǔ)句構(gòu)成,都在文件OS_CFG.H中。用戶的工程文件組中都應(yīng)該包含這個(gè)文件。本節(jié)介紹每個(gè)用#defineconstant定義的常量,介紹的順序和它們?cè)贠S_CFG.H中出現(xiàn)的順序是相同的。表12.1列出了常量控制的uC/OS-II函數(shù)?!邦愋汀睘楹瘮?shù)所屬的類型,“置1”表示當(dāng)定義常量為1時(shí)可以

2、打開(kāi)相應(yīng)的函數(shù),“其他常量”為與這個(gè)函數(shù)有關(guān)的其他控制常量。注意編譯工程文件時(shí)要包含OS_CFG.H,使定義的常量生效。表T12.1uC/OS-II函數(shù)和相關(guān)的常量(#defineconstant定義)表T12.1C/OS-II函數(shù)和相關(guān)常量類型置1其他常量 #-MC/OS-II:實(shí)時(shí)操作系統(tǒng)內(nèi)核 #-MC/OS-II:實(shí)時(shí)操作系統(tǒng)內(nèi)核雜相OSInit()OSSchedLock()OSSchedUnlock()OSStart()OSStatInit()OSVersion()中斷處理無(wú)無(wú)無(wú)OS_TASK_STAT_EN&OS_TASK_CREATE_EXT_EN無(wú)OS_MAX_EVENTSOS_

3、Q_ENandOS_MAX_QSOS_MEM_ENOS_TASK_IDLE_STK_SIZEOS_TASK_STAT_ENOS_TASK_STAT_STK_SIZE無(wú)無(wú)無(wú)OS_TICKS_PER_SEC無(wú) -MC/OS-II:實(shí)時(shí)操作系統(tǒng)內(nèi)核OSIntEnter()無(wú)無(wú)OSIntExit()無(wú)無(wú)消息郵箱OSMboxAccept()OS_MBOX_EN無(wú)OSMboxCreate()OS_MBOX_ENOS_MAX_EVENTSOSMboxPend()OS_MBOX_EN無(wú)OSMboxPost()OS_MBOX_EN無(wú)OSMboxQuery()OS_MBOX_EN無(wú)內(nèi)存塊管理OSMemCreate

4、()OS_MEM_ENOS_MAX_MEM_PARTOSMemGet()OS_MEM_EN無(wú)OSMemPut()OS_MEM_EN無(wú)OSMemQuery()OS_MEM_EN無(wú)消息隊(duì)列OSQAccept()OS_Q_EN無(wú)OSQCreate()OS_Q_ENOS_MAX_EVENTSOS_MAX_QSOSQFlush()OS_Q_EN無(wú)OSQPend()OS_Q_EN無(wú)OSQPost()OS_Q_EN無(wú)OSQPostFront()OS_Q_EN無(wú)OSQQuery()OS_Q_EN無(wú)信號(hào)量管理OSSemAccept()OS_SEM_EN無(wú)OSSemCreate()OS_SEM_ENOS_MAX_

5、EVENTSOSSemPend()OS_SEM_EN無(wú)OSSemPost()OS_SEM_EN無(wú)OSSemQuery()OS_SEM_EN無(wú)任務(wù)管理OSTaskChangePrio()OS_TASK_CHANGE_PRIO_ENOS_LOWEST_PRIOOSTaskCreate()OS_TASK_CREATE_ENOS_MAX_TASKSOS_LOWEST_PRIOOSTaskCreateExt()OS_TASK_CREATE_NEXT_EOS_MAX_TASKSOS_STK_GROWTHOS_LOWEST_PRIOOSTaskDel()OS_TASK_DEL_ENOS_LOWEST_PRI

6、OOSTaskDelReq()OS_TASK_DEL_ENOS_LOWEST_PRIOOSTaskResume()OS_TASK_SUSPEND_ENOS_LOWEST_PRIOOSTaskStkChk()OS_TASK_CREATE_EXT_EOS_LOWEST_PRIONOSTaskSuspend()OS_TASK_SUSPND_ENOS_LOWEST_PRIOOSTaskQuery()OS_LOWEST_PRIO時(shí)鐘管理OSTimeDly()無(wú)無(wú)OSTimeDlyHMSM()無(wú)OS_TICKS_PER_SECOSTimeDlyResume()無(wú)OS_LOWEST_PRIOOSTimeGe

7、t()無(wú)無(wú)OSTimeSet()無(wú)無(wú)OSTimeTick()無(wú)無(wú)用戶定義函數(shù)OSTaskCreateHook()OS_CPU_HOOKSEN無(wú)OSTaskDelHook()OS_CPU_HOOKSEN無(wú)OSTaskStatHook()OS_CPU_HOOKSEN無(wú)OSTaskSwHook()OS_CPU_HOOKSEN無(wú)OSTimeTickHook()OS_CPU_HOOKSEN無(wú) -MC/OS-II:實(shí)時(shí)操作系統(tǒng)內(nèi)核OS_MAX_EVENTSOS_MAX_EVENTS定義系統(tǒng)中最大的事件控制塊的數(shù)量。系統(tǒng)中的每一個(gè)消息郵箱,消息隊(duì)列,信號(hào)量都需要一個(gè)事件控制塊。例如,系統(tǒng)中有10個(gè)消息郵箱,

8、5個(gè)消息隊(duì)列,3個(gè)信號(hào)量,則OS_MAX_EVENTS最小應(yīng)該為18。只要程序中用到了消息郵箱,消息隊(duì)列或是信號(hào)量,則OS_MAX_EVENTS最小應(yīng)該設(shè)置為2。OS_MAX_MEM_PARTSOS_MAX_MEM_PARTS定義系統(tǒng)中最大的內(nèi)存塊數(shù),內(nèi)存塊將由內(nèi)存管理函數(shù)操作(定義在文件OS_MEM.C中)。如果要使用內(nèi)存塊,OS_MAX_MEM_PARTS最小應(yīng)該設(shè)置為2,常量OS_MEM_EN也要同時(shí)置1。OS_MAX_QSOS_MAX_QS定義系統(tǒng)中最大的消息隊(duì)列數(shù)。要使用消息隊(duì)列,常量OS_Q_EN也要同時(shí)置1。如果要使用消息隊(duì)列,OS_MAX_QS最小應(yīng)該設(shè)置為2。OS_MAX_T

9、ASKSOS_MAX_MEM_TASKS定義用戶程序中最大的任務(wù)數(shù)。OS_MAX_MEM_TASKS不能大于62,這是由于卩C/OS-II保留了兩個(gè)系統(tǒng)使用的任務(wù)。如果設(shè)定OS_MAX_MEM_TASKS剛好等于所需任務(wù)數(shù),則建立新任務(wù)時(shí)要注意檢查是否超過(guò)限定。而OS_MAX_MEM_TASKS設(shè)定的太大則會(huì)浪費(fèi)內(nèi)存。OS_LOWEST_PRIOOS_LOWEST_PRIO設(shè)定系統(tǒng)中的任務(wù)最低優(yōu)先級(jí)(最大優(yōu)先級(jí)數(shù))。設(shè)定OS_LOWEST_PRIO可以節(jié)省用于任務(wù)控制塊的內(nèi)存。卩C/OS-II中優(yōu)先級(jí)數(shù)從0(最高優(yōu)先級(jí))到63(最低優(yōu)先級(jí))。設(shè)定OS_LOWEST_PRIO小于63意味著不會(huì)建

10、立優(yōu)先級(jí)數(shù)大于OS_LOWEST_PRIO的任務(wù)。uC/OS-II中保留兩個(gè)優(yōu)先級(jí)系統(tǒng)自用:OS_LOWEST_PRIO和OS_LOWEST_PRIO-1其中OS_LOWEST_PRIO留給系統(tǒng)的空閑任務(wù)(Idletask)(OSTaskIdle()。OS_LOWEST_PRIO-1留給統(tǒng)計(jì)任務(wù)(OSTaskStat()。用戶任務(wù)的優(yōu)先級(jí)可以從0至IOS_LOWEST_PRIO-2OS_LOWEST_PRI和OS_MAX_TASKS之間沒(méi)有什么關(guān)系。例如,可以設(shè)OS_MAX_TASKS為10而OS_LOWEST_PRIO為32。此時(shí)系統(tǒng)最多可有10個(gè)任務(wù),用戶任務(wù)的優(yōu)先級(jí)可以是0到30。當(dāng)然,

11、OS_LOWEST_PRI設(shè)定的優(yōu)先級(jí)也要夠用,例如設(shè)OS_MAX_TASKS為20,而OS_LOWEST_PRI為10,優(yōu)先級(jí)就不夠用了。OS_TASK_IDLE_STK_SIZEOS_TASK_IDLE_STK_SIZE設(shè)置uC/OS-II中空閑任務(wù)(Idletask)堆棧的容量。注意堆棧容量的單位不是字節(jié),而是OS_STK(uC/OS-II中堆棧統(tǒng)一用OS_STK聲明,根據(jù)不同的硬件環(huán)境,OS_STK可為不同的長(zhǎng)度譯者注)??臻e任務(wù)堆棧的容量取決于所使用的處理器,以及預(yù)期的最大中斷嵌套數(shù)。雖然空閑任務(wù)幾乎不做什么工作,但還是要預(yù)留足夠的堆??臻g保存CPU寄存器的內(nèi)容,以及可能出現(xiàn)的中斷嵌

12、套情況。OS_TASK_STAT_ENOS_TASK_STAT_EN設(shè)定系統(tǒng)是否使用uC/OS-II中的統(tǒng)計(jì)任務(wù)(statistictask)及其初始化函數(shù)。如果設(shè)為1,則使用統(tǒng)計(jì)任務(wù)OSTaskStat()。統(tǒng)計(jì)任務(wù)每秒運(yùn)行一次,計(jì)算當(dāng)前系統(tǒng)CPU使用率,結(jié)果保存在8位變量OSCPUUsage中。每次運(yùn)行,OSTaskStat()都將調(diào)用OSTaskStatHook()函數(shù),用戶自定義的統(tǒng)計(jì)功能可以放在這個(gè)函數(shù)中。詳細(xì)情況請(qǐng)參考OS_CORE.C文件。統(tǒng)計(jì)任務(wù)OSTaskStat()的優(yōu)先級(jí)總是設(shè)為OS_LOWEST_PRIO-1。當(dāng)OS_TASK_STAT_EN設(shè)為0的時(shí)候,全局變量OSC

13、PUUsage,OSIdleCtrMax,OSIdleCtrRun和OSStatRdy都不聲明,以節(jié)省內(nèi)存空間。OS_TASK_STAT_STK_SIZEOS_TASK_STAT_STK_SIZE設(shè)置uC/OS-II中統(tǒng)計(jì)任務(wù)(statistictask)堆棧的容量。注意單位不是字節(jié),而是OS_STK(uC/OS-II中堆棧統(tǒng)一用OS_STK聲明,根據(jù)不同的硬件環(huán)境,OS_STK可為不同的長(zhǎng)度譯者注)。統(tǒng)計(jì)任務(wù)堆棧的容量取決于所使用的處理器類型,以及如下的操作:進(jìn)行32位算術(shù)運(yùn)算所需的堆??臻g。調(diào)用OSTimeDly()所需的堆棧空間。調(diào)用OSTaskStatHook()所需的堆??臻g。預(yù)計(jì)最

14、大的中斷嵌套數(shù)。如果想在統(tǒng)計(jì)任務(wù)中進(jìn)行堆棧檢查,判斷實(shí)際的堆棧使用,用戶需要設(shè)OS_TASK_CREATE_EXT_EN為1,并使用OSTaskCreateExt()函數(shù)建立任務(wù)。OS_CPU_HOOKS_EN此常量設(shè)定是否在文件OS_CPU_C.C中聲明對(duì)外接口函數(shù)(hookfunction),設(shè)為1為聲明。卩C/OS-II中提供了5個(gè)對(duì)外接口函數(shù),可以在文件OS_CPU_C.C中聲明,也可以在用戶自己的代碼中聲明:OSTaskCreateHook()OSTaskDelHook()OSTaskStatHook()OSTaskSwHook()OSTimeTickHook()OS_MBOX_EN

15、OS_MBOX_EN控制是否使用卩C/OS-II中的消息郵箱函數(shù)及其相關(guān)數(shù)據(jù)結(jié)構(gòu),設(shè)為1為使用。如果不使用,則關(guān)閉此常量節(jié)省內(nèi)存。OS_MEM_ENOS_MEM_EN控制是否使用卩C/OS-II中的內(nèi)存塊管理函數(shù)及其相關(guān)數(shù)據(jù)結(jié)構(gòu),設(shè)為1為使用。如果不使用,則關(guān)閉此常量節(jié)省內(nèi)存。OS_Q_EN控制是否使用uC/OS-II中的消息隊(duì)列函數(shù)及其相關(guān)數(shù)據(jù)結(jié)構(gòu),設(shè)為1為使用。如果不使用,則關(guān)閉此常量節(jié)省內(nèi)存。如果OS_Q_EN設(shè)為0,則語(yǔ)句#defineconstantOS_MAX_QS無(wú)效。OS_SEM_ENOS_SEM_EN控制是否使用uC/OS-II中的信號(hào)量管理函數(shù)及其相關(guān)數(shù)據(jù)結(jié)構(gòu),設(shè)為1為使用

16、。如果不使用,則關(guān)閉此常量節(jié)省內(nèi)存。OS_TASK_CHANGE_PRIO_EN此常量控制是否使用uC/OS-II中的OSTaskChangePrio()函數(shù),設(shè)為1為使用。如果在應(yīng)用程序中不需要改變運(yùn)行任務(wù)的優(yōu)先級(jí),則將此常量設(shè)為0節(jié)省內(nèi)存。OS_TASK_CREATE_EN此常量控制是否使用卩C/OS-II中的OSTaskCreate()函數(shù),設(shè)為1為使用。在卩C/OS-II中推薦用戶使用OSTaskCreateExt()函數(shù)建立任務(wù)。如果不使用OSTaskCreate()函數(shù),將OS_TASK_CREATE_EN設(shè)為0可以節(jié)省內(nèi)存。注意OS_TASK_CREATE_EN和OS_TASK_

17、CREATE_EXT_EN至少有一個(gè)要為1,當(dāng)然如果都使用也可以。OS_TASK_CREATE_EXT_EN此常量控制是否使用卩C/OS-II中的OSTaskCreateExt()函數(shù),設(shè)為1為使用。該函數(shù)為擴(kuò)展的,功能更全的任務(wù)建立函數(shù)。如果不使用該函數(shù),將OS_TASK_CREATE_EXT_EN設(shè)為0可以節(jié)省內(nèi)存。注意,如果要使用堆棧檢查函數(shù)OSTaskStkChk(),則必須用OSTaskCreateExt()建立任務(wù)。OS_TASK_DEL_EN此常量控制是否使用卩C/OS-II中的OSTaskDel()函數(shù),設(shè)為1為使用。如果在應(yīng)用程序中不使用刪除任務(wù)函數(shù),將OS_TASK_DEL_EN設(shè)為0可以節(jié)省內(nèi)存。OS_TASK_SUSPEND_EN此常量控

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論