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

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

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

實(shí)時(shí)操作系統(tǒng)UCOS-II,學(xué)會(huì)RTOS給你的身價(jià)增值

h1654155971.7688 ? 來源:未知 ? 作者:李倩 ? 2018-03-16 09:18 ? 次閱讀

如果,你最近關(guān)注一些嵌入式招聘職位描述,你可能會(huì)經(jīng)常看到看到使用過uCOS、Vxworks、QNX等RTOS者優(yōu)先。

隨便打開一個(gè)20K的嵌入式開發(fā)工作職責(zé):

你會(huì)發(fā)現(xiàn)熟悉RTOS的開發(fā)、移植、剪裁真的很吃香!

今天,我們就來介紹一下實(shí)時(shí)操作系統(tǒng)UCOS-II

一、嵌入式操作系統(tǒng)概覽

嵌入式操作系統(tǒng)的主要好處就是屏蔽了底層硬件的差別,給上層應(yīng)用提供統(tǒng)一的接口,并管理進(jìn)程調(diào)度和資源(如CPU時(shí)間、內(nèi)存)分配等。并且可以充分利用硬件資源,如在單任務(wù)時(shí)(大循環(huán)結(jié)構(gòu),如大部分51程序)遇到delay函數(shù)時(shí),CPU在空轉(zhuǎn)。而在多任務(wù)系統(tǒng),遇到delay或需等待資源時(shí)系統(tǒng)會(huì)自動(dòng)運(yùn)行下一個(gè)任務(wù),等條件滿足再回來運(yùn)行先前的任務(wù),這樣就充分利用了CPU,提高了效率。

uC/OS操作系統(tǒng)與裸機(jī)程序的最大不同點(diǎn)就在于uC/OS有任務(wù)調(diào)度,可以根據(jù)任務(wù)的重要程度(優(yōu)先級(jí))優(yōu)先執(zhí)行重要的任務(wù),從而確保能及時(shí)處理最重要的數(shù)據(jù)。(所以對(duì)于一個(gè)系統(tǒng)有必要使用OS的判斷是能否劃分一個(gè)個(gè)的任務(wù),并且各任務(wù)間的耦合很小)可以思考下裸機(jī)程序中斷的時(shí)候發(fā)生的過程。利用堆??梢院茏杂傻脑贏、B中切換,如果切換足夠快,A、B看以來好像同時(shí)在執(zhí)行,這就是并行,A、B就是任務(wù)。如果這個(gè)切換操作放到定時(shí)器函數(shù)中來做,就可以嚴(yán)格按照時(shí)間來切換。另外,各個(gè)任務(wù)之間有存在一定的關(guān)系,有邏輯上的先后等,必須引進(jìn)全局的結(jié)構(gòu)體、變量來標(biāo)記一些信息,全局的這些數(shù)據(jù)是不會(huì)被釋放的,所以所有的任務(wù)可以去通過讀、寫這些數(shù)據(jù)來實(shí)現(xiàn)各個(gè)程序塊交流信息,實(shí)現(xiàn)所謂的同步、互斥。這就是操作系統(tǒng)的原理,而這些不同的通信方式按功能細(xì)分就成事件管理、內(nèi)存管理等。

二、ucos的運(yùn)行概覽

首先是主函數(shù),然后是OSInit(),這個(gè)函數(shù)就是對(duì)那些全局的數(shù)據(jù)結(jié)構(gòu)初始化,建立希望的鏈表等數(shù)據(jù)結(jié)構(gòu),為后面全局變量通信做好準(zhǔn)備,并且創(chuàng)建了1-2個(gè)系統(tǒng)任務(wù)(空閑任務(wù)必須,為了不讓操作系統(tǒng)返回。統(tǒng)計(jì)任務(wù)可選),而所謂的創(chuàng)建任務(wù)OSTaskCreate就是把一個(gè)函數(shù)的函數(shù)地址、自己的棧建立聯(lián)系、優(yōu)先級(jí)、任務(wù)控制塊等弄好,為任務(wù)切換做好準(zhǔn)備。設(shè)置好定時(shí)切換的相關(guān)信息類似定時(shí)器,按照節(jié)拍在中斷中進(jìn)行任務(wù)切換判斷(這個(gè)節(jié)拍是給延時(shí)函數(shù)提供計(jì)時(shí)基準(zhǔn),一個(gè)任務(wù)的延時(shí)時(shí)間到或等待的資源滿足而進(jìn)入就緒表就會(huì)檢查優(yōu)先級(jí)看是否可以執(zhí)行),可以的話就發(fā)生切換,這個(gè)時(shí)候還沒有開啟開關(guān),所以等任務(wù)創(chuàng)建完成后,啟動(dòng)多任務(wù)函數(shù)OSStart(),這個(gè)函數(shù)是讓SP指到其中的一個(gè)棧,然后出棧就跳到一個(gè)任務(wù)函數(shù)里去了,接下來就是正常的任務(wù)運(yùn)行了。

對(duì)于操作系統(tǒng),主要是任務(wù)怎么釋放CPU(延時(shí)、中斷、等待資源),其他的任務(wù)怎么獲得CPU(進(jìn)入就緒表),如何找到某個(gè)任務(wù)(優(yōu)先級(jí)及任務(wù)控制列表)。

三、ucos各部分介紹

μC/OS-II的各種服務(wù)都以任務(wù)的形式來出現(xiàn)的。在μC/OS-II中,每個(gè)任務(wù)都有一個(gè)唯一的優(yōu)先級(jí)。它是基于優(yōu)先級(jí)可剝奪型內(nèi)核,適合應(yīng)用在對(duì)實(shí)時(shí)性要求較高的地方。

3.1 μC/OS-II的任務(wù)

μC/OS-II的核心部分就是它的任務(wù),它也是通過任務(wù)來對(duì)不同事件進(jìn)行響應(yīng)和處理的。從代碼上來看,μC/OS-II的任務(wù)一般為如下形式(C語言描述,后同):

void uCOSTask(void *p)

{

while(1)

{

任務(wù)具體的功能;

}

}

創(chuàng)建任務(wù)的函數(shù)有個(gè)是OSTaskCreate (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio),OSTaskCreate()需要四個(gè)參數(shù):task是任務(wù)代碼的指針,pdata是當(dāng)任務(wù)開始執(zhí)行時(shí)傳遞給任務(wù)的參數(shù)的指針,ptos是分配給任務(wù)的堆棧的棧頂指針,prio是分配給任務(wù)的優(yōu)先級(jí)。

μC/OS-II的任務(wù)是在內(nèi)存中來看,任務(wù)由三個(gè)部分構(gòu)成:任務(wù)的代碼部分、任務(wù)堆棧和任務(wù)控制塊。其中任務(wù)控制塊保存任務(wù)的屬性;任務(wù)堆棧在任務(wù)進(jìn)行切換時(shí)保存任務(wù)運(yùn)行的環(huán)境;任務(wù)代碼部分就是宏觀上看到的C語言代碼。

嵌入式設(shè)備中一般只有一個(gè)處理器,所以在某一具體的時(shí)刻只能有一個(gè)任務(wù)占用處理器。μC/OS-II的任務(wù)一共有5種狀態(tài):睡眠、就緒、運(yùn)行、等待和中斷服務(wù)。

3.2 任務(wù)控制塊

μC/OS-II中參與調(diào)度和管理的最小單位是任務(wù)。而任務(wù)是通過任務(wù)控制塊的形式管理的。任務(wù)控制塊是一個(gè)結(jié)構(gòu)體,它包含了任務(wù)的堆棧信息,任務(wù)控制塊的指針,前一個(gè)任務(wù)控制塊和后一個(gè)任務(wù)控制塊的指針(利用優(yōu)先級(jí)一個(gè)個(gè)查找是否是要找的任務(wù),所以優(yōu)先級(jí)是唯一的),任務(wù)的優(yōu)先級(jí)(根據(jù)優(yōu)先級(jí)查找到任務(wù)控制塊,從而就找到該任務(wù)),任務(wù)需要等待的時(shí)間(任務(wù)延時(shí)的時(shí)候時(shí)鐘節(jié)拍中斷來的時(shí)候會(huì)對(duì)等待時(shí)間做減,為零的時(shí)候就放入就緒表,查看一下是否需要切換)等信息。

任務(wù)控制塊包含了除了指向任務(wù)代碼的所有信息。而任務(wù)的代碼地址在任務(wù)運(yùn)行時(shí)是怎么獲得的呢?其實(shí),任務(wù)代碼的地址是通過任務(wù)的堆棧儲(chǔ)存的。

3.3 任務(wù)堆棧

任務(wù)在創(chuàng)建時(shí)候,必須指明該任務(wù)的堆棧。任務(wù)的堆棧大小由用戶根據(jù)實(shí)際情況自行定義。μC/OS-II的堆棧實(shí)際上是一個(gè)連續(xù)的內(nèi)存塊,任務(wù)在創(chuàng)建的時(shí)候,由函數(shù)OSTaskCreate()將任務(wù)的代碼和用戶為任務(wù)定義的堆棧聯(lián)系起來。由于堆棧按照增長(zhǎng)方向可以分為兩種類型,故在創(chuàng)建任務(wù)的時(shí)候調(diào)用的堆棧初始化函數(shù)實(shí)際上也跟微處理器類型有關(guān)的。故這些代碼也是移植時(shí)需要修改的。

3.4系統(tǒng)任務(wù)

μC/OS-II提供了兩個(gè)系統(tǒng)任務(wù):空閑任務(wù)和統(tǒng)計(jì)任務(wù)。其中空閑任務(wù)是必要的。因?yàn)樵谀骋粫r(shí)刻可能所有的用戶任務(wù)都不處于就緒狀態(tài),這樣微處理器會(huì)因?yàn)闆]有任何任務(wù)運(yùn)行造成系統(tǒng)崩潰。

3.5 臨界區(qū)

μC/OS-II還有一個(gè)臨界的概念,所謂臨界區(qū),就是一段特殊的代碼。在這段代碼內(nèi)不允許中斷的響應(yīng),以此來保證這段代碼的原子性。臨界代碼段通過調(diào)用開關(guān)中斷兩個(gè)宏來實(shí)現(xiàn)的。

3.6 μC/OS-II任務(wù)的管理

3.6.1 對(duì)就緒任務(wù)的管理

μC/OS-II定義了一個(gè)就緒表的數(shù)據(jù)結(jié)構(gòu),跟普通的數(shù)組非常像(也就是一維數(shù)組),但是被賦予了特殊的意義。就緒表中每一位表示一個(gè)優(yōu)先級(jí)的任務(wù)是否處于就緒狀態(tài)。而每一位的下標(biāo)則表示任務(wù)的優(yōu)先級(jí)。通過特殊的數(shù)據(jù)結(jié)構(gòu)和意義,就緒任務(wù)的管理效率很高。

任務(wù)就緒表是由一個(gè)OSRdyTbl數(shù)組表示,數(shù)組大小(OS_RDY_TBL_SIZE)由最低優(yōu)先級(jí)(OS_LOWEST_PRIO)確定, 這樣可以減少不必要的空間浪費(fèi),節(jié)約RAM資源。OSRdyTbl[]是INT8U 類型數(shù)組,每一個(gè)元素占8位。每一位表示一個(gè)優(yōu)先級(jí)狀態(tài)(1為就緒,0則未就緒)。8個(gè)元素則可以表示64個(gè)優(yōu)先級(jí)(8*8=64)。為加速就續(xù)表的查找,Labrosse把每個(gè)OSRdyTbl元素劃為每一優(yōu)先級(jí)組,8個(gè)元素則有8個(gè)優(yōu)先級(jí)組,它定義了一個(gè)INT8U類型的8位變量OSRdyGrp ,OSRdyGrp的每一位對(duì)應(yīng)每個(gè)優(yōu)先級(jí)組。如下圖:

任務(wù)優(yōu)先級(jí)的第三位用于確定任務(wù)在osRdyTb1中在元素的第幾位,接著的三位用于指定是第幾個(gè)元素。

假設(shè)優(yōu)先級(jí)31的任務(wù)第一個(gè)加入了就緒任務(wù)表,此時(shí)OSRdyGrp和OSRdyTbl的情況:

OSRdyGrp的第3位為1,表示第3優(yōu)先級(jí)組有就緒任務(wù)。OSRdyTbl的第7位為1,表示第31優(yōu)先級(jí)的任務(wù)被就緒。

用此可以使任務(wù)加入或脫離就緒表。調(diào)度的時(shí)候即是查找此表,找出最高的優(yōu)先級(jí),從而找到任務(wù)控制塊,執(zhí)行該任務(wù)。

3.6.2 任務(wù)的創(chuàng)建、掛起和其他操作

μC/OS-II提供了兩個(gè)函數(shù)可以創(chuàng)建任務(wù),它們是OSTaskCreate()和OSTaskCreateExt(),任務(wù)在創(chuàng)建之后也可以掛起或者恢復(fù),這同樣要使用μC/OS-II提供的系統(tǒng)函數(shù)。掛起任務(wù)使用函數(shù)OSTsakSuspend(),恢復(fù)被掛起的任務(wù)使用函數(shù)OSTaskResume()。μC/OS-II還提供了任務(wù)的刪除,優(yōu)先級(jí)的修改,查詢?nèi)蝿?wù)信息等其他功能的函數(shù)。

3.6.3 任務(wù)的調(diào)度

μC/OS-II任務(wù)的調(diào)度是由調(diào)度器完成的。所謂調(diào)度器實(shí)際上是一個(gè)函數(shù)OSShed();此函數(shù)通過搜索任務(wù)就緒表來獲得最高優(yōu)先級(jí)的就緒任務(wù),在由該任務(wù)的優(yōu)先級(jí)來獲得任務(wù)的控制塊再來實(shí)現(xiàn)任務(wù)的切換。

任務(wù)的調(diào)度不是任何時(shí)刻都進(jìn)行的,而是有時(shí)機(jī)的。μC/OS-II任務(wù)當(dāng)有以下情況發(fā)生時(shí)將產(chǎn)生一次任務(wù)調(diào)度:

● 創(chuàng)建了新任務(wù),并在就緒表中進(jìn)行了登記

● 有任務(wù)被刪除

● 有處于等待的任務(wù)被喚醒

● 中斷退出的時(shí)候

● 正在運(yùn)行的任務(wù)等待某事件而進(jìn)入等待狀態(tài)

● 正在運(yùn)行的任務(wù)自愿放棄微處理器占有權(quán)而等待一段時(shí)間

3.6.4任務(wù)的初始化和啟動(dòng)

μC/OS-II中定義了大量的全局變量和數(shù)據(jù)結(jié)構(gòu)。在μC/OS-II運(yùn)行以前需要對(duì)這些全局變量和數(shù)據(jù)結(jié)構(gòu)進(jìn)行初始化。為了完成μC/OS-II的初始化,系統(tǒng)提供了初始化函數(shù)OSInit()。μC/OS-II的啟動(dòng)也是通過系統(tǒng)提供的函數(shù)OSStart()來實(shí)現(xiàn)的。OSStart()在判斷系統(tǒng)沒有在運(yùn)行后來獲得就緒表中最高優(yōu)先級(jí)的就緒任務(wù),并調(diào)用函數(shù)OSStartHighRdy()來啟動(dòng)系統(tǒng)。

3.6.5 中斷和時(shí)鐘

實(shí)時(shí)系統(tǒng)為了能夠響應(yīng)異步事件,通常會(huì)采用中斷。μC/OS-II也采用了中斷來響應(yīng)外部事件。μC/OS-II處理中斷過程大致如下:當(dāng)系統(tǒng)開中斷時(shí),系統(tǒng)接收到中斷然后找到中斷服務(wù)程序的入口地址執(zhí)行中斷,執(zhí)行完成后退出中斷。這里要提到的一點(diǎn)是,當(dāng)要退出中斷時(shí),系統(tǒng)會(huì)查找就緒表是否有比處于中斷服務(wù)狀態(tài)任務(wù)的優(yōu)先級(jí)更高的任務(wù)進(jìn)入就緒狀態(tài)。如果有將會(huì)一發(fā)一次調(diào)度,否則返回被中斷的任務(wù)繼續(xù)運(yùn)行。關(guān)于中斷的一些細(xì)節(jié)在后面的移植的部分還會(huì)討論。

在所有的中斷源中最重要的一個(gè)就是時(shí)鐘中斷,它為系統(tǒng)提供時(shí)間服務(wù)以此來實(shí)現(xiàn)任務(wù)的延時(shí)。

3.6.6 任務(wù)間的通信

對(duì)于一個(gè)完整的嵌入式操作系統(tǒng)來說,任務(wù)間的通信機(jī)制必不可少。μC/OS-II提供了相應(yīng)的數(shù)據(jù)結(jié)構(gòu)和機(jī)制來實(shí)現(xiàn)任務(wù)之間的同步和通信。

在ucos II 里任務(wù)間通信可以采用以下幾種方式:

1. 共享全局變量,這是最快捷有效的方式,實(shí)現(xiàn)這種通信可以采用以下兩種方式:一是利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()來關(guān)閉中斷和打開中斷,二是利用函數(shù)OSSchedLock()和OSSchedUnlock()對(duì)μC/OS-II中的任務(wù)調(diào)度函數(shù)上鎖和開鎖.

2. 使用信號(hào)

3. 使用郵箱

4. 使用消息隊(duì)列

創(chuàng)建一個(gè)任務(wù)需要給這個(gè)任務(wù)分配一個(gè)任務(wù)控制塊,這個(gè)任務(wù)控制塊存儲(chǔ)著關(guān)于這個(gè)任務(wù)的重要信息。那么,事件控制塊就好比任務(wù)里的任務(wù)控制塊。它存儲(chǔ)著這個(gè)事件的重要信息,我們說創(chuàng)建一個(gè)事件(信號(hào),郵箱,消息隊(duì)列),其本質(zhì)的過程就是初始化這個(gè)事件控制塊。多個(gè)任務(wù)可以同時(shí)等待同一個(gè)事件的發(fā)生。在這種情況下,當(dāng)該事件發(fā)生后,所有等待該事件的任務(wù)中,優(yōu)先級(jí)最高的任務(wù)得到了該事件并進(jìn)入就緒狀態(tài),準(zhǔn)備執(zhí)行。

事件控制塊是一個(gè)數(shù)據(jù)結(jié)構(gòu),其定義如下:

typedef struct {

void *OSEventPtr; /* 指向消息或者消息隊(duì)列的指針 */

INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; /* 等待任務(wù)列表 */

INT16U OSEventCnt; /* 計(jì)數(shù)器(當(dāng)事件是信號(hào)量時(shí)) */

INT8U OSEventType; /* 時(shí)間類型 */

INT8U OSEventGrp; /* 等待任務(wù)所在的組 */

} OS_EVENT;

.OSEventPtr指針,只有在所定義的事件是郵箱或者消息隊(duì)列時(shí)才使用。當(dāng)所定義的事件是郵箱時(shí),它指向一個(gè)消息,而當(dāng)所定義的事件是消息隊(duì)列時(shí),它指向一個(gè)數(shù)據(jù)結(jié)構(gòu)(因?yàn)殛?duì)列要傳遞多個(gè)消息)。

.OSEventTbl[]和.OSEventGrp很像前面講到的OSRdyTbl[]和OSRdyGrp,只不過前兩者包含的是等待某事件的任務(wù),而后兩者包含的是系統(tǒng)中處于就緒狀態(tài)的任務(wù)。

.OSEventCnt當(dāng)事件是一個(gè)信號(hào)量時(shí),.OSEventCnt是用于信號(hào)量的計(jì)數(shù)器。

(初始化時(shí),如果信號(hào)量是用來表示一個(gè)或者多個(gè)事件的發(fā)生,那么該信號(hào)量的初始值應(yīng)設(shè)為0, 如果信號(hào)量是用于對(duì)共享資源的訪問,那么該信號(hào)量的初始值應(yīng)設(shè)為1)

.OSEventType定義了事件的具體類型。它可以是信號(hào)量(OS_EVENT_SEM)、郵箱(OS_EVENT_TYPE_MBOX)或消息隊(duì)列(OS_EVENT_TYPE_Q)中的一種。用戶要根據(jù)該域的具體值來調(diào)用相應(yīng)的系統(tǒng)函數(shù),以保證對(duì)其進(jìn)行的操作的正確性。

信號(hào)量是什么?信號(hào)量有什么用?

信號(hào)量一是可以用來表示一個(gè)或多個(gè)事件的發(fā)生,二是用來對(duì)共享資源的訪問。

有時(shí)候郵箱可以當(dāng)做信號(hào)量來使用,郵箱相對(duì)信號(hào)量而言,只是多傳遞了一個(gè)指針變量。其實(shí)和創(chuàng)建一個(gè)信號(hào)量的過程幾乎是一樣的,先申請(qǐng)一個(gè)空事件控制塊,接著初始化這個(gè)事件控制塊。最后返回一個(gè)指向這個(gè)事件控制塊的指針。不同之處在于事件控制塊的類型被設(shè)置成OS_EVENT_TYPE_MBOX,以及使用.OSEventPtr域來容納消息指針。

如果把郵箱比作是信號(hào)量的升級(jí)版,那消息隊(duì)列就是郵箱的升級(jí)版。郵箱可以實(shí)現(xiàn)從一個(gè)任務(wù)向另外一個(gè)任務(wù)發(fā)送一個(gè)指針變量,消息隊(duì)列則可以實(shí)現(xiàn)從一個(gè)任務(wù)向另外一個(gè)任務(wù)發(fā)送很多個(gè)指針變量。而且每個(gè)指針指向的數(shù)據(jù)結(jié)構(gòu)變量也可以有所不同。(消息隊(duì)列最根本的部分是一個(gè)循環(huán)緩沖區(qū),其中的每個(gè)單元包含一個(gè)指針。)和創(chuàng)建郵箱,創(chuàng)建信號(hào)量過程是很相似的,首先申請(qǐng)控制塊,接著初始化這個(gè)控制塊,和創(chuàng)建郵箱,信號(hào)量不同的,創(chuàng)建消息隊(duì)列過程是多申請(qǐng)了一個(gè)隊(duì)列控制塊。

最后,簡(jiǎn)單總結(jié)一下搞懂RTOS的知識(shí)儲(chǔ)備:

1. 找一塊別人已經(jīng)移植好代碼的MCU,把uCOS跑起來。然后去看別人的示例代碼,先搞懂怎么使用uC/OS。

嘗試著寫一個(gè)控制三個(gè)不同的led燈,它們以不同頻率閃爍。

2.等到uCOS給你提供的API用熟了, 去讀關(guān)于操作系統(tǒng)的書。 然后再去把堆棧、上下文、調(diào)度器、鎖、文件系統(tǒng)、網(wǎng)絡(luò)、中斷、線程、郵箱(消息隊(duì)列)等等這些概念對(duì)應(yīng)到實(shí)踐中去。

試著寫一個(gè)多任務(wù)的HTTP服務(wù)器。 試著利用uCOS重構(gòu)現(xiàn)有的代碼。

3. 去讀一個(gè)早期一點(diǎn)的版本uCOS的代碼, 看看uCOS是怎么實(shí)現(xiàn)操作系統(tǒng)的。

這個(gè)時(shí)候再去看操作系統(tǒng)原理的書。

4. 嘗試著移植uCOS到一塊新的芯片上去。 不到萬不得已不要去google。 試著獨(dú)立解決遇到的問題。

5. 改一改原始版本的uCOS代碼,看看修改了之后,操作系統(tǒng)的行為會(huì)如何變化。

6. 去查uCOS版本進(jìn)化的歷史,看看為什么大家會(huì)如此修改這個(gè)代碼? 為什么這么設(shè)計(jì) ?

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

原文標(biāo)題:月薪20K不是夢(mèng)!學(xué)會(huì)RTOS給你的身價(jià)增值

文章出處:【微信號(hào):weixin21ic,微信公眾號(hào):21ic電子網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    《嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II》4

    《嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II》4
    發(fā)表于 08-03 22:19

    邵貝貝譯著:嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II中文教程

    邵貝貝譯著:嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II中文教程
    發(fā)表于 08-04 11:16

    實(shí)時(shí)嵌入式操作系統(tǒng)ucos-II在ARM9上的移植應(yīng)用

    實(shí)時(shí)嵌入式操作系統(tǒng)ucos-II在ARM9上的移植應(yīng)用
    發(fā)表于 04-22 13:00

    Ucos中文書-邵貝貝嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II中文教程

    Ucos中文書-邵貝貝嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II中文教程
    發(fā)表于 04-28 11:44

    嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II[邵貝貝]

    嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II[邵貝貝]
    發(fā)表于 07-01 20:59

    基于linux的模擬uCOS-II實(shí)時(shí)操作系統(tǒng)

    作者:張森1 引言  uCOS-II是一個(gè)短小而功能強(qiáng)大的實(shí)時(shí)嵌入式操作系統(tǒng)。在Jean J.Labrosse先生所著.由邵貝貝教授翻譯的Micro/uCOS-II THE REAL-
    發(fā)表于 07-04 07:23

    基于linux的uCOS-II實(shí)時(shí)操作系統(tǒng)

    張森1 引言  uCOS-II是一個(gè)短小而功能強(qiáng)大的實(shí)時(shí)嵌入式操作系統(tǒng)。在Jean J.Labrosse先生所著.由邵貝貝教授翻譯的Micro/uCOS-II THE REAL-TIM
    發(fā)表于 07-09 07:26

    基于linux的uCOS-II實(shí)時(shí)操作系統(tǒng)模擬

    1 引言uCOS-II是一個(gè)短小而功能強(qiáng)大的實(shí)時(shí)嵌入式操作系統(tǒng)。在Jean J.Labrosse先生所著.由邵貝貝教授翻譯的Micro/uCOS-II THE REAL-TIME KE
    發(fā)表于 07-23 08:23

    uCOS-II操作流程

    商業(yè)途徑是需要付費(fèi)的,但是對(duì)于學(xué)習(xí)研究卻是免費(fèi)的。它們同是嵌入式實(shí)時(shí)操作系統(tǒng),很多東西都是共通的,熟悉其一,其它都非難題了。??RTOS的學(xué)習(xí),我選擇的是uCOS-II。學(xué)習(xí)該
    發(fā)表于 08-23 09:29

    UCOS-II實(shí)時(shí)操作系統(tǒng)是怎樣進(jìn)行移植的

    UCOS-II實(shí)時(shí)操作系統(tǒng)是怎樣進(jìn)行移植的?有哪些具體流程?
    發(fā)表于 11-02 10:00

    uCOS-II實(shí)時(shí)操作系統(tǒng)實(shí)時(shí)操作系統(tǒng)與分時(shí)操作系統(tǒng)的區(qū)別是什么

    文章目錄1簡(jiǎn)介1uCOS-II中的任務(wù)1簡(jiǎn)介uCOS-II實(shí)時(shí)操作系統(tǒng)實(shí)時(shí)操作系統(tǒng)與分時(shí)
    發(fā)表于 12-14 06:42

    UCOS-II實(shí)時(shí)操作系統(tǒng)在數(shù)碼相框中的應(yīng)用

    本文研究了UCOS-II操作系統(tǒng)在數(shù)碼相框中的應(yīng)用,詳細(xì)描述了UCOS-II操作系統(tǒng)在ZEVIO1020雙核處理器上的移植,并且根據(jù)數(shù)碼相框多任務(wù)的特點(diǎn),設(shè)計(jì)了一套完整的消息處理機(jī)制
    發(fā)表于 03-09 11:36 ?3036次閱讀
    <b class='flag-5'>UCOS-II</b><b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>操作系統(tǒng)</b>在數(shù)碼相框中的應(yīng)用

    嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II(第二版)配套光盤

    電子發(fā)燒友網(wǎng)站提供《嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II(第二版)配套光盤.txt》資料免費(fèi)下載
    發(fā)表于 10-23 14:55 ?0次下載

    UCOS-II:源碼公開的實(shí)時(shí)嵌入式操作系統(tǒng)

    UCOS-II:源碼公開的實(shí)時(shí)嵌入式操作系統(tǒng)。
    發(fā)表于 04-20 13:55 ?9次下載

    嵌入式實(shí)時(shí)操作系統(tǒng) uCOS-II +g +m

    嵌入式實(shí)時(shí)操作系統(tǒng) uCOS-II ,講的詳細(xì),希望對(duì)大家學(xué)嵌入式實(shí)時(shí)操作系統(tǒng)有幫助。
    發(fā)表于 05-31 14:40 ?2次下載