亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇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)用開發(fā)時(shí),首先需要將其移植到對應(yīng)的硬件平臺(tái)上。SPARC架構(gòu)處理器是航天工程中常用的一款處理器,本文首先簡要介紹了SPARC體系結(jié)構(gòu)、寄存器窗口等相關(guān)概念,然后對嵌入式實(shí)時(shí)操作系統(tǒng)的SPARC移植進(jìn)行了分析和實(shí)現(xiàn)。最后進(jìn)行了測試驗(yàn)證,結(jié)果表明移植后的操作系統(tǒng)運(yùn)行穩(wěn)定正常,性能滿足應(yīng)用需求。 關(guān)鍵詞 SPARC;寄存器窗口;嵌入式實(shí)時(shí)操作系統(tǒng);移植

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

        SPARC處理器是航天工程中常用的一款處理器,寄存器窗口是其一個(gè)重要概念,在進(jìn)行基于SPARC的嵌入式實(shí)時(shí)操作系統(tǒng)移植時(shí)需要對其進(jìn)行相關(guān)處理。本文對嵌入式實(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)前窗口寄存器,只對當(dāng)前程序可見[1]。當(dāng)調(diào)用子程序時(shí),會(huì)分配一個(gè)全新的窗口。寄存器窗口簡化了函數(shù)調(diào)用過程。

        圖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之類的語句為新的程序分配一個(gè)新的堆棧幀。

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

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

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

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

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

        1.3 窗口上溢、下溢

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

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

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

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

        2.1 臨界區(qū)互斥

        臨界區(qū)互斥是通過開關(guān)中斷來實(shí)現(xiàn)的,進(jìn)入臨界區(qū)前先關(guān)閉中斷,退出臨界區(qū)后重新打開中斷。關(guān)中斷時(shí),先將當(dāng)前PIL保存,再將PIL置為0x0F(只有中斷號(hào)大于當(dāng)前PIL值時(shí)才會(huì)響應(yīng)中斷,因此通過將PIL置為15可實(shí)現(xiàn)關(guān)中斷),開中斷時(shí)即恢復(fù)原來的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ù)到各對應(yīng)寄存器中。任務(wù)棧幀如圖3所示。

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

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

        對于一個(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í)切換。

        對于SPARC處理器,PC和nPC無法直接讀取,但發(fā)生trap時(shí),PC和nPC會(huì)自動(dòng)存入%l1和%l2寄存器,trap返回時(shí)CPU再自動(dòng)將%l1和%l2的值寫入PC和nPC,所以通過軟中斷0進(jìn)行任務(wù)級(jí)切換。對于每個(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處理過程如下:從Current窗口開始,保存locals和ins寄存器到對應(yīng)的堆棧幀中,再RESTORE退到上一個(gè)窗口,保存locals和ins寄存器的值,直到退到%WIM所指的無效窗口。再將%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í),中斷處理過程會(huì)對被中斷的任務(wù)進(jìn)行現(xiàn)場保護(hù),所以中斷級(jí)切換直接從任務(wù)級(jí)切換的windows flush處開始執(zhí)行。

        2.4 中斷處理

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

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

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

        圖5 中斷處理流程

        3 移植測試

        硬件平臺(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支持在線硬件調(diào)試[4]。測試時(shí),主機(jī)上運(yùn)行集成開發(fā)調(diào)試工具,通過DSU與目標(biāo)機(jī)相連,進(jìn)行在線調(diào)試。

        圖6 測試環(huán)境

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

        4 結(jié)束語

        介紹了航天工程中常用的SPARC處理器的體系結(jié)構(gòu),對嵌入式實(shí)時(shí)操作系統(tǒng)的SPARC移植進(jìn)行了研究和實(shí)現(xiàn),并在S698-T開發(fā)板上進(jìn)行了測試驗(yàn)證。測試結(jié)果表明,系統(tǒng)運(yùn)行穩(wěn)定正常,可靠性和實(shí)時(shí)性滿足航天工程的應(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]. 北京: 中國科學(xué)院研究生院, 2006.(Feng Lei. The SPARC Architecture and Real-Time Kernel Porting[D]. Beijing: University of Chinese Academy of Sciences, 2006.)

        [4] S698-T芯片用戶手冊[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

        色婷婷五月综合激情中文字幕| 亚洲av永久久无久之码精| 人妻有码中文字幕在线| 国产激情视频免费在线观看| 色综合视频一区中文字幕| 久久6国产| av中文码一区二区三区| 虎白m粉嫩小在线播放| 巨人精品福利官方导航| 在线中文字幕有码中文| 中文字幕日韩人妻高清在线| 熟女免费视频一区二区| 亚洲国产成人一区二区精品区| 国产无套护士在线观看| 亚洲AV无码一区二区三区少妇av| 免费人妖一区二区三区| 免费欧洲毛片a级视频老妇女| 人妻少妇av无码一区二区 | AV中文字幕在线视| 精品中文字幕在线不卡| 亚欧中文字幕久久精品无码| 亚洲国际无码中文字幕| 日韩精品不卡一区二区三区| 中文字日产幕码三区国产| 国产盗摄xxxx视频xxxx| 国产欧美日韩午夜在线观看 | 国产成人无码精品久久99| 国内精品视频一区二区三区| 综合网五月| 精品久久一区二区av| 欧美国产激情18| 理论片午午伦夜理片影院| 日本熟妇hd8ex视频| 精品人妻少妇丰满久久久免| 国产免费一区二区三区免费视频 | 风韵人妻丰满熟妇老熟| 美女张开腿让男人桶爽| 无码人妻精品一区二区三区免费| 亚洲欧美日韩高清专区一区| 午夜日本精品一区二区| 午夜被窝精品国产亚洲av香蕉 |