亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于無(wú)MMU嵌入式系統(tǒng)實(shí)現(xiàn)應(yīng)用軟件硬件無(wú)關(guān)性

        2018-03-29 02:21:32楊會(huì)新
        關(guān)鍵詞:調(diào)用寄存器中斷

        楊會(huì)新

        (河南思維軌道交通技術(shù)研究院有限公司,鄭州 450001)

        隨著嵌入式系統(tǒng)的廣泛應(yīng)用,其硬件升級(jí)提供更好性能的同時(shí),也帶來(lái)一些嵌入式系統(tǒng)設(shè)計(jì)、應(yīng)用的問(wèn)題。嵌入式系統(tǒng)通常面向?qū)S玫墓δ?,面向控制,其軟件一般和其運(yùn)行的硬件平臺(tái)緊密相關(guān)。特別是那些微控制器沒(méi)有內(nèi)存管理單元(MMU)的嵌入式硬件平臺(tái),管理底層硬件的驅(qū)動(dòng)代碼與實(shí)現(xiàn)應(yīng)用功能的代碼作為一個(gè)軟件整體存在于嵌入式系統(tǒng)中。無(wú)論應(yīng)用功能調(diào)整還是硬件部件更新均須完整更換其軟件。即使是局部變更,表現(xiàn)出來(lái)的卻是全部變更,使得升級(jí)的測(cè)試邊界被放大,導(dǎo)致增加系統(tǒng)測(cè)試、維護(hù)的成本。

        如果在無(wú)MMU嵌入式系統(tǒng)中,能實(shí)現(xiàn)完成應(yīng)用功能的代碼(簡(jiǎn)稱:應(yīng)用軟件)與硬件驅(qū)動(dòng)代碼(簡(jiǎn)稱:系統(tǒng)軟件)分離,以各自獨(dú)立的形態(tài)存在于嵌入式系統(tǒng)中,且應(yīng)用軟件具有與硬件無(wú)關(guān)性,那么這種系統(tǒng)架構(gòu)能提供清晰的變更邊界,軟、硬件變更的相互制約大大降低,同時(shí)也降低系統(tǒng)升級(jí)、變更的測(cè)試、維護(hù)成本,甚至有可能實(shí)現(xiàn)嵌入式應(yīng)用軟件像通用計(jì)算機(jī)軟件一樣,不用重新生成即可運(yùn)行于不同硬件條件的嵌入式設(shè)備上,添加新功能軟件,而不中斷現(xiàn)有的服務(wù)功能。

        文獻(xiàn)[1]和文獻(xiàn)[2]提出軟件模擬MMU的方法,從實(shí)用角度考慮,無(wú)MMU的微處理器相對(duì)資源較少,運(yùn)算能力較弱,增加軟件模擬MMU的開銷,值得商榷。文獻(xiàn)[3]的分析表明,能在無(wú)MMU平臺(tái)上支持應(yīng)用分離的ucLinux最少內(nèi)核也在100 KB以上,在無(wú)MMU嵌入式系統(tǒng)中運(yùn)用也有頗多資源限制。文獻(xiàn)[4]~文獻(xiàn)[7]都涉及到軟硬件分離的討論,但基本都是基于建立一種軟件邏輯架構(gòu)方面的研究,少有提及軟件部署方面的軟硬件分離。本文探索一種新的方法,在無(wú)MMU的嵌入式系統(tǒng)中實(shí)現(xiàn)應(yīng)用軟件的硬件無(wú)關(guān)性,應(yīng)用軟件與系統(tǒng)軟件以分離形式部署。

        1 應(yīng)用軟件實(shí)現(xiàn)硬件無(wú)關(guān)性原理

        應(yīng)用軟件要做到與硬件無(wú)關(guān)(本文不討論與硬件指令集的無(wú)關(guān)性),要實(shí)現(xiàn)以下幾方面的硬件無(wú)關(guān)性:(1)指令尋址與硬件無(wú)關(guān)性,即軟件運(yùn)行不依賴于存儲(chǔ)位置或加載位置;(2)不直接操控實(shí)現(xiàn)其功能的硬件部件。

        1.1 具有MMU的系統(tǒng)實(shí)現(xiàn)應(yīng)用軟件硬件無(wú)關(guān)性的原理

        在具有MMU的系統(tǒng)中,系統(tǒng)軟件通過(guò)使用MMU,建立了虛擬地址空間[8],系統(tǒng)軟件加載應(yīng)用軟件運(yùn)行時(shí),進(jìn)行重新定位操作,確定應(yīng)用軟件運(yùn)行的地址,應(yīng)用軟件運(yùn)行于虛擬地址空間,由MMU完成虛擬地址到物理地址的轉(zhuǎn)換。這樣應(yīng)用軟件使用的地址與運(yùn)行平臺(tái)的具體硬件無(wú)關(guān),不僅實(shí)現(xiàn)了指令尋址與硬件無(wú)關(guān),還可使用比實(shí)際物理地址空間大的多的虛擬地址空間。此技術(shù)極大地方便應(yīng)用軟件的設(shè)計(jì)開發(fā)。

        對(duì)支撐應(yīng)用軟件完成其功能的硬件部件的訪問(wèn),都被封裝于操作系統(tǒng)及硬件驅(qū)動(dòng)軟件中,應(yīng)用軟件需要使用硬件部件完成某個(gè)功能,通常是通過(guò)操作系統(tǒng)提供的系統(tǒng)調(diào)用,由操作系統(tǒng)內(nèi)核代碼或傳遞給硬件驅(qū)動(dòng)軟件來(lái)完成,通過(guò)硬件驅(qū)動(dòng)程序屏蔽具體硬件的差異[9]。系統(tǒng)調(diào)用在應(yīng)用軟件代碼中,是使用類似軟中斷的指令碼實(shí)現(xiàn)控制流由應(yīng)用軟件切換進(jìn)入操作系統(tǒng),并不像常規(guī)函數(shù)調(diào)用那樣使用的是函數(shù)地址,這樣就與系統(tǒng)調(diào)用代碼的位置無(wú)關(guān)了。這些系統(tǒng)調(diào)用接口都是高度抽象的,與實(shí)際硬件特性無(wú)關(guān),由此實(shí)現(xiàn)了應(yīng)用軟件與受控硬件的無(wú)關(guān)性。應(yīng)用軟件并不用關(guān)心硬件部件的寄存器地址、位定義、操作時(shí)序等,即使硬件部件更換,也能保證系統(tǒng)調(diào)用接口不變,應(yīng)用軟件也就無(wú)須做相應(yīng)的變動(dòng)。如圖1所示。

        圖1 具有MMU的系統(tǒng)實(shí)現(xiàn)應(yīng)用軟件硬件無(wú)關(guān)性原理示意圖

        此種系統(tǒng)架構(gòu)的優(yōu)勢(shì)顯而易見,引入MMU硬件部件,也提升了系統(tǒng)的成本和復(fù)雜性。這類系統(tǒng)一般都需要運(yùn)行復(fù)雜的、大規(guī)模的操作系統(tǒng)軟件才能發(fā)揮其優(yōu)勢(shì)。

        1.2 具有段寄存器的系統(tǒng)實(shí)現(xiàn)應(yīng)用軟件硬件無(wú)關(guān)性的原理

        此類系統(tǒng)使用的是段地址+段內(nèi)偏移地址的方式尋址,典型的代表是Intel的X86系統(tǒng)。

        此類系統(tǒng)的應(yīng)用軟件指令被編譯為基于段寄存器的尋址方式,在應(yīng)用軟件加載和運(yùn)行時(shí),確定其段寄存器的內(nèi)容,通過(guò)段寄存器與指令尋址偏移地址,硬件部件運(yùn)算得出具體的硬件地址。這樣軟件代碼的尋址是相對(duì)于段寄存器,而段寄存器在加載運(yùn)行時(shí)可重定位,實(shí)現(xiàn)應(yīng)用軟件尋址與實(shí)際物理地址無(wú)關(guān)。

        對(duì)于硬件部件訪問(wèn)的硬件無(wú)關(guān)性,以X86經(jīng)典的DOS操作系統(tǒng)為例,DOS提供了大量的中斷服務(wù)程序,完成對(duì)硬件部件的訪問(wèn),應(yīng)用軟件正是通過(guò)中斷服務(wù)程序?qū)崿F(xiàn)其控制硬件完成的功能。進(jìn)入中斷服務(wù)程序的中斷指令與地址無(wú)關(guān)。應(yīng)用軟件設(shè)計(jì)者一般是使用設(shè)計(jì)語(yǔ)言提供的系統(tǒng)調(diào)用庫(kù)函數(shù),由庫(kù)函數(shù)使用中斷指令調(diào)用操作系統(tǒng)提供的中斷服務(wù)程序。當(dāng)然DOS允許在應(yīng)用軟件中實(shí)現(xiàn)中斷服務(wù)程序來(lái)操控硬件部件以實(shí)現(xiàn)特定的功能,這樣在提供靈活性的同時(shí),也使得應(yīng)用軟件不能完全做到硬件無(wú)關(guān)。如圖2所示。

        此類系統(tǒng)架構(gòu)有一定局限性,尋址空間有限,對(duì)應(yīng)用軟件的設(shè)計(jì)有相當(dāng)?shù)南拗啤?/p>

        1.3 無(wú)MMU嵌入式系統(tǒng)實(shí)現(xiàn)應(yīng)用軟件硬件無(wú)關(guān)性的原理

        無(wú)MMU嵌入式系統(tǒng)中,無(wú)前述兩類系統(tǒng)中的特殊硬件部件來(lái)支持實(shí)現(xiàn)應(yīng)用軟件尋址的硬件無(wú)關(guān)性。要實(shí)現(xiàn)硬件無(wú)關(guān)性,首先從軟件架構(gòu)設(shè)計(jì)上入手,對(duì)系統(tǒng)整個(gè)軟件劃分邏輯層次,明確應(yīng)用功能與底層支撐層的界線,確定抽象調(diào)用接口。軟件邏輯架構(gòu)方面的論述文獻(xiàn)較多,此處不作展開[10]。下文以實(shí)現(xiàn)應(yīng)用軟件與系統(tǒng)軟件部署分離方面的原理進(jìn)行闡述。

        圖2 具有段寄存器的系統(tǒng)實(shí)現(xiàn)應(yīng)用軟件硬件無(wú)關(guān)性原理示意圖

        (1)應(yīng)用軟件中的尋址可分為兩類:代碼與只讀數(shù)據(jù)的尋址;可讀寫數(shù)據(jù)的尋址。這兩類尋址在編譯應(yīng)用軟件時(shí),都要選擇編譯為位置無(wú)關(guān)目標(biāo)碼。這樣應(yīng)用軟件內(nèi)部的尋址都是位置無(wú)關(guān)的相對(duì)尋址。

        (2)系統(tǒng)軟件加載應(yīng)用軟件運(yùn)行時(shí),由于其內(nèi)部尋址為位置無(wú)關(guān)的相對(duì)尋址,只需轉(zhuǎn)入其加載位置的軟件入口地址,無(wú)須進(jìn)行軟件重定位。對(duì)于可讀寫數(shù)據(jù)區(qū),則需要為其分配存儲(chǔ)空間位置。應(yīng)用軟件對(duì)位置無(wú)關(guān)的可讀寫數(shù)據(jù)區(qū)的訪問(wèn)需要通過(guò)一個(gè)數(shù)據(jù)基址寄存器進(jìn)行相對(duì)尋址實(shí)現(xiàn)。所以,由系統(tǒng)軟件切換至應(yīng)用軟件運(yùn)行時(shí),還需要為其設(shè)置數(shù)據(jù)基址寄存器。至此實(shí)現(xiàn)應(yīng)用軟件尋址的硬件無(wú)關(guān)性。

        (3)系統(tǒng)軟件要提供系統(tǒng)調(diào)用函數(shù),應(yīng)用軟件通過(guò)系統(tǒng)調(diào)用來(lái)操控硬件部件完成其功能。系統(tǒng)調(diào)用的接口類似1.1中所述系統(tǒng),是硬件特性無(wú)關(guān)的調(diào)用接口。這就要求無(wú)MMU嵌入式系統(tǒng)要提供軟件中斷或?qū)S玫南到y(tǒng)調(diào)用機(jī)制來(lái)實(shí)現(xiàn)系統(tǒng)調(diào)用。例如ARM的Cortex-M系列處理器就提供了SVC機(jī)制用于實(shí)現(xiàn)系統(tǒng)調(diào)用。

        無(wú)MMU嵌入式系統(tǒng)應(yīng)用軟件硬件無(wú)關(guān)性原理如圖3所示。

        圖3 無(wú)MMU嵌入式系統(tǒng)實(shí)現(xiàn)應(yīng)用軟件硬件無(wú)關(guān)性原理示意圖

        2 實(shí)現(xiàn)方法

        硬件平臺(tái)為ARM Cortex-M系列處理器,使用Keil uVision5作為開發(fā)軟件。

        2.1 應(yīng)用軟件設(shè)計(jì)要求

        編寫應(yīng)用軟件代碼,需要使用位置無(wú)關(guān)的方式。比如不能使用“__attribute__((at(address))) variable attribute”指定變量的位置;不能使用“__attribute__((section("section_name")))”指定其放置位置。

        在嵌入?yún)R編代碼中不能使用“LDR Rn, = 標(biāo)號(hào)”這樣的語(yǔ)句,因?yàn)檫@種語(yǔ)句生成目標(biāo)代碼時(shí),會(huì)寫入標(biāo)號(hào)的地址值,這破壞了代碼運(yùn)行位置無(wú)關(guān)性,也就不能實(shí)現(xiàn)硬件無(wú)關(guān)性。

        所有對(duì)硬件部件的訪問(wèn)都通過(guò)系統(tǒng)軟件提供的系統(tǒng)調(diào)用進(jìn)行。系統(tǒng)調(diào)用的實(shí)現(xiàn)可以用Cortex-M處理器提供SVC機(jī)制或軟中斷方式。推薦使用SVC機(jī)制來(lái)實(shí)現(xiàn)。對(duì)于應(yīng)用軟件而言,就像使用標(biāo)準(zhǔn)庫(kù)函數(shù)一樣。

        在 keil軟 件“Options of target” 對(duì) 話 框 的C/C++、ASM選項(xiàng)卡選擇“Read-Only Position Independent”和“Read-Write Position Independent”編譯選項(xiàng),也就是編譯命令行參數(shù)“/ropi”和“/rwpi”;linker選 項(xiàng) 卡 選 擇“Make RW Sections Independent”、“Make RO Sections Position Independent”,也就是鏈接命令行參數(shù)“--rwpi”、“--ropi”。注意使用位置無(wú)關(guān)編譯、鏈接選項(xiàng)時(shí),不能使用分散加載文件“*.sct”來(lái)描述存儲(chǔ)空間。如果使用了分散加載文件,編譯鏈接時(shí),會(huì)有警告錯(cuò)誤,指出忽略位置無(wú)關(guān)命令行選項(xiàng)開關(guān)。

        如上所述,就可以生成運(yùn)行位置無(wú)關(guān)的應(yīng)用軟件了。

        2.2 系統(tǒng)軟件設(shè)計(jì)要求

        (1)應(yīng)用軟件加載運(yùn)行的要求。如前文所述,系統(tǒng)軟件要加載應(yīng)用軟件運(yùn)行,需要做一些特定的工作。對(duì)通用的編譯器產(chǎn)生的可執(zhí)行應(yīng)用軟件文件,要通過(guò)自制工具軟件附加一些信息,生成系統(tǒng)軟件使用的文件。附加的信息主要包括應(yīng)用軟件執(zhí)行入口地址(相對(duì)文件頭的偏移)、數(shù)據(jù)區(qū)大小、堆棧大小。系統(tǒng)軟件啟動(dòng)運(yùn)行后,根據(jù)應(yīng)用軟件描述信息(類似啟動(dòng)腳本),加載應(yīng)用軟件,根據(jù)應(yīng)用軟件文件附加的信息,為其分配所需資源,轉(zhuǎn)入應(yīng)用軟件入口執(zhí)行。

        (2)系統(tǒng)調(diào)用的要求。使用SVC機(jī)制提供滿足應(yīng)用軟件訪問(wèn)硬件部件的系統(tǒng)調(diào)用,如_svc(svc_no)func_ret func(func_param)。系統(tǒng)調(diào)用的接口設(shè)計(jì)可參考通用操作系統(tǒng)的系統(tǒng)調(diào)用接口,便于應(yīng)用軟件的開發(fā)、仿真驗(yàn)證、移植等工作。在實(shí)際響應(yīng)系統(tǒng)調(diào)用,返回應(yīng)用軟件時(shí),應(yīng)設(shè)置應(yīng)用軟件的數(shù)據(jù)基址寄存器,保證應(yīng)用軟件能正確訪問(wèn)靜態(tài)數(shù)據(jù)區(qū)數(shù)據(jù)。

        2.3 實(shí)現(xiàn)的局限性

        無(wú)MMU嵌入式系統(tǒng)微處理器的存儲(chǔ)空間通常是不連續(xù)的,另外處理器廠商可能為平衡性價(jià)比,不同存儲(chǔ)區(qū)域的性能也有所不同。由于應(yīng)用軟件使用位置無(wú)關(guān)編譯鏈接選項(xiàng)時(shí),不能使用分散加載文件描述不連續(xù)的存儲(chǔ)空間,使得應(yīng)用軟件只能使用一塊連續(xù)代碼區(qū)和一塊連續(xù)的靜態(tài)數(shù)據(jù)區(qū),這對(duì)代碼規(guī)模大和要求大數(shù)據(jù)區(qū)的應(yīng)用而言就有很大限制。對(duì)于應(yīng)用軟件代碼規(guī)模大的,只能拆分成多個(gè)應(yīng)用。對(duì)于數(shù)據(jù)區(qū)要求大的,只能通過(guò)系統(tǒng)軟件提供的系統(tǒng)調(diào)用動(dòng)態(tài)分配存儲(chǔ)空間,在軟件設(shè)計(jì)及數(shù)據(jù)使用上有所不便。

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

        本文闡述了無(wú)MMU嵌入式系統(tǒng)實(shí)現(xiàn)應(yīng)用軟件硬件無(wú)關(guān)性的意義,討論了在無(wú)MMU嵌入式系統(tǒng)中實(shí)現(xiàn)應(yīng)用軟件的原理,并結(jié)合Cortex-M系列處理器,Keil開發(fā)環(huán)境,提出了無(wú)MMU嵌入式系統(tǒng)下實(shí)現(xiàn)應(yīng)用軟件硬件無(wú)關(guān)的方法,為改變目前大部分此類系統(tǒng)只能建立單一的硬件相關(guān)軟件的現(xiàn)狀進(jìn)行了有價(jià)值的探索,便于建立更加靈活、易于升級(jí)、性價(jià)比更高的嵌入式系統(tǒng)。進(jìn)一步發(fā)展,有望在無(wú)MMU嵌入式系統(tǒng)中實(shí)現(xiàn)應(yīng)用軟件一次發(fā)布運(yùn)行于不同硬件條件的嵌入式設(shè)備;在運(yùn)行設(shè)備上添加新功能軟件,而不中斷現(xiàn)有服務(wù)功能。

        參考文獻(xiàn):

        [1]張秀平,楊國(guó)武,李曉瑜. MMU協(xié)處理器的一種軟件模擬模型[J]. 計(jì)算機(jī)工程與應(yīng)用,2011,47(3):57-60.

        [2]張加林,王海琳. 中低端微處理器平臺(tái)軟件仿真MMU的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用,2014,17(6):67-70.

        [3]孫魯毅. 四種流行的嵌入式實(shí)時(shí)操作系統(tǒng)的比較研究—VxWorks,QNX,ucLinux,RTEMS[J]. 計(jì)算機(jī)應(yīng)用與軟件,2007,24(8):196-197.

        [4]王 君,王志杰,樂(lè) 浪. 基于SOIS的星載平臺(tái)軟件架構(gòu)設(shè)計(jì)探索[J]. 航天器工程,2017,26(3):84-89.

        [5]饒?zhí)熨F,李 凱,李宇鋒. 機(jī)車顯示器應(yīng)用軟件模塊化設(shè)計(jì)[J]. 機(jī)車電傳動(dòng),2016 (1):71-74.

        [6]趙 勇,陳香蘭. 基于模型驅(qū)動(dòng)的實(shí)時(shí)嵌入式系統(tǒng)[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(8):83-87.

        [7]甄 君,梁 超,夏俊清. 信息對(duì)抗偵察系統(tǒng)開放架構(gòu)計(jì)算環(huán)境[J]. 太赫茲科學(xué)與電子信息學(xué)報(bào),2015,13(4):590-595.

        [8]閆路平,龔樂(lè)中. 基于MILS架構(gòu)的高可信嵌入式操作系統(tǒng)研究[J]. 通信技術(shù),2017,50(5):1029-1035.

        [9]張國(guó)強(qiáng).《操作系統(tǒng)原理》課程教學(xué)中的結(jié)構(gòu)思維培養(yǎng)[J].軟件導(dǎo)刊,2016,15(2):180-184.

        [10]王繼剛,方 芳,張華強(qiáng). 嵌入式操作系統(tǒng)異常處理框架設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子技術(shù)應(yīng)用,2017,43(5):60-63+66.

        猜你喜歡
        調(diào)用寄存器中斷
        Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        跟蹤導(dǎo)練(二)(5)
        千里移防,衛(wèi)勤保障不中斷
        解放軍健康(2017年5期)2017-08-01 06:27:44
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
        AT89C51與中斷有關(guān)的寄存器功能表解
        FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
        国产剧情一区二区三区在线 | 中文字幕Aⅴ人妻一区二区苍井空 亚洲中文字幕久久精品蜜桃 | 日韩高清在线观看永久| 人妻在线中文字幕| 国产大全一区二区三区| 变态另类手机版av天堂看网| 9 9久热re在线精品视频| xxxx国产视频| 亚洲人妖女同在线播放| 中文字日产幕码三区国产| 久久天天躁狠狠躁夜夜2020一 | 久久99中文字幕久久| 国产91在线播放九色快色| 欧美激情综合色综合啪啪五月| 久久精品国产亚洲精品| 无码专区无码专区视频网址| 日韩女优视频网站一区二区三区 | 日日噜噜夜夜久久密挑| 丰满女人猛烈进入视频免费网站 | 男女男精品视频网站免费看| 米奇777四色精品人人爽| 亚洲AV无码久久久一区二不卡| 色佬易精品视频免费在线观看| 中文字幕无码成人片| 麻豆亚洲av永久无码精品久久| 亚洲国产剧情在线精品视| 无色码中文字幕一本久道久| 亚洲精品色婷婷在线影院| 亚洲美腿丝袜综合一区| 91大神蜜桃视频在线观看| 日韩亚洲精品中文字幕在线观看| 丰满岳妇乱一区二区三区| 中文字幕天天躁日日躁狠狠| 午夜影院免费观看小视频| 日韩少妇内射免费播放18禁裸乳| 性夜夜春夜夜爽aa片a| 一本久久a久久精品综合| 亚洲精品乱码久久久久久| 亚洲av无码第一区二区三区| 亚洲乱码一区AV春药高潮| 视频在线观看免费一区二区|