国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Xenomai的Linux數(shù)控系統(tǒng)實時性改造研究

2018-12-21 06:52:08謝文彬殷紅梅
機械工程與自動化 2018年6期
關(guān)鍵詞:任務(wù)調(diào)度實時性數(shù)控系統(tǒng)

謝文彬,殷紅梅,張 欽

(1.淮安生物工程高等職業(yè)學(xué)校,江蘇 淮安 223200;2.淮安信息職業(yè)技術(shù)學(xué)院 機械工程學(xué)院,江蘇 淮安 223003)

0 引言

數(shù)控系統(tǒng)是一種多任務(wù)操作系統(tǒng),實時性要求較高,標(biāo)準(zhǔn)的Linux系統(tǒng)實時性較弱,無法滿足要求。根據(jù)實時性要求的不同,實時性可分為硬實時和軟實時兩種,無論是哪種存在問題都會給系統(tǒng)和機床帶來嚴(yán)重破壞。Linux內(nèi)核2.6版本在支持實時性任務(wù)方面做出了大量的改進,但仍然無法達到實時嵌入式系統(tǒng)的要求[1-2],如內(nèi)核不具備完全可搶占性、時鐘粒度粗糙不能滿足要求等。Linux的實時性能改造主要通過內(nèi)核內(nèi)部改造與雙內(nèi)核實時化改造。其中,較為常用的雙內(nèi)核改造方案使用一定方法能夠使Linux系統(tǒng)對硬實時性進行支持,降低了任務(wù)切換延遲和中斷延遲,使應(yīng)用程序的運行有了充分的時間保證。但依然存在以下缺點:①使用非實時性標(biāo)準(zhǔn)Linux內(nèi)核的驅(qū)動程序來調(diào)用處理器資源,雙內(nèi)核改造方案過多,系統(tǒng)的實時可靠性受到影響;②實時和非實時任務(wù)在調(diào)用時需要分開考慮,增加了系統(tǒng)設(shè)計的復(fù)雜性[3-4]。當(dāng)前,雙內(nèi)核實時性改造項目中比較具有代表性的有Xenomai、RT-Linux和RTAI等。本文針對基于FPGA數(shù)控系統(tǒng)的實時要求,完成基于Xenomai的Linux實時化內(nèi)核的移植,為基于Linux+Xenomai的實時多任務(wù)操作系統(tǒng)的構(gòu)建乃至數(shù)控系統(tǒng)整個軟件平臺的開發(fā)奠定基礎(chǔ)。

1 Xenomai基本概述及工作原理

Xenomai以Adeos(Adaptive Domain Environment for Operating System)為基礎(chǔ),采用雙內(nèi)核機制——Linux內(nèi)核的強實時擴展。其優(yōu)先級高于Linux內(nèi)核,它負(fù)責(zé)處理系統(tǒng)的實時任務(wù),使開發(fā)者可以將依賴于傳統(tǒng)RTOS的應(yīng)用程序性能穩(wěn)定,并快速地移植到GNU/Linux體系下,這樣可以盡可能地減少應(yīng)用程序的重新編寫。為了實現(xiàn)以上功能,同時系統(tǒng)仍具有較高的實時性,Xenomai在系統(tǒng)中構(gòu)建了一個可以用來模擬傳統(tǒng)實時操作系統(tǒng)API的模擬器。該模擬器也被稱作實時微內(nèi)核,而使用此內(nèi)核模擬傳統(tǒng)實時API的技術(shù)被稱作“Skin”(皮膚),此技術(shù)是Xenomai的核心技術(shù)之一。通過“Skin”技術(shù),Xenomai實現(xiàn)了多種傳統(tǒng)RTOS的應(yīng)用編程接口,為在GNU/Linux環(huán)境中傳統(tǒng)RTOS的移植提供了極大的方便[5]。

圖1為Xenomai的組成結(jié)構(gòu),可以看出Xenomai實時內(nèi)核由多個抽象層組成:工作在系統(tǒng)硬件之上的是Adeos,在Adeos上面的是硬件抽象層HAL,該層和系統(tǒng)所用處理器的體系架構(gòu)關(guān)系最為密切,實時內(nèi)核層在硬件抽象層HAL之上,它是系統(tǒng)的中間部分,它可以實現(xiàn)通用RTOS基本服務(wù)。這些服務(wù)可以通過本地和客戶API實現(xiàn),本地API也被稱作Native??蛻鬉PI是建立在實時內(nèi)核上的,并為傳統(tǒng)RTOS用戶專門設(shè)計,比較常用的有RTAI、POSIX、VxWorks、uITRON和pSOS+等??蛻鬉PI設(shè)計的目的是在Xenomai/Linux體系下做應(yīng)用程序移植時,傳統(tǒng)RTOS應(yīng)用程序可以被兼容,同時減少代碼重寫,此種特性盡可能地使Xenomai的穩(wěn)健性得到保證。Xenomai/Linux架構(gòu)為系統(tǒng)提供了通過系統(tǒng)接口實現(xiàn)的用戶空間模式和由實時內(nèi)核實現(xiàn)的內(nèi)核空間模式。系統(tǒng)穩(wěn)定、可靠的軟實時性由用戶空間執(zhí)行模式保證,同時優(yōu)秀的硬實時性能則通過內(nèi)核空間模式實現(xiàn)。時鐘模塊管理、定時器處理、同步支持和實時線程調(diào)度等實時API所要用到的操作系統(tǒng)服務(wù)和資源都是由Xenomai構(gòu)造的通用模塊提供[6]。

2 基于Xenomai的Linux域設(shè)計

在Adeos模式下,標(biāo)準(zhǔn)Linux和Xenomai被設(shè)計為兩個不同的域,Linux域(根域)為Xenomai域提供動態(tài)注冊、堆棧分配等必要的基本功能。Adeos系統(tǒng)以Linux為基礎(chǔ)的實現(xiàn)方式?jīng)Q定了Adeos在Linux運行之后啟動,但是為了保證系統(tǒng)啟動階段的實時性,Adeos在啟動階段就要獲得系統(tǒng)中斷管理的控制權(quán)。在初始化完成之后,Xenomai和Linux的協(xié)調(diào)運行方式可以分為兩種:主動運行方式與被動運行方式。主動運行方式的特征是:當(dāng)前域在處理任務(wù)和中斷請求的過程中不會被高優(yōu)先級的域打擾,此域在任務(wù)完成之后被主動掛起。與之相反的是被動運行方式,指當(dāng)前域被系統(tǒng)出現(xiàn)的優(yōu)先級別更高的域中斷運行,從而該域被動掛起。

圖1 Xenomai的組成結(jié)構(gòu)

域的切換工作在ipipe_suspend_domain()函數(shù)中實現(xiàn),在Linux系統(tǒng)中cpu_idle()會調(diào)用此函數(shù),同時在Xenomai域中即使系統(tǒng)處在空閑階段時也會一直運行此函數(shù)[7]。域切換函數(shù)ipipe_suspend_domain()的執(zhí)行模式是在當(dāng)前域下首先檢測下一個域中是否存在需要處理的任務(wù),如果存在則將程序執(zhí)行權(quán)交給該域?qū)θ蝿?wù)進行處理,如果沒有則跳過該域繼續(xù)沿著中斷管道向下查找有任務(wù)需要處理的域。域中有需要處理的中斷任務(wù)和該域擁有比當(dāng)前域更高的優(yōu)先級是域能夠被切換進入的兩個必備條件。在Adeos系統(tǒng)中,Xenomai負(fù)責(zé)管理實時任務(wù),為了使實時任務(wù)運行時不會受到Linux內(nèi)核任務(wù)的影響,確保實時任務(wù)能夠在指定的時間內(nèi)完成,Xenomai域優(yōu)先級的設(shè)置要比Linux域的高。

3 基于Xenomai的Linux系統(tǒng)移植

根據(jù)上文敘述及Xenomai的工作原理,基于Xenomai的Linux實時系統(tǒng)改造方案框架如圖2所示。將Xenomai移植到標(biāo)準(zhǔn)的Linux系統(tǒng)內(nèi)核中主要有以下兩個步驟:構(gòu)建Linux實時內(nèi)核系統(tǒng)和交叉編譯Xenomai的庫文件。

圖2 基于Xenomai的Linux實時系統(tǒng)改造方案框架

3.1 Linux實時內(nèi)核系統(tǒng)構(gòu)建

在官方網(wǎng)站上下載“潔凈”的內(nèi)核文件Linux2.6.4,同時下載Xenomai-2.4.3源碼包,Xenomai源碼提供了修改Linux內(nèi)核時需要的Adeos的內(nèi)核補丁。在虛擬機中端執(zhí)行以下命令:

#$Xenomai_root/scripts/prepare-kernelsh-arch=arm

-adeos=Sxenomai_root/ksrc/arch/arm/patches/adeos-ipie-2.6.20-arm-1.8-03.patch-linux=$linux_tree

其中:$Linux_tree代表Linux源碼包的位置;$Xenomai_root代表Xenomai源碼包的位置;-arch=arm用來指定目標(biāo)平臺是基于ARM架構(gòu)的;-adeos指定選擇使用的補丁文件和文件的位置。

成功打好補丁之后,可以看到內(nèi)核中新增加了Real-time選項,如圖3所示。

圖3 Xenomai配置信息

內(nèi)核配置過程中,為防止標(biāo)準(zhǔn)內(nèi)核與實時內(nèi)核的配置中發(fā)生沖突,一些配置選項需要重新設(shè)置:

將內(nèi)核“可搶占式”模式開啟,關(guān)閉Power Management support(Power management option(ACPI,APM);關(guān)閉Module versioning support;關(guān)閉CPU Frequency scalling。因為ARM處理器不具備浮點數(shù)處理單元(FPU),所以CONFIG_XENO_HW_FPU也要選擇關(guān)閉。根據(jù)實際需求在Xenomai的Interface子系統(tǒng)中選擇合適的接口,并將其編譯到內(nèi)核模塊之中。完成配置后,在終端中執(zhí)行“make zImage”命令就可以得到基于Xenomai的實時Linux系統(tǒng)內(nèi)核。

3.2 Xenomai庫的交叉編譯

為了得到Xenomai提供的API的運行,需要將Xenomai源碼編譯以得到需要的庫文件。在中斷中執(zhí)行以下命令:

#$Xenomai_tree/configure--build=i686-pc-linux-gnu--host=arm-linux

--able-arm-mach=s3c2440--enable-arm-tsc

#make

其中:--build指定宿主機的開發(fā)環(huán)境;--host用來指定交叉編譯環(huán)境;--enable-arm-mach用來指定目標(biāo)平臺(s3c2440處理器);--enable-arm-tsc用來開啟tsc。將編譯得到的Xenomai動態(tài)鏈接庫文件拷貝到根系統(tǒng)的lib文件夾下,以備Xenomai程序運行時調(diào)用。

4 Linux和Xenomai實時性能測試

以上對Linux+Xenomai的系統(tǒng)做了詳細的分析,并且在s3c2440處理器上完成了基于Xenomai的Linux系統(tǒng)的移植,為具有強實時性的數(shù)控系統(tǒng)提供了軟件平臺。接下來對此軟硬件系統(tǒng)進行整體測試,用來驗證此系統(tǒng)能夠滿足數(shù)控系統(tǒng)的要求。

4.1 實時任務(wù)調(diào)度延遲測試

一個隨機的控制任務(wù)發(fā)出請求到該任務(wù)被實際執(zhí)行之間的時間間隔被稱作任務(wù)調(diào)度延遲,任務(wù)調(diào)度延遲的長短是影響系統(tǒng)實時性的一個重要指標(biāo)[8-9]。系統(tǒng)處理任務(wù)的時間和任務(wù)調(diào)度延遲的時間合在一起組成固定的時鐘粒度,由此可以看出,任務(wù)調(diào)度延遲所用的時間越長留給系統(tǒng)處理任務(wù)的時間越短。Xenomai對于任務(wù)調(diào)度延遲提供了可以直接使用的代碼。Xenomai中的可執(zhí)行文件latency可以被用來測試用戶模式下任務(wù)調(diào)度延遲、內(nèi)核模式下任務(wù)調(diào)度延遲和定時器中斷延遲。為體現(xiàn)模擬的真實性,首先執(zhí)行“dd if=/dev/zero of=/dev/null&”語句模擬CPU的重載情況,然后再進行相關(guān)測試。

執(zhí)行“./latency-t0-T20-p500-h-s”,對用戶模式下的任務(wù)的調(diào)度延遲進行測試;執(zhí)行“./latency-t1-T20-p500-h-s”,對內(nèi)核模式下的調(diào)度延遲進行測試。-t為設(shè)定測試的類型:0表示對用戶模式下的任務(wù)的調(diào)度延遲進行測試,1表示對內(nèi)核模式下的調(diào)度延遲進行測試,2表示定時器的中斷延遲測試;-p用來表示設(shè)定任務(wù)周期,單位為微秒,此處設(shè)計為500 μs;-T表示設(shè)定持續(xù)時間,單位為秒,此處設(shè)置為20 s;-h表示打印測試記錄中的最小、平均、最大延遲時間;-s表示打印統(tǒng)計測試過程中的最小、平均、最大延遲時間。用戶態(tài)下測試結(jié)果和內(nèi)核態(tài)下測試結(jié)果如圖4和圖5所示。從測試結(jié)果可以看出:在系統(tǒng)負(fù)載比較高的情況下,任務(wù)調(diào)度延遲在用戶空間和內(nèi)核空間內(nèi)分別為5 μs~6 μs和1 μs~2 μs,由此可以看出此系統(tǒng)在實時性方面有很高的優(yōu)勢。

圖4 用戶態(tài)下測試結(jié)果

4.2 內(nèi)核定時器中斷延遲測試

在數(shù)控系統(tǒng)中存在許多隨機事件,這些事件都會轉(zhuǎn)換成任務(wù)驅(qū)動中斷,如果系統(tǒng)無法對這些中斷進行快速的響應(yīng),將會給系統(tǒng)帶來無法預(yù)測的后果,因此對于定時器中斷的測試是十分必要的。同樣執(zhí)行語句“./latency-t2-T30-p500”對系統(tǒng)進行測試,定時器中斷測試結(jié)果如圖6所示。從圖6的測試結(jié)果可以看出:在系統(tǒng)負(fù)載比較高的情況下,定時器中斷延遲測試的結(jié)果為5 μs~6 μs,由此可以看出此實時系統(tǒng)在定時器中斷響應(yīng)方面具有很大的優(yōu)勢。

圖5 內(nèi)核態(tài)下測試結(jié)果

圖6 定時器中斷測試結(jié)果

5 結(jié)語

本文結(jié)合數(shù)控系統(tǒng)的實時性要求和對于標(biāo)準(zhǔn)Linux實時性不足的分析,提出了基于Xenomai的Linux系統(tǒng)實時性改造方案,完成基于Xenomai的Linux實時化內(nèi)核的移植,并在s3c2440芯片上實現(xiàn)此實時系統(tǒng),最后通過3個實時性能指標(biāo)的測試,驗證了基于Xenomai的Linux實時性改造方案在數(shù)控系統(tǒng)中的可行性。

猜你喜歡
任務(wù)調(diào)度實時性數(shù)控系統(tǒng)
基于規(guī)則實時性的端云動態(tài)分配方法研究
基于改進NSGA-Ⅱ算法的協(xié)同制造任務(wù)調(diào)度研究
基于時間負(fù)載均衡蟻群算法的云任務(wù)調(diào)度優(yōu)化
基于FANUC 32i A數(shù)控系統(tǒng)的外部測量設(shè)計
西門子840D sl數(shù)控系統(tǒng)在SC125大型車銑鏜床技術(shù)改造中的應(yīng)用
基于FANUC Oi mate TD數(shù)控系統(tǒng)的手動功能開發(fā)
基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實時性仿真
數(shù)控系統(tǒng)中GUI軟件平臺設(shè)計和實現(xiàn)
航空電子AFDX與AVB傳輸實時性抗干擾對比
云計算環(huán)境中任務(wù)調(diào)度策略
扎鲁特旗| 八宿县| 信丰县| 石屏县| 湘乡市| 桓台县| 洛阳市| 会东县| 青神县| 黄龙县| 门头沟区| 青川县| 钟山县| 阿坝县| 天等县| 浏阳市| 岳阳县| 双城市| 宁海县| 博乐市| 大田县| 安泽县| 建水县| 普陀区| 咸阳市| 浦江县| 陕西省| 长兴县| 金沙县| 闸北区| 南雄市| 嘉黎县| 昌平区| 武安市| 搜索| 杭锦旗| 泊头市| 灵寿县| 资中县| 兰考县| 嫩江县|