《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的μC/OS-II任務管理硬件設計
基于FPGA的μC/OS-II任務管理硬件設計
李 巖,崔曉英,李賢堯,趙宏杰,程 平,張禮勇
哈爾濱理工大學 計算機科學與技術學院,黑龍江 哈爾濱150080
摘要: 針對實時操作系統的開銷導致應用程序可執行性降低的問題,提出了基于FPGA的硬件實時操作系統設計方案,并實現了μC/OS-II任務管理模塊的硬件化。通過設計基于片內寄存器的TCB及基于組合電路的任務調度器,充分發揮了多任務潛在的并行性。整個設計采用VHDL硬件描述語言,通過ISE 8.2軟件進行時序仿真驗證,并使用Xilinx公司的Virtex-II Pro FPGA板實現。
中圖分類號: TP316.2
文獻標識碼: A
Hardware implementation of task management of μC/OS-II based on FPGA
LI Yan,CUI Xiao Ying,LI Xian Yao,ZHAO Hong Jie,CHENG Ping,ZHANG Li Yong
College of Computer Sclence and Technology,Harbin University of Science and Technology,Harbin 150080,China
Abstract: In order to resolve the problem that the real-time operating system kernel used up a lot of system resources which reduced the enforceability of the application, this paper proposed a hardware design of real-time operating system based on FPGA, and implemented the task management of the μC/OS-II. The design of the TCB-based on-chip registers and the task scheduler based on combinational circuits gave full play to the potential of the multi-task parallelism. The system hardware was designed by VHDL, simulation through the ISE 8.2, and implemented on FPGA.
Key words : hardware real-time operating system;FPGA;task management;VHDL

    實時操作系統RTOS(Real Time Operating System)由于具有調度的實時性、響應時間的可確定性、系統高度的可靠性等特點,被越來越多地應用在嵌入式系統中,如:航空航天、工業控制、汽車電子和核電站建設等眾多領域。
    傳統上,RTOS內核是加在應用程序中的軟件,它不僅增加了ROM(代碼空間)和RAM(數據空間)的開銷,而且增加了應用程序的額外負荷,即使在設計較好的應用系統中內核仍占用2%~5%的CPU負荷[1]。在實時性較強的場合,若無法得到及時的響應,將會引起嚴重后果。因此,降低RTOS內核的系統開銷及提高其實時性非常重要。
    對于降低RTOS占用應用程序處理器開銷的研究,大多數集中在改進調度算法[2]和提高處理器的處理能力[3],但是依靠改進調度算法已不能使其實時性有更大的提高,通過提高處理器速度也達不到理想的效果。隨著EDA技術的發展及硬件芯片造價的降低,“軟件硬件化”的趨勢正在成為一個研究的新熱點。采用硬件芯片實現RTOS的功能模塊極大地發揮了系統處理的并行特性,使硬件RTOS的處理速度達到了傳統軟件RTOS的6~50倍[4]。然而,RTOS的硬件化非常復雜、繁瑣,大多由軟件實現的數據結構不適合硬件的并行實現,需要重新修改、設計。
    本文就具體的實時操作系統μC/OS-II的任務管理進行了硬件設計,實現了任務管理模塊系統調用的硬件電路和基于組合電路的硬件任務調度器。
1 硬件RTOS總體設計
    硬件RTOS由軟件和硬件兩部分組成,如圖1所示。軟件部分負責應用程序與硬件RTOS的交互,主要實現2點功能:向應用程序提供訪問硬件函數的接口;向硬件邏輯提供返回處理結果的中斷處理函數和任務切換的中斷處理函數。硬件部分將以往由底層軟件函數完成的工作,采用硬件函數完成。
    硬件RTOS仍然是以系統調用的形式為應用程序服務,所不同的是由調用硬件函數替代了以往的軟件函數。軟件函數和硬件函數的區別[5]在于:它們被處理時所在的器件不同,軟件函數編譯成一條條指令在處理器上執行,硬件函數把參數通過數據總線發送到了指定硬件單元電路的寄存器中,再由硬件邏輯電路進行相應的處理。硬件電路與處理器可以并行工作,節省的處理器時間用于執行別的任務,提高了系統的可調度性。
    圖1中,硬件部分由輸入輸出寄存器、中斷控制器、控制器和RTOS主要功能模塊等組成。

    (1)輸入輸出寄存器。輸入寄存器接收由接口函數傳遞的功能代碼和參數,輸出寄存器將執行結果返回給接口函數。
    (2)中斷控制器。接收外部事件中斷,中斷控制器使用FPGA的I/O(輸入/輸出)管腳,每個管腳對應一個外部中斷,一個或者多個外部中斷對應一個中斷處理任務[6]。當外部中斷到來時,相應的事件標志位被置位,中斷任務被置為就緒態。
    (3)控制器。從事件控制塊和信號量控制塊獲知任務的狀態,結合系統調用的功能代碼和參數信息,確定將要執行的操作并發出控制信號。每個硬件單元都通過CPU發出的控制信號進行工作。
    RTOS主要功能模塊包括:事件標志組管理、信號量管理、任務管理及時鐘管理。
    (1)事件標志組管理。事件標志組是一個數據結構,采用FPGA的片內寄存器實現,每個事件占1 bit。任務或中斷服務可以將某一位置位或復位。當任務所需要的事件發生時,則將相應的事件位置位;當任務所等待的事件都發生時,則應向控制器提出改變任務狀態的相應申請,同時將任務的ID號送給任務管理模塊。
    (2)信號量管理。信號量由2部分組成:16 bit的無符號整型的計數值(0~65535);等待該信號量的任務組成的等待任務表。采用可預置的雙向計數器(up/down)實現計數值部分,采用FPGA片內的寄存器實現該信號量的等待任務表。寄存器的位數對應系統中的任務數,每個任務占1 bit,且初始值為0(表示沒有任務等待該信號量)。等待該信號量的任務將寄存器的相應位置1,釋放該信號量的任務喚醒優先級較高的等待任務,將寄存器的相應位置0。每發生一次置位或復位操作,也必須向控制器提出改變任務狀態的相應申請,同時將相應任務的ID號送給任務管理模塊。
    (3)任務管理。負責各種任務狀態的切換和任務調度。任務管理模塊接收從輸入寄存器、事件標志組管理模塊或信號量管理模塊傳遞來的任務ID號,在控制器的相應控制信號作用下,執行任務狀態的切換。調度器以任務的狀態為敏感信號,當任務的狀態發生改變時,觸發調度器執行一次任務調度,找出當前優先級最高的就緒態任務。若其優先級高于當前正在運行的任務的優先級,則向CPU發出硬件中斷處理信號。
    (4)定時器管理。主要實現任務的延時,當設置的延時時間到且任務沒有等待別的資源時,將任務的狀態置為就緒。
    由圖1可知,硬件RTOS的工作過程如下:
    (1)在應用程序中調用系統服務。
    (2)系統調用的接口函數將功能代碼和參數傳給硬件部分的輸入寄存器。
    (3)硬件部分執行系統調用。
    (4)在硬件邏輯執行系統調用的過程中,可以接收外部事件的異步請求,因此,硬件部分執行系統調用過程中可能轉向以下不同的處理過程:
    ①若外部事件請求使中斷任務就緒,則向處理器發出要求任務切換的硬件中斷請求。
    ②若系統調用使高優先級的任務就緒,則硬件部分向處理器發出要求任務切換的硬件中斷請求。
    ③硬件部分完成系統調用功能,則采用中斷形式通知處理器并回送處理結果。
    (5)中斷處理函數完成任務切換。
    (6)處理器執行新任務。
2 μC/OS-II任務管理硬件設計
    任務管理是RTOS的核心,本文首先對μC/OS-II任務管理模塊進行了硬件設計,其他的模塊可以依托任務管理展開。μC/OS-II任務管理主要包括建立任務、刪除任務、掛起任務、恢復任務、查詢任務和任務調度等。其中建立任務、刪除任務、掛起任務、恢復任務和查詢任務是通過系統調用形式交給用戶調用的;而任務調度是交給系統函數調用的,用戶不能直接調用它。因此,本文將任務管理分成系統調用函數的硬件實現和任務調度器硬件實現2部分。
2.1 任務管理系統調用函數的硬件設計
    μC/OS-II的任務由3部分組成:即任務程序代碼、任務堆棧、任務控制塊TCB(Task Control Block)。TCB把任務代碼和任務堆棧進行關聯而使三者成為一個整體。
    任務管理系統調用的硬件實現電路如圖2所示。參數1是建立任務時,寫入TCB的任務代碼段地址、任務優先級、任務的參數指針和分配給任務的堆棧棧頂指針等任務運行和管理的信息;參數2是分配給任務的ID號。每個任務依據任務的ID號對應一個TCB。

    在圖2中,任務管理系統調用的硬件實現電路主要由分配器、選擇器和TCB寄存器組成。
    (1)分配器。建立任務和刪除任務時,分配器根據任務的ID號選擇建立任務的信息送到對應的輸出通道上,分配器的輸出端與多路選擇器的一路輸入端直連,即參數1被送到了選擇器的輸入端,作為一路輸入。掛起任務和恢復任務時,分配器根據任務的ID號,將任務的狀態送到對應TCB的狀態寄存器中。
    (2)選擇器。選擇器的輸入端分別是建立任務時要送給 TCB的數據(參數1)和刪除任務時要送給TCB的數據(系統初始值),數據輸出端與一個TCB塊直連。建立信號有效時,選擇參數1寫入TCB,建立任務完成;否則,寫入系統的初始值覆蓋TCB信息,即任務被刪除。掛起和恢復任務只需根據任務的ID號找到相應的TCB并修改其狀態寄存器的值。二值選擇器的輸入端是0和1,可以分別表示任務的等待和就緒狀態。
    (3)TCB寄存器。在軟件實現的RTOS中,空閑TCB塊和已占用的TCB塊分別以空閑任務鏈表和任務鏈表的形式常駐內存。但是基于鏈表的軟件算法并不適合直接采用硬件高效實現,因為只有讀取鏈表的前一個表項的內容后,才能獲得后續表項的地址,限制了硬件并行的開發。因此,本文將TCB的數據結構全部采用片內的寄存器資源實現,從而節省了鏈表的查找時間,提高了系統調用的執行效率。
2.2 任務調度器的硬件設計
    μC/OS-II進行任務調度的思想是,每時每刻總是讓優先級最高的就緒任務處于運行狀態。為了實現高效的調度算法,采用組合電路實現硬件調度器,如圖3所示。以優先級為選擇條件,將TCB中的狀態寄存器直接與調度器相連接。這樣,只要任務的優先級或任務的狀態有一個發生改變,就會立刻引發一次任務的的重新調度。

    圖3中,數據分配器與TCB寄存器中的狀態寄存器RDY輸出端直連,使用優先級PRI作為選擇條件,將RDY的就緒態(RDY=‘1’)分配到不同的輸出通道上。寄存器REG_X接收數據分配器輸出通道的輸出值并按位存儲。將所有的REG_X寄存器按位進行或運算,結果送寄存器PRI_REG。如圖4所示,優先級寄存器PRI_REG的位數對應系統中任務的個數,寄存器PRI_REG某位為1就表示相應優先級的任務處于就緒態,且低位的優先級依次高于高位的優先級。譯碼器從寄存器讀取PRI_REG的值進行譯碼,送出處于就緒態且優先級最高的任務。比較器PRI_COMP以任務的ID號為索引,任務的優先級PRI為比較內容。將每個任務的優先級與譯碼找到的就緒態的最高優先級相比較,若相同,則輸出任務的ID號,否則輸出0。最后將所有比較器PRI_COMP的輸出做或運算,即得到處于就緒態的優先級最高任務的ID號。

    假設在某一時刻,系統中優先級PRI為1、2、3、6和7的任務處于就緒態,對應任務的ID號分別是010、100、001、110和111,則調度器中的數據處理流程如圖5所示。

2.3 仿真及實驗結果
      整個設計采用VHDL硬件語言描述。為了驗證該硬件實現的正確性和高效性,使用 ISE 8.2軟件進行時序仿真驗證。任務管理硬件實現的功能仿真如圖6所示。

      (1)建立任務。依次建立3個任務,優先級與ID號相同分別為7、1和6。若系統中只有優先級為7的任務處于就緒態,則Next_task_id為7;當建立了優先級為1的任務時,高優先級任務剝奪低優先級任務的CPU使用權,Next_task_id為1,直到有更高優先級的任務到來,或任務自身刪除,優先級為1的任務將一直執行。
      (2)查詢任務。處理器通過查詢任務這個系統調用獲得任務自身或其他應用任務的信息,查詢即將TCB的內容輸出。
      (3)掛起任務。掛起優先級為1的任務,則優先級為6的任務開始執行。掛起的任務處于等待狀態,只有通過調用任務恢復函數才能恢復。
      (4)建立任務。建立優先級分別為5、2和4的3個任務。優先級為5的任務剝奪優先級為6的任務的CPU使用權,優先級為2的任務又剝奪優先級為5的任務的CPU使用權開始執行,優先級為4的任務等待。
    (5)刪除任務。刪除了優先級為2的任務,此刻系統中優先級為4的任務開始執行。
    (6)恢復任務。恢復優先級為1的任務,優先級為1的任務剝奪優先級為4的任務的CPU使用權又重新開始執行。
    從圖6可以看出,硬件實現可以高效完成操作系統任務管理的系統調用的功能。建立任務和刪除任務需要3個時鐘節拍,掛起任務、恢復任務和查詢任務的狀態需要1個時鐘節拍。任務調度是實時的,只要任務的狀態或優先級有一個發生改變,就立刻重新調度。該設計所消耗的邏輯資源較少,降低了開發成本,使其集成組件成為可能。
    本文針對傳統實時操作系統內核占用系統資源、影響系統實時性的問題,提出了用單獨的硬件電路實現實時操作系統中的系統調用和任務調度器的方案。重點給出了采用FPGA實現μC/OS-Ⅱ任務管理模塊的過程。仿真結果表明,任務管理的硬件實現保持了系統調用的正確性,同時減少了系統調用的執行時間、降低了處理器系統開銷。因此,硬件RTOS的實現,具有一定研究和使用價值。
參考文獻
[1] LABROSSE J J.嵌入式實時操作系統μC/OS-Ⅱ[M].邵貝貝譯.北京:北京航空航天大學出版社,2001:178-185.
[2] MOON S,REXFORD J,SHIN K.Scalable hardware priority  queue architectures for high-speed packet switch[J].IEEE Transactions on Computer,2000,49(11).
[3] MORI S.The present and future of the TRON-specification CHIP-promoting open archeitecture and standardization[J]. Journal of formation Processing Society of Japan,1994,35(10).
[4] NAKANO T,ANDY U,ITABASHI M,et al.Hardware  implementation of a real-time operating system[J].Proceedings of the Twelfth TRON Project International Symposium,IEEE Computer Society Press,1995(11):34-42.
[5] 周博,王石記,邱衛東,等.SHUM2UCOS:基于統一多任務模型可重構系統的實時操作系統[J].計算機學報,2006(2):208-218.
[6] 崔建華,孫紅勝,王保進.硬件實時操作系統的設計與實現[J].計算機技術應用,2008(5):34-37.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 韩日精品视频 | 欧美在线专区 | 天天插日日操 | 波多野结衣被强在线视频 | 国产精品免费久久 | 九九热视频在线免费观看 | 欧美操操| 国产视频一区二区 | 九九综合 | 日本不卡视频在线播放 | xxxxxx日本处大片免费看 | 色综合综合 | 精选国产门事件福利在线观看 | 国产精品麻豆a啊在线观看 国产精品麻豆高清在线观看 | 久久99网| 狠狠色狠狠色综合久久第一次 | 1024国产精品视频观看 | 不卡午夜视频 | 亚洲激情小视频 | 欧美大成色www永久网站婷 | 国产三级日本三级美三级 | 色五丁香 | 天天摸天天爽天天碰天天弄 | 日韩免费一级毛片 | 免费看美女毛片 | 日韩视频一区二区 | 夜间福利在线观看 | 91精品国产免费久久国语蜜臀 | 日日艹| 国产国产成人人免费影院 | a亚洲欧美中文日韩在线v日本 | 久久精品国产第一区二区 | 国产日韩亚洲欧洲一区二区三区 | 欧美视频在线不卡 | 乡村乱肉第19部全文小说 | 免费视频成人国产精品网站 | 成 人 a v免费视频 | 无遮羞肉体动漫影院免费版 | 狂野欧美性猛交xxxx免费按摩 | 亚洲一级黄色 | 日韩伦理一区二区三区 |