專(zhuān)利名稱(chēng):基于uC/OS-II的硬件任務(wù)管理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種硬件任務(wù)管理器,屬于嵌入式操作系統(tǒng)技術(shù)領(lǐng)域。
背景技術(shù):
uC/OS-II是一種應(yīng)用廣泛的嵌入式實(shí)時(shí)操作系統(tǒng),它采用基于優(yōu)先級(jí)的可剝奪內(nèi)核,體積小巧,運(yùn)行效率高。通過(guò)進(jìn)一步研究發(fā)現(xiàn),uC/OS-II內(nèi)部核心的任務(wù)管理系統(tǒng)還有改善的空間。通過(guò)分析uC/OS-II內(nèi)核源碼可發(fā)現(xiàn),當(dāng)時(shí)鐘中斷到來(lái)時(shí),內(nèi)核需要調(diào)用 OSTimeTickO函數(shù),進(jìn)行任務(wù)掃描管理,主要過(guò)程如下I.關(guān)閉中斷;2.如果任務(wù)處于阻塞態(tài)或延時(shí)態(tài),將其延時(shí)計(jì)數(shù)器減1,如果延時(shí)計(jì)數(shù)器為0,則任務(wù)進(jìn)入運(yùn)行態(tài);3.開(kāi)啟中斷。每次調(diào)度時(shí)鐘中斷到來(lái),內(nèi)核需要處理64個(gè)任務(wù)信息,進(jìn)行64次中斷關(guān)斷開(kāi)啟操作,進(jìn)行大量的任務(wù)狀態(tài)判斷,占用了大量CPU時(shí)間,需要數(shù)千個(gè)CPU處理周期。根據(jù)任務(wù)數(shù)和任務(wù)狀態(tài)不同,處理時(shí)間也不一樣,開(kāi)啟的任務(wù)數(shù)量越多,消耗CPU時(shí)間也越多,這也增加了內(nèi)核執(zhí)行時(shí)間的不確定性。uC/OS-II的任務(wù)優(yōu)先級(jí)排序設(shè)計(jì)的非常精巧,采用一個(gè)8x8任務(wù)就緒表實(shí)現(xiàn),每次通過(guò)查詢(xún)就緒表就可以快速找到正在運(yùn)行的優(yōu)先級(jí)最高的任務(wù),比輪詢(xún)操作更方便快捷,但依然需要十幾個(gè)CPU處理時(shí)間,有改善的空間。綜上所述,uC/OS-II為了通用性,采用了精巧的任務(wù)管理方式,對(duì)于特定的使用環(huán)境,可以對(duì)內(nèi)核進(jìn)行修改,以減小內(nèi)核處理時(shí)間,增加內(nèi)核調(diào)度時(shí)間確定性,實(shí)現(xiàn)更高的性倉(cāng)泛。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是對(duì)嵌入式操作系統(tǒng)內(nèi)核進(jìn)行改進(jìn),以減小內(nèi)核處理時(shí)間,增加內(nèi)核調(diào)度時(shí)間確定性,實(shí)現(xiàn)更高的性能。為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種基于UC/0S-II的硬件任務(wù)管理器,嵌入式操作系統(tǒng)包括CPU和FPGA,CPU與FPGA以總線方式相連,CPU通過(guò)地址空間訪問(wèn)FPGA的寄存器接口,控制硬件任務(wù)管理器,其特征在于在FPGA端設(shè)置有硬件任務(wù)管理器,硬件任務(wù)管理器包括全局管理模塊和任務(wù)管理模塊,所述全局管理模塊包括當(dāng)前最高優(yōu)先級(jí)任務(wù)ID寄存器和時(shí)鐘脈沖寄存器,所述任務(wù)管理模塊有64個(gè),每個(gè)uC/OS-II任務(wù)對(duì)應(yīng)一個(gè)任務(wù)管理模塊,每個(gè)任務(wù)管理模塊包含任務(wù)狀態(tài)寄存器、阻塞狀態(tài)寄存器、阻塞超時(shí)結(jié)果寄存器和延時(shí)計(jì)數(shù)寄存器,當(dāng)前優(yōu)先級(jí)最高任務(wù)ID寄存器讀取當(dāng)前優(yōu)先級(jí)最高任務(wù)ID寄存器可得到當(dāng)前最高任務(wù)的ID,最高任務(wù)的ID是由各任務(wù)狀態(tài)同步編碼得到;
時(shí)鐘脈沖寄存器時(shí)鐘脈沖寄存器用于管理各任務(wù)狀態(tài),通知任務(wù)管理模塊有時(shí)鐘到來(lái);任務(wù)狀態(tài)寄存器任務(wù)狀態(tài)寄存器如果是0,表明任務(wù)狀態(tài)是掛起態(tài),否則是運(yùn)行態(tài),CPU直接設(shè)置該寄存器,如果延時(shí)計(jì)數(shù)寄存器由I變?yōu)?,任務(wù)狀態(tài)寄存器置為1,表明任務(wù)由掛起態(tài)進(jìn)入運(yùn)行態(tài);阻塞狀態(tài)寄存器阻塞狀態(tài)寄存器為O表明任務(wù)進(jìn)入運(yùn)行態(tài)或延時(shí)態(tài),為I為阻塞態(tài),表明任務(wù)正在等待信號(hào)量或者消息隊(duì)列,如果延時(shí)計(jì)數(shù)寄存器由I變?yōu)?,阻塞狀態(tài)寄 存器置為0,表明任務(wù)由阻塞態(tài)進(jìn)入運(yùn)行態(tài);阻塞超時(shí)結(jié)果寄存器如果延時(shí)計(jì)數(shù)寄存器由I變?yōu)?,且阻塞狀態(tài)寄存器為1,則阻塞超時(shí)結(jié)果寄存器置為1,表明阻塞超時(shí),否則為O ;延時(shí)計(jì)數(shù)寄存器通過(guò)設(shè)置延時(shí)計(jì)數(shù)寄存器,可以在任務(wù)延時(shí)態(tài)時(shí)指定任務(wù)延時(shí)時(shí)間,在任務(wù)阻塞態(tài)時(shí)設(shè)置任務(wù)阻塞等待時(shí)間,如果延時(shí)計(jì)數(shù)寄存器不為0,當(dāng)CPU向時(shí)鐘脈沖寄存器寫(xiě)I時(shí),該寄存器值自動(dòng)減I。本發(fā)明所達(dá)到的有益效果本發(fā)明充分利用FPGA的并行優(yōu)勢(shì),當(dāng)時(shí)鐘中斷到來(lái)時(shí),只需要CPU向時(shí)鐘脈沖寄存器寫(xiě)1,即可完成所有任務(wù)運(yùn)行狀態(tài)管理,然后可以立即獲取當(dāng)前最高優(yōu)先級(jí)任務(wù)的ID,將需要耗費(fèi)CPU數(shù)百甚至數(shù)千處理周期降低到只需要2個(gè)處理周期,與操作系統(tǒng)負(fù)載輕重?zé)o關(guān),極大提高了操作系統(tǒng)的實(shí)時(shí)性。
圖I為本發(fā)明CPU與FPGA的連接示意圖。
具體實(shí)施例方式本發(fā)明通過(guò)分析uC/OS-II內(nèi)核,提出了一種硬件任務(wù)管理器,以加快內(nèi)核運(yùn)行速度。目前大多嵌入式操作系統(tǒng)采用了 CPU+FPGA模式,在FPGA端可以方便的實(shí)現(xiàn)uC/OS-II任務(wù)管理器功能。CPU與FPGA以總線方式相連,CPU通過(guò)地址空間訪問(wèn)FPGA的寄存器接口,控制硬件任務(wù)管理器,如圖I所示。硬件任務(wù)管理器包括全局管理模塊和任務(wù)管理模塊。全局管理模塊包括當(dāng)前最高優(yōu)先級(jí)任務(wù)ID寄存器、時(shí)鐘脈沖寄存器。任務(wù)管理模塊有64個(gè),每個(gè)uC/OS-II任務(wù)對(duì)應(yīng)一個(gè)任務(wù)管理模塊,每個(gè)任務(wù)管理模塊包含任務(wù)狀態(tài)寄存器、阻塞狀態(tài)寄存器、阻塞超時(shí)結(jié)果寄存器、延時(shí)計(jì)數(shù)寄存器。各寄存器地址偏移編碼如表I所示。表I
權(quán)利要求
1.一種基于UC/OS-II的硬件任務(wù)管理器,嵌入式操作系統(tǒng)包括CPU和FPGA,CPU與FPGA以總線方式相連,CPU通過(guò)地址空間訪問(wèn)FPGA的寄存器接口,控制硬件任務(wù)管理器,其特征在于在FPGA端設(shè)置有硬件任務(wù)管理器,硬件任務(wù)管理器包括全局管理模塊和任務(wù)管理模塊,所述全局管理模塊包括當(dāng)前最高優(yōu)先級(jí)任務(wù)ID寄存器和時(shí)鐘脈沖寄存器,所述任務(wù)管理模塊有64個(gè),每個(gè)uC/OS-II任務(wù)對(duì)應(yīng)一個(gè)任務(wù)管理模塊,每個(gè)任務(wù)管理模塊包含任務(wù)狀態(tài)寄存器、阻塞狀態(tài)寄存器、阻塞超時(shí)結(jié)果寄存器和延時(shí)計(jì)數(shù)寄存器, 當(dāng)前優(yōu)先級(jí)最高任務(wù)ID寄存器讀取當(dāng)前優(yōu)先級(jí)最高任務(wù)ID寄存器得到當(dāng)前最高任務(wù)的ID,最聞任務(wù)的ID是由各任務(wù)狀態(tài)同步編碼得到; 時(shí)鐘脈沖寄存器時(shí)鐘脈沖寄存器用于管理各任務(wù)狀態(tài),通知任務(wù)管理模塊有時(shí)鐘到來(lái); 任務(wù)狀態(tài)寄存器任務(wù)狀態(tài)寄存器如果是0,表明任務(wù)狀態(tài)是掛起態(tài),否則是運(yùn)行態(tài),CPU直接設(shè)置該寄存器,如果延時(shí)計(jì)數(shù)寄存器由I變?yōu)?,任務(wù)狀態(tài)寄存器置為1,表明任務(wù)由掛起態(tài)進(jìn)入運(yùn)行態(tài); 阻塞狀態(tài)寄存器阻塞狀態(tài)寄存器為O表明任務(wù)進(jìn)入運(yùn)行態(tài)或延時(shí)態(tài),阻塞狀態(tài)寄存器為I為阻塞態(tài),表明任務(wù)正在等待信號(hào)量或者消息隊(duì)列,如果延時(shí)計(jì)數(shù)寄存器由I變?yōu)?,阻塞狀態(tài)寄存器置為0,表明任務(wù)由阻塞態(tài)進(jìn)入運(yùn)行態(tài); 阻塞超時(shí)結(jié)果寄存器如果延時(shí)計(jì)數(shù)寄存器由I變?yōu)?,且阻塞狀態(tài)寄存器為1,則阻塞超時(shí)結(jié)果寄存器置為1,表明阻塞超時(shí),否則為O ; 延時(shí)計(jì)數(shù)寄存器通過(guò)設(shè)置延時(shí)計(jì)數(shù)寄存器,可以在任務(wù)延時(shí)態(tài)時(shí)指定任務(wù)延時(shí)時(shí)間,在任務(wù)阻塞態(tài)時(shí)設(shè)置任務(wù)阻塞等待時(shí)間,如果延時(shí)計(jì)數(shù)寄存器不為0,當(dāng)CPU向時(shí)鐘脈沖寄存器寫(xiě)I時(shí),該寄存器值自動(dòng)減I。
全文摘要
本發(fā)明公開(kāi)了一種基于uC/OS-II的硬件任務(wù)管理器,嵌入式操作系統(tǒng)包括CPU和FPGA,CPU與FPGA以總線方式相連,CPU通過(guò)地址空間訪問(wèn)FPGA的寄存器接口,控制硬件任務(wù)管理器,其特征在于在FPGA端設(shè)置有硬件任務(wù)管理器,硬件任務(wù)管理器包括全局管理模塊和任務(wù)管理模塊,所述全局管理模塊包括當(dāng)前最高優(yōu)先級(jí)任務(wù)ID寄存器和時(shí)鐘脈沖寄存器,所述任務(wù)管理模塊有64個(gè),每個(gè)uC/OS-II任務(wù)對(duì)應(yīng)一個(gè)任務(wù)管理模塊,每個(gè)任務(wù)管理模塊包含任務(wù)狀態(tài)寄存器、阻塞狀態(tài)寄存器、阻塞超時(shí)結(jié)果寄存器和延時(shí)計(jì)數(shù)寄存器。本發(fā)明極大地提高了操作系統(tǒng)的實(shí)時(shí)性。
文檔編號(hào)G06F9/48GK102929714SQ20121039925
公開(kāi)日2013年2月13日 申請(qǐng)日期2012年10月19日 優(yōu)先權(quán)日2012年10月19日
發(fā)明者姚艷松, 陳靖公, 雍太利, 朱學(xué)海 申請(qǐng)人:國(guó)電南京自動(dòng)化股份有限公司