91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

μC/OS-II內(nèi)核如何在RTOS多個(gè)任務(wù)中作為任務(wù)棧的方法研究

電子設(shè)計(jì) ? 來(lái)源:?jiǎn)纹瑱C(jī)與嵌入式系統(tǒng)應(yīng)用 ? 作者:彭良清 ? 2020-10-09 10:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在μC/OS-II內(nèi)核中,各個(gè)不同的任務(wù)使用獨(dú)立的堆??臻g,堆棧的大小按每個(gè)任務(wù)所需要的最大堆棧深度來(lái)定義,這種方法可能會(huì)造成堆??臻g浪費(fèi)。本文敘述如何在RTOS中多個(gè)任務(wù)共用連續(xù)存儲(chǔ)空間作為任務(wù)棧的方法,并詳細(xì)比較二者的優(yōu)缺點(diǎn)和適用性。

關(guān)于μC/OS-II這個(gè)實(shí)時(shí)內(nèi)核及其應(yīng)用已經(jīng)有很多文章介紹了,對(duì)于學(xué)習(xí)RTOS的人來(lái)說(shuō),這個(gè)系統(tǒng)是很好的學(xué)習(xí)起點(diǎn)。雖然文獻(xiàn)的源代碼沒(méi)有行號(hào)和函數(shù)名交叉索引表等,給源代碼閱讀造成一些困難(可使用BC31的grep查找功能,提高閱讀效率),好在代碼不是很長(zhǎng),前面又有詳細(xì)的中文說(shuō)明,對(duì)于有一定X86匯編C語(yǔ)言基礎(chǔ)的人來(lái)說(shuō),仍然可以在不長(zhǎng)的時(shí)間內(nèi)掌握。

μC/OS-II內(nèi)核是一個(gè)搶先式內(nèi)核,可以進(jìn)行任務(wù)間切換,也可以讓一個(gè)任務(wù)在得不到某個(gè)資源時(shí)休眠一定時(shí)間后再繼續(xù)運(yùn)行;提供了用于共享資源管理的信號(hào)燈,用于進(jìn)程通信的消息隊(duì)列和郵箱,甚至提供了存儲(chǔ)器管理機(jī)制,一個(gè)比較全面的系統(tǒng)。

μC/OS-II內(nèi)核有些地方仍然值得改進(jìn),比如該系統(tǒng)不支持時(shí)間片調(diào)度。如果有一個(gè)任務(wù)中一段死循環(huán)代碼(或者條件循環(huán)代碼),代碼就會(huì)永遠(yuǎn)(或長(zhǎng)時(shí)間)在此處執(zhí)行,調(diào)度程序無(wú)法控制,其它任務(wù)也就是不到及時(shí)執(zhí)行。這種搶先式實(shí)際上和非搶先式系統(tǒng)存在著同樣問(wèn)題。當(dāng)然,如果這種代碼不一個(gè)BUG,問(wèn)題是可以解決的,在不提供時(shí)間片調(diào)度的搶先式系統(tǒng)中,一般采取信號(hào)燈,或者任務(wù)主動(dòng)休眠的方法(對(duì)于μC/OS-II,很容易改造成支持時(shí)間片調(diào)度,只要在定時(shí)中斷服務(wù)程序調(diào)用OSIntCtxSw()函數(shù)即可);非搶先式系統(tǒng)一般采取有限狀態(tài)機(jī)方法,不使用這種耗時(shí)很長(zhǎng)的循環(huán)代碼。不過(guò),無(wú)論如何,對(duì)RTOS的使用者來(lái)說(shuō),這畢竟會(huì)使得任務(wù)函數(shù)的編碼不能隨心所欲。

ΜC/OS-II內(nèi)核的另外一個(gè)值得改進(jìn)的地方就是其任務(wù)棧管理方法。在μC/OS-II內(nèi)核中,各個(gè)不同的任務(wù)使用獨(dú)立的堆??臻g,堆棧的大小按每個(gè)任務(wù)所需要的最大堆棧深度來(lái)定義,這種方法可能會(huì)造成堆??臻g的浪費(fèi)。下面討論如何在RTOS中多個(gè)任務(wù)共用一段連續(xù)存儲(chǔ)空間作為傻堆棧。

μC/OS-II內(nèi)核如何在RTOS多個(gè)任務(wù)中作為任務(wù)棧的方法研究

1 任務(wù)切換要保存的數(shù)據(jù)

簡(jiǎn)單地說(shuō),一個(gè)任務(wù)可看作一個(gè)運(yùn)行中的C函數(shù)。對(duì)于搶先式RTOS來(lái)說(shuō),在任務(wù)切換時(shí),應(yīng)保存當(dāng)前任務(wù)的各種現(xiàn)場(chǎng)數(shù)據(jù)。現(xiàn)場(chǎng)數(shù)據(jù)包括局部變量、各個(gè)CPU寄存器、堆棧指針和程序被中止的任務(wù)指針。CPU寄存器是任何任務(wù)代碼均會(huì)用到的;而局部變量,一般的編譯器是將其它安排在堆棧空間中,堆棧指針也是各任務(wù)公用的,所以也需要保存。

對(duì)于全局變量,由于一般是在內(nèi)存中的固定位置,各任務(wù)所占用的空間完全獨(dú)立,所以不需要保存。

在X86環(huán)境中,要保存的CPU寄存器共14個(gè)16位寄存器;通用寄存器8個(gè)(AX、BX、CX、DX、SP、BP、SI、BI)、段寄存器4個(gè)(CS、DS、ES、SS)以及指令指針I(yè)P和標(biāo)志寄存器FR各1個(gè)。

2 C編譯器中變量在堆棧中的位置

對(duì)于一個(gè)存在函數(shù)調(diào)用嵌套的C程序來(lái)說(shuō),大部分編譯器將傳遞的參數(shù)和函數(shù)本身的局部變量放在了堆棧中,編譯器會(huì)自動(dòng)生成壓棧(push)和彈棧(pop)代碼,以保存上級(jí)函數(shù)的運(yùn)行寄存器。

假設(shè)函數(shù)main()調(diào)用funl(),而funl()調(diào)用fun2(),則在執(zhí)行fun2()中的代碼時(shí),堆棧映像如圖1所示(X86 CPU的情況)。

對(duì)于RTOS軟件,堆棧中的各種數(shù)據(jù)就是一個(gè)任務(wù)的作現(xiàn)場(chǎng)。一般CPU的堆棧指針SP只有一個(gè),在進(jìn)行任務(wù)切換時(shí),必須將掛起任務(wù)所使用的堆棧內(nèi)容保存起來(lái),以便使該任務(wù)在下次喚醒時(shí)能從原地繼續(xù)運(yùn)行。

3 μC/OS-II對(duì)任務(wù)棧的處理方法與缺陷

μC/OS-II為了保存任務(wù)堆棧中的數(shù)據(jù),對(duì)每個(gè)任務(wù)定義一個(gè)數(shù)組變量作為堆棧,在任務(wù)切換時(shí),將CPU堆棧指針SP指向該數(shù)組中的某個(gè)元素,即棧頂,如圖2所示。

比如,在其ex21.c文件中定義的任務(wù)堆棧語(yǔ)句為:

OS_STK TaskStartStk[TASK_STK_SIZE]; /*啟動(dòng)任務(wù)堆棧*/

OS_STK TaskClkStk[TASK_STK_SIZE]; /*時(shí)鐘任務(wù)堆棧*/

OS_STK TasklStk[TASK_STK_SIZE]; /*任務(wù)1#,任務(wù)堆棧*/

……

以上各任務(wù)堆棧數(shù)組變量在初始化函數(shù)OSTCBInit()中被會(huì)給了任務(wù)控制塊OS_TCB的OSTCBStkPtr變量。在任務(wù)切換時(shí),μC/OS-II調(diào)用OSCtxSw匯編過(guò)程(OS_CPU_A.ASM文件),將CPU的SP指針指向該變量,從而使每個(gè)任務(wù)使用獨(dú)立的任務(wù)堆棧。

LES BX,DWORD PTR DS:_OSTCBCur

;保存掛起任務(wù)的堆棧指針SP

MOV ES:[BX+2],SS

MOV ES:[BX+0],SP

……

LESB X,DWORD PTR DS:_OSTCBHighRdy ;切換SP到要運(yùn)行任務(wù)的堆??臻g

MOV SS,ES:[BX+2]

MOV SP,ES:[BX]

……

在代碼中,變量OSTCBHighRdy(OSTCBCur)和堆棧指針變量OSTCBStkPtr的數(shù)值是同同的,因?yàn)镺STCBStkPtr是結(jié)構(gòu)OSTCBHighRdy的第一個(gè)變量。

這種任務(wù)棧處理方法的缺點(diǎn)是可能造成空間的浪費(fèi)。因?yàn)橐粋€(gè)任務(wù)如果堆棧滿(mǎn)了,該任務(wù)也就無(wú)法運(yùn)行,即使其它任務(wù)的堆棧還有空間可用。當(dāng)然,這種方法的好處是任務(wù)棧切換的時(shí)間非常短,只需要幾條指令。

4 共用空間的堆棧處理方法

(1)棧共用連續(xù)存儲(chǔ)空間

如果多個(gè)任務(wù)使用同一段連續(xù)空間作為堆棧,這樣各個(gè)堆棧之間就可以互補(bǔ)使用。在前面說(shuō)過(guò),共用空間的問(wèn)題在于一個(gè)任務(wù)運(yùn)行時(shí)不能破壞其它任務(wù)的堆棧數(shù)據(jù)。為簡(jiǎn)單起見(jiàn),先看圖3所示兩個(gè)任務(wù)的情況。

假定任務(wù)1首次運(yùn)行時(shí)任務(wù)棧為空。運(yùn)行一段時(shí)間后任務(wù)2運(yùn)行,堆棧空間繼續(xù)往上生長(zhǎng)。這次任務(wù)切換不需要修改CPU的SP數(shù)值,但需要記下任務(wù)1的棧頂位置SP1(圖3中)。

在任務(wù)2運(yùn)行一段時(shí)間后,RTOS又切換到任務(wù)1運(yùn)行。在切換時(shí),不能簡(jiǎn)單地將SP指針修改回SP1的數(shù)值,因?yàn)檫@樣堆棧向上生長(zhǎng)時(shí)會(huì)破壞任務(wù)2堆棧中的數(shù)據(jù)。辦法是將原來(lái)任1務(wù)堆棧保存的數(shù)據(jù)移動(dòng)到靠棧頂?shù)奈恢?,而將任?wù)2堆棧數(shù)據(jù)下移到靠棧底的位置,堆棧指針SP實(shí)際上不需要修改(圖3右)。

考慮到更為一般的情況,有N個(gè)任務(wù),當(dāng)前運(yùn)行的任務(wù)為k,下一個(gè)運(yùn)行的任務(wù)為j,在共用任務(wù)堆棧時(shí)必須做的工作有:

*為每個(gè)任務(wù)定義棧頂和棧底2個(gè)堆棧指針;

*在任務(wù)切換時(shí),將待運(yùn)行任務(wù)j的堆棧內(nèi)容移動(dòng)到靠棧頂位置,同時(shí)將其堆棧上方的任務(wù)堆棧下移,修改被移動(dòng)推棧的任務(wù)堆棧指針。

假設(shè)我們定義的任務(wù)??臻g和任務(wù)的棧指針變量為:

void TaskSTK[MAX_STK_LEN];/*任務(wù)堆??臻g*/

typedef struct TaskSTKPoint{

int TaskID;

int pTopSTK;

int pBottomSTK;

}TASK_STK_POINT;

TASK_STK_POINT pTaskSTK[MAX_TASK_NUM]; /*存放每個(gè)任務(wù)的棧頂和棧底指針*/

任務(wù)棧指針數(shù)組pTaskSTK的元素個(gè)數(shù)同任務(wù)個(gè)數(shù)。為了堆棧交換,需要另外一塊臨時(shí)存儲(chǔ)空間,其大小可按單個(gè)任務(wù)棧最大長(zhǎng)度定義,用于中轉(zhuǎn)堆棧交換的內(nèi)容。堆棧內(nèi)容交換的偽C算法可寫(xiě)為:

StkEechange(int CurTaskID,int RunTaskID)

{ /*2個(gè)參數(shù)為當(dāng)前運(yùn)行任務(wù)號(hào)和下一運(yùn)行任務(wù)號(hào)*/

void TempSTK[MAX_PER_STK_LEN]; /*注意該變量長(zhǎng)度可小于TaskSTK*/

L=任務(wù)RunTaskTD的堆棧長(zhǎng)度;

①將TaskSTK頂部的L字節(jié)移動(dòng)到TempSTK中;

②將RunTaskID任務(wù)的堆棧內(nèi)容移動(dòng)到TaskSTK頂部;

③將RunTaskID堆棧上方(移動(dòng)前位置)所有內(nèi)容下移L個(gè)字節(jié);

④修改RunTask堆棧上方(移動(dòng)前位置)所有任務(wù)棧頂和棧底指針(pTaskSTK變量);

};

該算法的平均時(shí)間復(fù)雜度可計(jì)算如下:

O(T)=SL/2+SL/2+SL%26;#215;N/2

式中,第一、二項(xiàng)為步驟①和步驟②時(shí)間,第三項(xiàng)為步驟③時(shí)間;SL表示每個(gè)任堆棧的最大長(zhǎng)度(即MAX_PER_STK_LEN),N表示任務(wù)數(shù)。

取SL為64字節(jié),任務(wù)數(shù)為16個(gè),則數(shù)據(jù)項(xiàng)平均移動(dòng)次數(shù)為576。假設(shè)每次移動(dòng)指令時(shí)間為2μs,則一次任務(wù)棧移動(dòng)時(shí)間長(zhǎng)達(dá)約1ms。所以在使用該方法時(shí),為了執(zhí)行時(shí)間盡量短,編碼時(shí)應(yīng)仔細(xì)推敲。

從空間上說(shuō),共用任務(wù)棧比獨(dú)立任務(wù)棧優(yōu)越。假設(shè)獨(dú)立任務(wù)棧方法中每個(gè)堆??臻g為K,任務(wù)數(shù)為N,則獨(dú)立任務(wù)棧方式的堆??偪臻g為N%26;#215;K。在共用任務(wù)棧時(shí),考慮各任務(wù)互補(bǔ)的情況,TaskSTK變量不需要定義為N%26;#215;K長(zhǎng)度,可能定義為二分之一或者更小就可以了。

另外,這種方法不需要在任務(wù)切換時(shí)修改CPU的SP指針。

(2)工作棧和任務(wù)堆棧

上節(jié)共用任務(wù)棧算法的缺點(diǎn)是:任務(wù)切換時(shí)的堆棧內(nèi)容交換算法復(fù)雜,占用時(shí)間長(zhǎng)。另外一個(gè)折中的方法是設(shè)計(jì)一個(gè)工作堆棧,用于給當(dāng)前運(yùn)行的任務(wù)使用;在任務(wù)切換時(shí),將工作棧內(nèi)容換出得另外的存儲(chǔ)空間,該空間可以動(dòng)態(tài)申請(qǐng),其大小按實(shí)際需要即可。

這種方法看起來(lái)和獨(dú)立任務(wù)棧的方法類(lèi)似,需要N+1塊存儲(chǔ)空間,其中一塊用于工作??臻g。和獨(dú)立任務(wù)堆棧相比,其區(qū)別有2點(diǎn):

①SP指針?biāo)赶虻目臻g始終是同一塊存儲(chǔ)空間,即工作棧;

②每個(gè)任務(wù)棧的大小不需要按最大空間定義,可以動(dòng)態(tài)按實(shí)際大小從內(nèi)存中分配空間。

對(duì)于8031這種處理器結(jié)構(gòu),由于堆棧指針只能指向其內(nèi)部存儲(chǔ)器,大小十分有限。采取這種方法,可將工作棧設(shè)在內(nèi)部RAM,將任務(wù)棧設(shè)在外部RAM,擴(kuò)展了堆??臻g。

和上一種共用堆棧方法相比,這種方法的交換時(shí)間要短,其時(shí)間復(fù)雜度約為1.5倍最大任務(wù)棧長(zhǎng)度。

5 總結(jié)

獨(dú)立任務(wù)棧的方法適合于存儲(chǔ)器充足、任務(wù)切換頻繁、對(duì)任務(wù)切換時(shí)間要求較高的場(chǎng)合,一般主要用在16位或者32位微處理器平臺(tái)環(huán)境。值得注意的是,在某些微處理器中,雖然可使用的數(shù)據(jù)存儲(chǔ)器可以設(shè)計(jì)得較大,但堆棧所能使用的存儲(chǔ)器卻是有限的。比如8031系列存儲(chǔ)器,堆棧只能使用內(nèi)部的128字節(jié)數(shù)據(jù)存儲(chǔ)器,即使系統(tǒng)中有64K字節(jié)的外部數(shù)據(jù)存儲(chǔ)器,任務(wù)棧的總空間也不能超過(guò)128字節(jié)。這種處理器使用共用任務(wù)棧結(jié)構(gòu)的RTOS就更好一些。

由于共用任務(wù)棧系統(tǒng)需要較長(zhǎng)的任務(wù)切換時(shí)間,不適于任務(wù)切換頻繁的場(chǎng)合,在很多嵌入式系統(tǒng)中,長(zhǎng)時(shí)間只有幾個(gè)任務(wù)會(huì)處于運(yùn)行狀態(tài),其它任務(wù)在特定的條件下才會(huì)運(yùn)行。對(duì)于RTOS的使用者,也可以適當(dāng)?shù)貏澐秩蝿?wù),來(lái)減小任務(wù)切換的時(shí)間。

無(wú)論使用哪種方法,在存儲(chǔ)空間有限時(shí),任務(wù)棧的長(zhǎng)度應(yīng)仔細(xì)計(jì)算。計(jì)算的根據(jù)是任務(wù)中的函數(shù)嵌套數(shù)、函數(shù)局部變量長(zhǎng)度。對(duì)于共用任務(wù)棧,還要考慮同時(shí)運(yùn)行態(tài)和掛起態(tài)的最大任務(wù)數(shù)。一些編譯器可以生成堆棧溢出檢查代碼,在調(diào)試時(shí)可將該編譯開(kāi)關(guān)打開(kāi),以測(cè)試需要的實(shí)際堆棧長(zhǎng)度。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5611

    瀏覽量

    130075
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11288

    瀏覽量

    225242
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51696
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    μC/OS-II的特點(diǎn)

    機(jī)制。正如上文所提到的,μC/OS-II是一個(gè)支持多任務(wù)的操作系統(tǒng)。一個(gè)完整的程序可以劃分成幾個(gè)任務(wù),不同的任務(wù)執(zhí)行不同的功能。這樣,一個(gè)
    發(fā)表于 07-15 14:51

    UC/OS-II操作系統(tǒng)——任務(wù)(一)

    本帖最后由 ax918 于 2012-2-22 14:41 編輯 UC/OS-II操作系統(tǒng)內(nèi)核的主要工作就是對(duì)任務(wù)進(jìn)行管理和調(diào)度?! ?、任務(wù)的概念  從應(yīng)程設(shè)計(jì)的角度來(lái)看,UC
    發(fā)表于 02-22 14:40

    μC/OS-II的移植方法

    概述嵌入式操作系統(tǒng)μC/OS-II是一個(gè)公開(kāi)源代碼的占先式多任務(wù)的微內(nèi)核RTOS,其特點(diǎn)可以概括為以下幾個(gè)方面:公開(kāi)源代碼,代碼結(jié)構(gòu)清晰、明
    發(fā)表于 07-25 08:14

    何在μCOS-II的多任務(wù)系統(tǒng)實(shí)現(xiàn)SOPC硬件設(shè)計(jì)?

    本人在教學(xué)及科研實(shí)驗(yàn),對(duì)基于μCOS-II的多任務(wù)系統(tǒng)在SOPC的設(shè)計(jì)總結(jié)出了具體實(shí)現(xiàn)方法
    發(fā)表于 10-17 08:20

    μC/OS-II內(nèi)核任務(wù)調(diào)度及內(nèi)存管理,看完你就懂了

    μC/OS-II內(nèi)核任務(wù)調(diào)度及內(nèi)存管理嵌入式系統(tǒng)的應(yīng)用軟件介紹
    發(fā)表于 04-28 06:19

    μC/OS-II 擴(kuò)充任務(wù)數(shù)的方法

    任務(wù)現(xiàn)在已成為操作系統(tǒng)和并發(fā)程序設(shè)計(jì)中一個(gè)非常重要的概念, 一般認(rèn)為任務(wù)是一個(gè)簡(jiǎn)單的程序,該程序可以認(rèn)為CPU 完全只屬于自己。在μC/OS-II
    發(fā)表于 04-15 09:28 ?7次下載

    μC/OS-II 任務(wù)調(diào)度機(jī)制的改進(jìn)

    介紹μC/OS-II 任務(wù)調(diào)度機(jī)制,并提出一種改進(jìn)方法,使μC/OS-II變成一個(gè)兼?zhèn)鋵?shí)時(shí)與分時(shí)
    發(fā)表于 04-15 11:21 ?14次下載

    μC OS-II 任務(wù)處理的一種改進(jìn)方法

    在μC/OS-II 內(nèi)核,各個(gè)不同的任務(wù)使用獨(dú)立的堆??臻g,堆棧的大小按每個(gè)任務(wù)所需要的最大堆
    發(fā)表于 05-15 13:46 ?14次下載

    μC OS-II 擴(kuò)充任務(wù)數(shù)的方法

    μC/OS-II 擴(kuò)充任務(wù)數(shù)的方法
    發(fā)表于 05-16 14:50 ?8次下載

    基于ARM的嵌入式操作系統(tǒng)μC/OS-II的移植

        介紹了μC/OS-II RTOS內(nèi)核結(jié)構(gòu)和任務(wù)管理,闡述了ARM 嵌入式芯片的體系結(jié)構(gòu),給出了基于
    發(fā)表于 09-04 09:49 ?28次下載

    μC/OS-II任務(wù)處理的改進(jìn)設(shè)計(jì)

    已經(jīng)有不少的文章介紹了有關(guān)μC/OS-II這個(gè)實(shí)時(shí)內(nèi)核及其應(yīng)用。在很多的處理器上,μC/OS-II都得到了應(yīng)用。μ
    發(fā)表于 04-18 22:12 ?1355次閱讀

    μC/OS-II縮短中斷關(guān)閉時(shí)間方法

    筆者將以μC/OS-II實(shí)時(shí)內(nèi)核為例,通過(guò)對(duì)μC/OS-II的改進(jìn),向讀者描述一種縮短實(shí)時(shí)操作系統(tǒng)中斷關(guān)閉時(shí)間的
    發(fā)表于 05-23 11:15 ?1596次閱讀
    μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b><b class='flag-5'>中</b>縮短中斷關(guān)閉時(shí)間<b class='flag-5'>方法</b>

    一種μC/OS-II任務(wù)調(diào)度硬件指令的實(shí)現(xiàn)

    C/OS-II 是一種基于優(yōu)先級(jí)的搶占式多任務(wù)實(shí)時(shí)操作系統(tǒng),包含了實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)間管理、任務(wù)
    發(fā)表于 10-30 11:18 ?2次下載
    一種μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b><b class='flag-5'>任務(wù)</b>調(diào)度硬件指令的實(shí)現(xiàn)

    uC/OS-II任務(wù)處理的一種改進(jìn)方法

    關(guān)于C/OS-II這個(gè)實(shí)時(shí)內(nèi)核及其應(yīng)用已經(jīng)有很多文章介紹了,對(duì)于學(xué)習(xí)RTOS的人來(lái)說(shuō),這個(gè)系統(tǒng)是很好的學(xué)習(xí)起點(diǎn)。雖然文獻(xiàn)[1]的源代碼沒(méi)有行號(hào)和函數(shù)名交叉索引表等,給源代碼閱讀造成一些
    發(fā)表于 11-01 16:11 ?0次下載
    uC/<b class='flag-5'>OS-II</b><b class='flag-5'>任務(wù)</b><b class='flag-5'>棧</b>處理的一種改進(jìn)<b class='flag-5'>方法</b>

    μC/OS-II的多任務(wù)系統(tǒng)實(shí)時(shí)性解析

    摘要 從產(chǎn)品研發(fā)的角度,針對(duì)小資源系統(tǒng)中使用C/OS-II的實(shí)時(shí)性和優(yōu)先級(jí)關(guān)系進(jìn)行了分析,提出了可刪除任務(wù)的靈活應(yīng)用和可變大小任務(wù)的實(shí)現(xiàn)
    發(fā)表于 11-06 14:29 ?2次下載
    μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>的多<b class='flag-5'>任務(wù)</b>系統(tǒng)實(shí)時(shí)性解析