999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

μ C/OS-Ⅱ操作系統在NiosⅡ上的移植研究

2010-04-21 05:18:12吳愛平長江大學電子信息學院湖北荊州434023
長江大學學報(自科版) 2010年4期
關鍵詞:嵌入式系統

吳愛平 (長江大學電子信息學院,湖北荊州434023)

李勇華 (中石化勝利石油管理局鉆井研究院,山東東營257000)

嵌入式系統是將先進的計算機技術、半導體技術和電子技術與各個行業的具體應用相結合后的產物,目前嵌入式系統已經滲透到日常生活的各個領域,其在工業、服務業、消費電子等領域的應用范圍都在不斷擴大[1]。嵌入式系統由硬件和軟件兩大部分組成。通常軟件部分主要基于實時操作系統 (簡稱RTOS),在特定的RTOS之上開發應用軟件;硬件部分主要是以某一個硬核微處理器芯片為核心,如DSP,ARM,單片機等[2~4],這些硬核均來自于第3方公司,且無法裁剪處理器硬件資源,造成設計資源的浪費和設計的不便。筆者以Altera公司推出的NiosⅡ軟核處理器為例[5],闡述了基于NiosⅡ處理器的移植方法。該方法彌補了硬處理器的不足,大大促進了軟硬件協同設計。基于NiosⅡ處理器的實時操作系統具有可裁剪、可擴充、可升級的靈活設計方式及在系統可編程的靈活功能。

1 實時嵌入式操作系統μ C/OS-Ⅱ

μ C/OS-Ⅱ是一款源代碼開放的實時操作系統內核,是專為嵌入式應用而設計的。其代碼大部分是用移植性很強的ANSI_C編寫;可通過條件編譯對提供的系統服務進行裁減;完全搶占式的內核,總是運行處于就緒態的最高優先級的任務;每個任務被賦予唯一的優先級并使用自己獨立的堆棧;還可提供多種系統服務,如郵箱、消息隊列、信號量、內存管理和時間管理等相關函數[6]。

2 NiosⅡ的構建

NiosⅡ系列嵌入式處理器是一款采用流水線技術、單指令流的RISC CPU,廣泛應用于嵌入式系統。NiosⅡ嵌入式CPU支持32位指令集、32位數據線寬度、32個通用寄存器、32個外部中斷源、2GB尋址空間,包含高達256個用戶自定義的CPU定制指令[7]。NiosⅡ的所有數據、程序都是通過Avalon總線傳輸的。通過使用Altera的QuartusⅡ軟件以及SOPC Builder工具可以輕松地構建NiosⅡ內核。該設計中需添加NiosⅡCPU核、Avalon三態總線橋、系統ID、片內存儲器、片外存儲器接口、PIO、定時器、液晶顯示接口等,同時定制和配置它們的功能、分配外設地址及中斷號、設定復位地址、最后生成NiosⅡ系統。定制好的NiosⅡ處理器軟核如圖1所示。

3 μ C/OS-Ⅱ在NiosⅡ上的移植

所謂移植就是使一個實時內核能在其他微處理器或微控制器上運行,即編寫與處理器相關代碼。圖2所示為μ C/OS-Ⅱ的結構以及與硬件的關系。從圖2中可以看出完成移植工作主要是將OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C進行修改。

圖1 SOPC Builder中NiosⅡ系統組件

3.1 HAL系統庫

對基于NiosⅡ的軟核 CPU而言,其設計開發使用NiosⅡIDE軟件工具,該軟件開發工具為NiosⅡ核提供HAL系統庫[8]。HAL系統庫是一個簡化的運行環境,為底層硬件通信程序提供簡單器件驅動接口,HAL應用程序接口(API)和ANSI C標準庫集成在一起,用戶可以通過HAL API通用設備模型訪問硬件資源,如圖3所示。ANSI C標準庫與HAL的緊密結合使得軟件開發成為可能[9]。例如可使用ANSI C標準庫的I/O函數來操作字符模式設備和文件,如printf()、scanf()等。

圖2 μ C/OS-Ⅱ硬件/軟件體系結構

3.2 與處理器相關文件的編寫

1)OS_CPU.H的編寫 在OS_CPU.H文件中定義了與處理器(實際上是與編譯器相關)的數據類型、堆棧增長方向以及系統軟中斷。定義了與處理器相關的宏,主要是進入臨界區的OS_ENTER_CRITICAL()和退出臨界區的OS_EXIT_CRITICAL()。

2)OS_CPU_C.C的編寫 在OS_CPU_C.C文件中,需要編寫6個與操作系統有關的函數。這6個函數是:OSTaskStkInit()、OSTaskCreatHook()、OSTaskDelHook()、OSTaskSwHook()、OSTaskStatHook()和OSTaskTickHook()。在6個函數中只需對OSTaskStkInit()編寫代碼,后5個Hook函數必須聲明,它們是由系統函數調用的鉤掛函數,讓用戶能在操作系統中加入自己需要的一些功能,也可以為空函數,其內部可以沒有代碼。

OSTaskCreate()和OSTaskCreateExt()通過調用OSTaskStkInit()來初始化任務的堆棧結構,它需要的參數是任務代碼起始地址、參數指針、任務堆棧頂端的地址。初始化任務的棧結構工作結束后,堆棧看起來就像中斷剛發生過一樣,所有寄存器都保存在堆棧中,從而可以利用中斷返回指令使就緒的任務運轉起來。NiosⅡ處理器的堆棧方向是地址由高到低遞減方式。

圖3 HAL系統庫結構

3)OS_CPU_A.ASM的編寫 該文件包括4個函數都涉及對寄存器的處理,跟處理器有關,由于不同處理器有不同寄存器,所以操作系統在這個文件里給用戶留下4個函數接口,以便用戶根據所選處理器編寫相應的匯編程序以完成固定功能。μ C/OS-Ⅱ的移植要求用戶編寫4個匯編語言函數:OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()、OSTickISR()。OSStartHighRdy()函數由OSStart()調用,用來啟動優先級最高的任務執行,負責從最高優先級任務的TCB控制塊中獲得該任務的堆棧指針sp,通過sp依次將CPU現場恢復;OSCtxSw()函數是一個任務級的任務切換函數,是在任務需要進行切換時被OS_TASK_SW()調用;OSIntCtxSw()函數是中斷級的任務切換函數,被OSIntExit()調用,是在ISR中執行中斷任務切換;OSTick ISR()函數是時鐘節拍中斷處理函數,在調用OSStart()后才可啟動。它的主要任務是負責處理時鐘中斷,為內核提供時鐘節拍。

4 移植測試

μ C/OS-Ⅱ移植完成后,需要進行測試,以驗證移植的μ C/OS-Ⅱ是否能正常工作。測試中建立了10個任務:INITIALIZE_TASK為初始化任務;PRINT_STAT US_TASK為打印狀態任務;light_led為點亮流水燈任務;light_LCD為液晶顯示任務;SEG_Display為數碼管顯示任務;GETSEM_TASK1和GETSEM_TASK2任務是競爭由信號量保護的共享資源;RECEIVE_TASK1和RECEIVE_TASK2任務是周期性地從隊列中取出數據;SEND_TASK任務是將增加的數據添加到消息隊列中。硬件系統在Quartus II中配置編譯完畢后,下載到DEⅡ板的FPGA芯片上,然后將在μ C/OS-Ⅱ內核上添加了任務的軟件系統進行編譯,下載到FPGA芯片內的NiosⅡ硬件系統中,系統開始運行。在NiosⅡIDE的控制臺上可以看到PRINT_STATUS_TASK任務的執行情況如圖4(a)和圖4(b)所示;從DEⅡ板上可以看到light_led、light_LCD、SEG_Display這3個任務的執行情況,測試效果如圖5所示。

圖4 NiosⅡ IDE的控制臺監控圖

PRINT_STAT US_TASK任務的作用是在NiosⅡIDE的控制臺上周期性地顯示 “長江大學電子信息學院”、send_task發送的消息數、received_task1和received_task2接收到的消息數、得到信號量的任務名、getsem_task1和getsem_task1獲得信號量的次數。圖4(a)所示內容與圖4(b)所示內容間隔3s鐘交替出現,唯獨變化的是其中的數據,從圖4(a)和圖 4(b)中看到SEND_TASK發送的消息數是1170,3s后SEND_TASK發送的消息數是1182,從中可以知道SEND_TASK任務每3s發送12條消息。同樣可知RECEIVE_TASK1每3s接收9條消息,RECEIVE_TASK2每3s接收3條消息。

light_LCD任務使得在液晶上第1排顯示Beijing Olimpics,第2排滾動顯示Sichuan stand,Jiayou China!;SEG_Display任務使8個數碼管分別顯示12345678,1s后又顯示 87654321,1s后又同時顯示12345678,如此每一秒變化一次,無限循環下去;light_led任務讓LED從左到右依次流水顯示,每一秒變化一次,到頭后再從右端開始點亮,無限循環下去。

圖5 任務light_led、light_LCD、SEG_Display執行情況靜態截圖

通過對NiosⅡIDE的控制臺監測和DE II板的實際硬件測試可以看出每個任務都只是在執行自己的操作,任務之間除了通過信號量、消息隊列通信外,互相之間沒有任何干擾,實時性非常好。

5 結 語

μ C/OS-Ⅱ作為優秀的實時操作系統已經被移植到許多體系結構的硬核微處理器上,筆者成功地將μ C/OS-Ⅱ嵌入式操作系統移植到了NiosⅡ軟核微處理器上,實現了整個平臺穩定可靠的運行。μ C/OS-Ⅱ和NiosⅡ相結合,可以構成一種基于可配置的軟核處理器的嵌入式開發平臺,該平臺軟、硬件均可按照用戶需求進行剪裁配置,最大程度地提供了系統設計的靈活性,因此具有實際應用價值。

[1]安輝,孫昌志.顎藽/OS-Ⅱ操作系統在DSP上的移植及應用 [J].自動化技術與應用,2008,27(1):65~69.

[2]徐杰,宋建成.μ C/OS-Ⅱ操作系統在ARM7上移植的實現 [J].工礦自動化,2009,(6):49~52.

[3]周文.μ C/OS-Ⅱ在 AT89S51單片機上的移植 [J].計算機與現代化,2008,(4):17~22.

[4]孟慶峰.實時內核μ C/OS在S3C44B0XII上移植的研究與實現 [J],安徽電子信息職業技術學院學報,2008,(1):57~60.

[5]Altera.NiosⅡProcessor Reference Handbook[EB/OL].http://www.altera.com/literature/lit-nio2.jsp,2009.

[6]Labrosse J J.嵌入式實時操作系統uC/OS-Ⅱ[M].第2版.邵貝貝 譯.北京:北京航天航空大學出版社,2003.

[7]巨政權,原亮.SOPC系統建立及μ Clinux移植實現 [J].微計算機信息,2009,25(4):43~45.

[8]李蘭英.NiosⅡ嵌入式軟核SOPC設計原理及應用[M].北京:北京航空航天大學出版社,2006.

[9]任愛鋒.基于FPGA的嵌入式系統設計[M].西安:電子科技大學出版社,2004.

猜你喜歡
嵌入式系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
主站蜘蛛池模板: 免费 国产 无码久久久| 久久黄色一级视频| 国产成人综合网| 亚洲第一黄色网址| 国产精品思思热在线| 欧美国产日韩一区二区三区精品影视| 欧美a在线视频| 国产真实乱人视频| 欧美三级日韩三级| 在线观看亚洲精品福利片| 国产三区二区| 国产成人艳妇AA视频在线| 国产无码精品在线| 亚洲日韩AV无码一区二区三区人| 日韩高清欧美| 国产成人91精品| 色综合日本| 国产特一级毛片| 2019国产在线| 亚洲丝袜中文字幕| 乱人伦99久久| 国产精品视频观看裸模| 青青青视频91在线 | 午夜毛片免费观看视频 | 91精品日韩人妻无码久久| 亚洲天堂精品在线| 婷婷综合缴情亚洲五月伊| 91在线丝袜| 国产一区三区二区中文在线| 国产福利不卡视频| 欧美激情第一欧美在线| 伊人天堂网| 国产va视频| 国产乱肥老妇精品视频| 国产欧美中文字幕| 激情视频综合网| 98精品全国免费观看视频| 日本免费福利视频| 国产亚洲精品无码专| 国产精品自拍露脸视频| 亚洲AV无码久久天堂| 国产欧美视频一区二区三区| 高清久久精品亚洲日韩Av| 六月婷婷综合| 最新午夜男女福利片视频| 欧美人在线一区二区三区| 91亚瑟视频| 国产一级片网址| 色哟哟色院91精品网站| 青青国产视频| 伊人色在线视频| 欧美区一区二区三| 亚洲丝袜中文字幕| 国产高清在线观看91精品| 亚洲精品国产日韩无码AV永久免费网 | 成年人免费国产视频| 91久久偷偷做嫩草影院免费看| 欧美色亚洲| 黄色网站在线观看无码| 亚洲色图欧美在线| 亚洲精品777| 亚洲欧洲一区二区三区| 尤物在线观看乱码| 国产亚卅精品无码| 色成人综合| 在线综合亚洲欧美网站| 国产91丝袜在线观看| 高清色本在线www| 综合色婷婷| 一级不卡毛片| 日韩精品一区二区三区swag| 亚洲第一国产综合| 国产办公室秘书无码精品| 三级毛片在线播放| 在线亚洲精品福利网址导航| 国产欧美日韩综合一区在线播放| 2021国产精品自产拍在线| 天天爽免费视频| 欧洲免费精品视频在线| 婷婷丁香色| 又爽又大又黄a级毛片在线视频| 国产av色站网站|