基于FPGA的??臻g管理器的研究和設(shè)計(jì)
摘 要: 提出了一種將堆??臻g劃分為任務(wù)棧和中斷嵌套棧的設(shè)計(jì)結(jié)構(gòu),使堆棧空間最小化。采用VHDL硬件語言,在FPGA設(shè)備上模擬實(shí)現(xiàn)了具有自動(dòng)檢驗(yàn)功能的棧空間管理器。??臻g管理器由不同功能的邏輯模塊組成,主要闡述了狀態(tài)控制邏輯模塊和地址產(chǎn)生邏輯模塊的設(shè)計(jì)方法。
本文引用地址:http://m.butianyuan.cn/article/191537.htm航空航天、工業(yè)控制、汽車電子和核電站建設(shè)等領(lǐng)域的高速發(fā)展,對(duì)嵌入式操作系統(tǒng)實(shí)時(shí)性的要求越來越高。同時(shí),由于FPGA的集成度和速度的不斷提高,使嵌入式操作系統(tǒng)硬件化實(shí)現(xiàn)成為發(fā)展趨勢。硬實(shí)時(shí)操作系統(tǒng)中的堆棧管理對(duì)系統(tǒng)的實(shí)時(shí)性和可靠性起著至關(guān)重要的作用,而傳統(tǒng)操作系統(tǒng)內(nèi)核是將每個(gè)任務(wù)的堆??臻g直接進(jìn)行最大化處理,導(dǎo)致大量存儲(chǔ)空間浪費(fèi),另外采用通用RAM尋址方式也不能滿足對(duì)被切換任務(wù)信息的快速保護(hù)。
基于上述問題,本文提出了一種堆??臻g結(jié)構(gòu),設(shè)計(jì)了一款具有自動(dòng)檢驗(yàn)功能的棧空間管理器,并在Xilinx公司的集成開發(fā)環(huán)境FPGA系統(tǒng)上實(shí)現(xiàn)。
1 堆??臻g結(jié)構(gòu)
堆??臻g是按先進(jìn)后出(LIFO)原則分配的連續(xù)存儲(chǔ)器空間,可以滿足保護(hù)任務(wù)切換信息和中斷響應(yīng)時(shí)保護(hù)處理器狀態(tài)和任務(wù)參數(shù)數(shù)據(jù)的需要[1],且對(duì)每個(gè)任務(wù)分配一個(gè)單獨(dú)的任務(wù)棧和一個(gè)響應(yīng)系統(tǒng)中斷任務(wù)的中斷嵌套棧。如圖1所示,??臻g劃分為n個(gè)任務(wù)棧和1個(gè)中斷嵌套棧。
任務(wù)棧主要保護(hù)被切換任務(wù)的信息。它存放的數(shù)據(jù)有:任務(wù)代碼首地址、任務(wù)參數(shù)、任務(wù)中定義的局部變量、被調(diào)用函數(shù)的參數(shù)和局部變量及任務(wù)中各個(gè)函數(shù)的返回地址。中斷嵌套棧存放被中斷任務(wù)的數(shù)據(jù),包括發(fā)生中斷時(shí)需要保存的上下文、中斷嵌套時(shí)需要保存的上下文和中斷服務(wù)程序的局部變量。
在硬實(shí)時(shí)操作系統(tǒng)中,當(dāng)發(fā)生中斷或中斷嵌套時(shí),堆棧地址指針從任務(wù)棧切換到中斷嵌套棧。當(dāng)所有的中斷服務(wù)程序全部執(zhí)行完成后,堆棧地址指針從中斷嵌套棧切換到任務(wù)棧,繼續(xù)執(zhí)行該被中斷的任務(wù)。這種管理方式同以往操作系統(tǒng)采用被中斷任務(wù)的數(shù)據(jù)保存到相應(yīng)任務(wù)堆棧的方法相比,更有效節(jié)約了堆??臻g開銷。
2 ??臻g管理器總體結(jié)構(gòu)
為了節(jié)約RAM開銷,從總體結(jié)構(gòu)上構(gòu)建了一款具有LIFO及自檢功能的??臻g管理器。棧空間管理器結(jié)構(gòu)包括一個(gè)雙端口存儲(chǔ)單元、狀態(tài)控制邏輯模塊、地址產(chǎn)生邏輯模塊、中斷判斷邏輯。其中狀態(tài)控制邏輯模塊由空/滿標(biāo)志產(chǎn)生邏輯、二進(jìn)制運(yùn)算邏輯和標(biāo)志寄存器組3部分組成;地址產(chǎn)生邏輯模塊由讀/寫地址邏輯、中斷棧邏輯和地址寄存器組3部分組成。
由圖2可知,狀態(tài)控制邏輯模塊的工作過程為:從標(biāo)志寄存器組中讀出當(dāng)前任務(wù)棧的使用量fcount信號(hào)值,fcount信號(hào)值傳送至二進(jìn)制運(yùn)算邏輯。在讀/寫控制信號(hào)有效的情況下,二進(jìn)制運(yùn)算邏輯有效,修改fcount信號(hào)值,修改后的值作為USED的輸出值,同時(shí)寫回到標(biāo)志寄存器的對(duì)應(yīng)fcount位中。修改后的信號(hào)值也作為空/滿標(biāo)志產(chǎn)生邏輯的輸入信號(hào),空/滿標(biāo)志產(chǎn)生邏輯生成Full/Empty標(biāo)志,并把該標(biāo)志位寫回到標(biāo)志寄存器對(duì)應(yīng)位Full/Empty中。其中標(biāo)志寄存器freg的結(jié)構(gòu)如圖3所示,初始值為0000001000000000B。
評(píng)論