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

基于SPARC的嵌入式實(shí)時(shí)操作系統(tǒng)移植

2016-08-10 10:40:14許璐璐鄭吉洲彭夏鵬
航天控制 2016年5期

許璐璐 鄭吉洲 彭夏鵬 李 悅

北京航天自動(dòng)控制研究所,北京100854

?

基于SPARC的嵌入式實(shí)時(shí)操作系統(tǒng)移植

許璐璐 鄭吉洲 彭夏鵬 李 悅

北京航天自動(dòng)控制研究所,北京100854

基于嵌入式實(shí)時(shí)操作系統(tǒng)進(jìn)行應(yīng)用開(kāi)發(fā)時(shí),首先需要將其移植到對(duì)應(yīng)的硬件平臺(tái)上。SPARC架構(gòu)處理器是航天工程中常用的一款處理器,本文首先簡(jiǎn)要介紹了SPARC體系結(jié)構(gòu)、寄存器窗口等相關(guān)概念,然后對(duì)嵌入式實(shí)時(shí)操作系統(tǒng)的SPARC移植進(jìn)行了分析和實(shí)現(xiàn)。最后進(jìn)行了測(cè)試驗(yàn)證,結(jié)果表明移植后的操作系統(tǒng)運(yùn)行穩(wěn)定正常,性能滿(mǎn)足應(yīng)用需求。 關(guān)鍵詞 SPARC;寄存器窗口;嵌入式實(shí)時(shí)操作系統(tǒng);移植

由于嵌入式硬件體系的多樣性,在基于嵌入式實(shí)時(shí)操作系統(tǒng)進(jìn)行應(yīng)用開(kāi)發(fā)時(shí),首先需要將其移植到對(duì)應(yīng)的硬件平臺(tái)上。

SPARC處理器是航天工程中常用的一款處理器,寄存器窗口是其一個(gè)重要概念,在進(jìn)行基于SPARC的嵌入式實(shí)時(shí)操作系統(tǒng)移植時(shí)需要對(duì)其進(jìn)行相關(guān)處理。本文對(duì)嵌入式實(shí)時(shí)操作系統(tǒng)的SPARC移植進(jìn)行了研究和實(shí)現(xiàn)。

1 SPARC體系結(jié)構(gòu)

1.1 寄存器窗口

SPARC體系結(jié)構(gòu)繼承伯克利RISC結(jié)構(gòu),寄存器窗口是其一個(gè)重要概念。1個(gè)寄存器窗口包含32個(gè)寄存器,通常記為%g0,…,%g7;%l0,…,%l7;%i0,…,%i7;%o0,…,%o7。其中%g0,…,%g7為全局寄存器,其余24個(gè)為當(dāng)前窗口寄存器,只對(duì)當(dāng)前程序可見(jiàn)[1]。當(dāng)調(diào)用子程序時(shí),會(huì)分配一個(gè)全新的窗口。寄存器窗口簡(jiǎn)化了函數(shù)調(diào)用過(guò)程。

圖1 寄存器窗口

SPARC架構(gòu)規(guī)定一個(gè)基于SPARC的處理器可以包含N=2**n(1≤n≤5)個(gè)窗口。在一個(gè)寄存器窗口組中,相鄰寄存器窗口存在寄存器公用。CWP(Current Window Pointer)指向當(dāng)前窗口,SAVE指令將分配一個(gè)全新的窗口CWP-1,其中8個(gè)ins寄存器繼承窗口CWP的outs寄存器的值。RESTORE指令則將CWP加1,使之前的窗口為當(dāng)前窗口。

特別的,%o6為%sp即棧頂指針,%i6為%fp即棧幀指針(相當(dāng)于棧底),%fp與%sp之間的堆棧即為當(dāng)前堆棧幀。編譯器通常用save %sp,-96,%sp之類(lèi)的語(yǔ)句為新的程序分配一個(gè)新的堆棧幀。

圖2 N=8的寄存器窗口結(jié)構(gòu)

1.2 控制/狀態(tài)寄存器

處理器狀態(tài)寄存器(%PSR):Bit0~Bit4為當(dāng)前窗口指針(CWP)。Bit5為T(mén)rap使能位(ET),Bit8~Bit11為處理器中斷級(jí)別(PIL)。

無(wú)效窗口標(biāo)識(shí)寄存器(%WIM):因?yàn)榇翱跀?shù)N固定,為防止窗口溢出,設(shè)置了WIM寄存器。N=8時(shí),Bit0~Bit7分別對(duì)應(yīng)窗口0~7,當(dāng)某位為1時(shí)表示對(duì)應(yīng)窗口為無(wú)效窗口。WIM只能有1位為1。

其他的還有陷阱基址寄存器(%TBR),乘除法寄存器(%Y),浮點(diǎn)狀態(tài)寄存器(%FSR),浮點(diǎn)寄存器(%f 0~%f 31)。

1.3 窗口上溢、下溢

上溢(overflow):當(dāng)前為SAVE指令,并且CWP-1對(duì)應(yīng)窗口無(wú)效時(shí),發(fā)生overflow trap。在程序調(diào)用時(shí),每調(diào)用1個(gè)新子程序就對(duì)應(yīng)1個(gè)SAVE語(yǔ)句,當(dāng)子程序調(diào)用層數(shù)大于窗口數(shù)時(shí),發(fā)生窗口溢出,需要進(jìn)行overflow trap處理,通常是將無(wú)效窗口的下一個(gè)窗口寄存器值保存到對(duì)應(yīng)堆棧中,然后將%WIM下移。

下溢(underflow):調(diào)用RESTORE指令,并且CWP+1對(duì)應(yīng)窗口為無(wú)效窗口時(shí),發(fā)生underflow trap。通常RESTORE的窗口內(nèi)容是之前overflow trap處理時(shí)保存到堆棧中的,當(dāng)恢復(fù)到原來(lái)窗口時(shí)需要從堆棧中讀出原寄存器值。

2 SPARC移植實(shí)現(xiàn)

移植工作主要是重建嵌入式實(shí)時(shí)操作系統(tǒng)的硬件抽象層(HAL)[2],包括:數(shù)據(jù)類(lèi)型重定義、任務(wù)堆棧結(jié)構(gòu)設(shè)計(jì)、實(shí)現(xiàn)任務(wù)切換及中斷處理等。數(shù)據(jù)類(lèi)型重定義是針對(duì)不同微處理器的字長(zhǎng)不同,移植時(shí)需要與處理器匹配。針對(duì)32位SPARC,將堆棧數(shù)據(jù)類(lèi)型定義為32位整型。

2.1 臨界區(qū)互斥

臨界區(qū)互斥是通過(guò)開(kāi)關(guān)中斷來(lái)實(shí)現(xiàn)的,進(jìn)入臨界區(qū)前先關(guān)閉中斷,退出臨界區(qū)后重新打開(kāi)中斷。關(guān)中斷時(shí),先將當(dāng)前PIL保存,再將PIL置為0x0F(只有中斷號(hào)大于當(dāng)前PIL值時(shí)才會(huì)響應(yīng)中斷,因此通過(guò)將PIL置為15可實(shí)現(xiàn)關(guān)中斷),開(kāi)中斷時(shí)即恢復(fù)原來(lái)的PIL值。

2.2 任務(wù)堆棧幀設(shè)計(jì)

發(fā)生任務(wù)切換時(shí),需要保存當(dāng)前任務(wù)環(huán)境(處理器當(dāng)前各寄存器值),因此需要根據(jù)SPARC結(jié)構(gòu)設(shè)計(jì)任務(wù)堆棧幀。當(dāng)任務(wù)切出時(shí),按照此幀結(jié)構(gòu)保存當(dāng)前處理器各寄存器值;任務(wù)切入時(shí),再將此幀中保存的值恢復(fù)到各對(duì)應(yīng)寄存器中。任務(wù)棧幀如圖3所示。

圖3 任務(wù)棧幀結(jié)構(gòu)

2.3 任務(wù)切換實(shí)現(xiàn)

對(duì)于一個(gè)支持多任務(wù)的實(shí)時(shí)內(nèi)核,實(shí)現(xiàn)任務(wù)切換功能是移植時(shí)需要完成的最基本任務(wù)。

任務(wù)切換分為任務(wù)級(jí)切換和中斷級(jí)切換,當(dāng)前任務(wù)主動(dòng)讓出CPU時(shí)發(fā)生任務(wù)級(jí)切換,當(dāng)退出最后一層中斷時(shí),如果有更高優(yōu)先級(jí)任務(wù)就緒則會(huì)發(fā)生中斷級(jí)切換。

對(duì)于SPARC處理器,PC和nPC無(wú)法直接讀取,但發(fā)生trap時(shí),PC和nPC會(huì)自動(dòng)存入%l1和%l2寄存器,trap返回時(shí)CPU再自動(dòng)將%l1和%l2的值寫(xiě)入PC和nPC,所以通過(guò)軟中斷0進(jìn)行任務(wù)級(jí)切換。對(duì)于每個(gè)任務(wù),邏輯上都有一組寄存器窗口,即當(dāng)前used態(tài)的窗口內(nèi)容都應(yīng)保存。所以保存任務(wù)上下文時(shí),先保存%PSR等狀態(tài)寄存器、globals寄存器及任務(wù)current窗口的outs寄存器,再做windows flush處理,保存used態(tài)的各寄存器窗口的locals和ins寄存器。

圖4 任務(wù)切換流程

根據(jù)當(dāng)前CWP和%WIM的值可將寄存器窗口劃分到4個(gè)狀態(tài)中[3]:Current,Invalid,Used,Unused。假設(shè)CWP為4,%WIM為0x01,那么寄存器窗口組可以如下劃分:W0:Invalid;W1-W3:Unused;W4:Current;W5-W7:Used。

據(jù)此,windows flush處理過(guò)程如下:從Current窗口開(kāi)始,保存locals和ins寄存器到對(duì)應(yīng)的堆棧幀中,再RESTORE退到上一個(gè)窗口,保存locals和ins寄存器的值,直到退到%WIM所指的無(wú)效窗口。再將%WIM的值設(shè)置為Current的上一個(gè)窗口,這樣當(dāng)恢復(fù)該任務(wù)時(shí),RESTORE指令將發(fā)生underflow trap,把堆棧中保存的locals和ins寄存器恢復(fù)。

恢復(fù)新任務(wù)上下文時(shí),將新任務(wù)PC和nPC存入%l1和%l2,調(diào)用jmp %l1;rett %l2退出trap,CPU將跳轉(zhuǎn)到新任務(wù)執(zhí)行,實(shí)現(xiàn)任務(wù)切換。由于發(fā)生中斷時(shí),中斷處理過(guò)程會(huì)對(duì)被中斷的任務(wù)進(jìn)行現(xiàn)場(chǎng)保護(hù),所以中斷級(jí)切換直接從任務(wù)級(jí)切換的windows flush處開(kāi)始執(zhí)行。

2.4 中斷處理

時(shí)鐘心跳是操作系統(tǒng)必不可少的,需要根據(jù)硬件平臺(tái)設(shè)置相應(yīng)的定時(shí)器,產(chǎn)生周期性的時(shí)鐘中斷來(lái)實(shí)現(xiàn)時(shí)鐘心跳。

提供中斷注冊(cè)函數(shù)供用戶(hù)注冊(cè)外部中斷的中斷服務(wù)程序,是否允許中斷嵌套交由用戶(hù)決定。同時(shí),使用獨(dú)立的中斷堆棧,提高系統(tǒng)可靠性。

中斷處理流程與一般的處理器中斷處理類(lèi)似,不再贅述(見(jiàn)圖5)。需要注意的是,進(jìn)入中斷時(shí),SPARC不會(huì)自動(dòng)檢測(cè)是否發(fā)生窗口上溢,因此,中斷處理過(guò)程需要檢測(cè)是否進(jìn)行窗口上溢處理,同樣退出中斷時(shí)也需檢測(cè)是否進(jìn)行窗口下溢處理。

圖5 中斷處理流程

3 移植測(cè)試

硬件平臺(tái)使用的是S698-T芯片,S698-T是珠海歐比特控制工程股份有限公司面向嵌入式控制領(lǐng)域研制的一款高性能、高可靠的SoC芯片,以高性能的SPARC V8(IEEE-1754)架構(gòu)標(biāo)準(zhǔn)的32位RISC整型單元IU為主控內(nèi)核,配以IEEE-754標(biāo)準(zhǔn)的64位雙精度浮點(diǎn)處理單元FPU,內(nèi)部集成DSU支持在線(xiàn)硬件調(diào)試[4]。測(cè)試時(shí),主機(jī)上運(yùn)行集成開(kāi)發(fā)調(diào)試工具,通過(guò)DSU與目標(biāo)機(jī)相連,進(jìn)行在線(xiàn)調(diào)試。

圖6 測(cè)試環(huán)境

設(shè)計(jì)了詳細(xì)的測(cè)試用例,對(duì)任務(wù)切換、任務(wù)運(yùn)行環(huán)境的保存恢復(fù)、中斷處理等進(jìn)行了測(cè)試驗(yàn)證,測(cè)試結(jié)果與預(yù)期相符,系統(tǒng)運(yùn)行穩(wěn)定正常。在主頻100MHz下,任務(wù)切換時(shí)間為11us,中斷響應(yīng)時(shí)間為5us,可以滿(mǎn)足對(duì)實(shí)時(shí)性有要求的應(yīng)用。

4 結(jié)束語(yǔ)

介紹了航天工程中常用的SPARC處理器的體系結(jié)構(gòu),對(duì)嵌入式實(shí)時(shí)操作系統(tǒng)的SPARC移植進(jìn)行了研究和實(shí)現(xiàn),并在S698-T開(kāi)發(fā)板上進(jìn)行了測(cè)試驗(yàn)證。測(cè)試結(jié)果表明,系統(tǒng)運(yùn)行穩(wěn)定正常,可靠性和實(shí)時(shí)性滿(mǎn)足航天工程的應(yīng)用要求。

[1] The SPARC Architecture Manual:Version 8[M]. CA: SPARC International,Inc, 1998.

[2] 魏淳,魏雷. Uc/OS-II在TMS320C6713上的移植[J]. 太原師范學(xué)院學(xué)報(bào)(自然科學(xué)版), 2012, 11(2): 91-94.(Wei Chun, Wei Lei. The Transplant of Uc/OS-II on TMS320C6713[J]. Journal of Taiyuan Normal University(Natural Science Edition), 2012, 11(2): 91-94.)

[3] 馮磊. SPARC結(jié)構(gòu)與實(shí)時(shí)內(nèi)核移植[D]. 北京: 中國(guó)科學(xué)院研究生院, 2006.(Feng Lei. The SPARC Architecture and Real-Time Kernel Porting[D]. Beijing: University of Chinese Academy of Sciences, 2006.)

[4] S698-T芯片用戶(hù)手冊(cè)[Z]. 廣東: 歐比特控制工程股份有限公司, 2010.(The S698-T User Mannual[Z]. Guangdong: Orbita Embedded, Inc, 2010.)

The Transplant of Embedded Real-time Operating System for SPARC Architecture

Xu Lulu, Zhen Jizhou, Peng Xiapeng, Li Yue

Beijing Aerospace Automatic Control Institute, Beijing 100854, China

Duringtheapplicationdevelopmentofembeddedreal-timeoperationsystem,theoperatingsystemportingtocorrespondinghardwareplatformisfirstlyapplied.TheSPARCarchitectureprocessoriscommonlyusedinaerospaceengineering.TheSPARCarchitectureconcepts,registerwindowandetcarebrielflyintroduced.Andthen,theembeddedreal-timeoperatingsystemportingtoSPARChardwareplatformisanalyzedandrealized.Finally,thetestsareimplementedtoverifytheperformance,andtheresultshowsthattheoperatingsystemisrunningsteadlyanditsperformancemeetstherequirementofapplications.

SPARC;Registerwindow;Embeddedreal-timeoperatingsystem;Porting

2016-01-18

許璐璐(1988-),男,江蘇人,碩士研究生,主要研究方向?yàn)榍度胧杰浖秽嵓?1970-),男,湖北人,研究員,主要研究方向?yàn)橛?jì)算機(jī)應(yīng)用技術(shù);彭夏鵬(1988-),男,湖南人,工程師,主要研究方向?yàn)榍度胧杰浖焕?悅(1984-),男,河北人,工程師,主要研究方向?yàn)榍度胧杰浖?/p>

TP319

A

1006-3242(2016)05-0077-04

主站蜘蛛池模板: 色有码无码视频| 91九色最新地址| 日韩在线第三页| 欧美一级特黄aaaaaa在线看片| 日本午夜网站| 天堂av综合网| 91福利国产成人精品导航| 国产一区自拍视频| 亚洲欧美在线综合图区| 四虎在线观看视频高清无码| 国内丰满少妇猛烈精品播| 97综合久久| 中字无码精油按摩中出视频| 真实国产乱子伦视频 | 久久亚洲天堂| 999国内精品久久免费视频| 国产小视频在线高清播放 | 九色国产在线| 国产网站一区二区三区| 国产成人精品男人的天堂| 91精品小视频| 国产午夜无码片在线观看网站| 亚洲 欧美 偷自乱 图片| 99久视频| 国产成人精品综合| 国产精品久久久久久搜索| 四虎成人精品在永久免费| 人妻中文字幕无码久久一区| 欧美中文字幕一区二区三区| 无码aaa视频| 欧美色图第一页| 国产亚卅精品无码| 欧美在线中文字幕| 久久久受www免费人成| 亚洲无限乱码一二三四区| 精品一区二区久久久久网站| 老司机午夜精品网站在线观看| 秘书高跟黑色丝袜国产91在线| 欧美自慰一级看片免费| a国产精品| 免费观看欧美性一级| 亚洲精品成人片在线观看| 精品黑人一区二区三区| 18禁影院亚洲专区| 亚洲天堂网在线视频| 亚洲成人动漫在线| 久久综合色天堂av| 亚洲一区二区三区麻豆| 国产精品片在线观看手机版 | 精品福利一区二区免费视频| 亚洲欧美日韩动漫| 国产一在线观看| 国产精品亚欧美一区二区| 狠狠做深爱婷婷综合一区| 国产精品无码AⅤ在线观看播放| 久久99精品久久久大学生| 亚洲AⅤ永久无码精品毛片| 91精品国产一区自在线拍| 欧美三级视频网站| 亚洲中文字幕久久精品无码一区| 亚洲色偷偷偷鲁综合| 久久久久久久久18禁秘| 2020久久国产综合精品swag| 国产69精品久久久久妇女| 日韩精品一区二区三区大桥未久| 日本www在线视频| 日本一本正道综合久久dvd | 综合色88| 72种姿势欧美久久久久大黄蕉| 美女高潮全身流白浆福利区| 天天综合网色中文字幕| 99精品视频播放| 久草视频中文| 奇米影视狠狠精品7777| 国产乱子伦精品视频| vvvv98国产成人综合青青| 宅男噜噜噜66国产在线观看| 一本综合久久| www亚洲精品| 2021国产精品自产拍在线观看 | 欧美黄色网站在线看| 国产精品女熟高潮视频|