孔慶臣,張廣蘭,劉忠艷
(黑龍江科技學院,哈爾濱150027)
本人在教學及科研實驗中,對基于μC/OS-II 的多任務系統在SOPC 中的設計總結出了具體實現方法。經過實踐驗證,該方法簡單、可靠,值得推廣。
μC/OS-II 是一個可移植、可裁剪、占先式、實時的多任務內核,主要有任務管理、時間管理、信號量管理、消息郵箱管理、列隊管理、內存管理等。由于絕大部分代碼都是用C 語言編寫的,只有極少部分與處理器密切相關的代碼是用匯編語言編寫的,用戶只要做很少的工作就可以把它移植到各類8 位、16 位、32 位處理器上。另外,μC/OS-II 的構思巧妙,結構簡單、精煉,可讀性強,有足夠的穩定性和安全性,具備了實時操作系統的全部功能,在嵌入式系統領域有著廣泛的應用。
基于μC/OS-II 的多任務系統在SOPC 系統中的硬件實現與普通SOPC 硬件設計相同,使用Quartus II 創建設計工程,工程創建完成之后,創建頂層實體。創建完頂層設計文件后,使用SOPC Builder 創建Nios II 嵌入式處理器,添加、配置系統的外設IP,組成Nios II 系統模塊。Nios II 系統模塊設計完成之后要加入到該頂層實體中,然后進行其他片上邏輯的開發。系統整體開發流程如圖1所示。

圖1 基于μC/OS-II 的多任務系統在SOPC 設計的流程
利用Nios II IDE 開發環境,使用C/C++語言編程設計。根據多任務系統的實際情況確定任務棧大小,并定義個任務棧;依照任務輕重緩急設定優先級,創建和編寫各具體任務,最后調用OSStat()啟動MicroC/OS-II。具體開發流程如圖2所示。

圖2 在Nios II IDE編寫多任務系統的軟件流程
本文涉及內容已在Nios development Board Cyclone II(EP2C35)中實現。通過在Quartus II 中使用SOPC Builder 建立一個Nios II 最小系統,然后在Nios II IDE 編寫基于μC/OS-II 實時操作系統的應用程序,同時運行3個任務,分別是LED 跑馬燈、步進電機運行控制、LCD16207 顯示字符。具體電路如圖3所示。
該方案已經在具體項目中實現。如果組成多任務的單任務能夠可靠運行,只要把Nios II IDE 環境下的System Library 設置成MicroC/OS-II,在源程序里加入μC/OS-II 多任務的相關函數及必要的參數,把各個單任務程序整合到程序中,就可以在極短時間完成多任務的設計。若想開發成多任務專用集成電路(ASIC),可以保持上述開發過程不變,使用Stratix FPGA 系列芯片,在需要時,通過Altera 的HardCopy 設計中心將由FPGA 構成的系統無縫移植為低成本、功能等價、引腳兼容的HardCopy II結構化的ASIC,是一個值得推廣的成熟、高效的設計方案。

圖3 硬件實現電路
[1]侯建軍,郭勇.SOPC 技術基礎教程[M].北京:清華大學出版社,2008:175-180.
[2]李蘭英.Nios II 嵌入式軟核SOPC 設計原理及應用[M].北京:北京航空航天大學出版社.2006:371-384.
[3]楊宗德,張兵.μC/OS-II 標準教程[M].北京:人民郵電出版社,2009:32-37.
[4]華強電子.μC/OS-II 在應用系統中任務劃分方法的研究[OL].[2009-12-10].http://www.hqew.com/File/NewsHTML/20097/200971142418294564.htm.
[5]博創科技.UP-CUP FPGA2C35 平臺[OL].[2009-12-5].http://www.up-tech.com/product/detail.asp?id=115.
[6]Altera.結構化ASIC 設計流程[OL].[2009-11-20].http://www.altera.com.cn/products/software/flows/asic/qts-structured_asic.html.