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

?

RTX在實(shí)時(shí)控制系統(tǒng)中的應(yīng)用

2012-08-08 10:23肖雅靜趙歲花
電子工業(yè)專用設(shè)備 2012年11期
關(guān)鍵詞:信號(hào)量共享內(nèi)存驅(qū)動(dòng)程序

王 豐,劉 娜,肖雅靜,趙歲花

(中國(guó)電子科技集團(tuán)公司第四十五研究所,北京 100176)

隨著現(xiàn)代科技的發(fā)展,工業(yè)控制系統(tǒng)一直在不斷尋求更高的精度和速度,因此實(shí)時(shí)控制系統(tǒng)在越來(lái)越多的方面得到應(yīng)用。無(wú)論是在航空、航天、醫(yī)療、軍事還是在工業(yè)制造、仿真測(cè)試上,都可以看到實(shí)時(shí)系統(tǒng)的身影。

所謂的實(shí)時(shí)系統(tǒng)是指系統(tǒng)在接收到一個(gè)不可預(yù)測(cè)的事件后,能夠迅速對(duì)其做出正確響應(yīng)。它的最大特點(diǎn)在于:一個(gè)正確的程序運(yùn)行不僅取決于結(jié)果的準(zhǔn)確,更取決于功能實(shí)現(xiàn)的時(shí)間。當(dāng)然,“實(shí)時(shí)”并不意味著“快”,它指的是系統(tǒng)的時(shí)間響應(yīng)特性。換句話說(shuō),實(shí)時(shí)性的衡量標(biāo)準(zhǔn)不是系統(tǒng)的平均響應(yīng)時(shí)間而是最壞情況下的響應(yīng)時(shí)間。

實(shí)時(shí)系統(tǒng)具有不同的分類,按實(shí)時(shí)性能來(lái)分,實(shí)時(shí)系統(tǒng)可以分為硬實(shí)時(shí)系統(tǒng)和軟實(shí)時(shí)系統(tǒng)。硬實(shí)時(shí)系統(tǒng)對(duì)響應(yīng)時(shí)間的要求是嚴(yán)格的、絕對(duì)的,響應(yīng)時(shí)間為微秒級(jí)或更強(qiáng);軟實(shí)時(shí)系統(tǒng)允許有一些小的誤差,響應(yīng)時(shí)間為毫秒級(jí)。通常情況下我們所說(shuō)的實(shí)時(shí)系統(tǒng)都是指硬實(shí)時(shí)系統(tǒng)。一個(gè)實(shí)時(shí)系統(tǒng)除了其響應(yīng)時(shí)間確定外,還具有其他一些優(yōu)點(diǎn):多線程優(yōu)先級(jí)調(diào)度器;可預(yù)測(cè)的線程同步機(jī)制;具有優(yōu)先級(jí)繼承;快速的時(shí)鐘和定時(shí)器。

Windows系統(tǒng)作為一種通用操作系統(tǒng)平臺(tái),以其友好的人機(jī)界面交互功能,在工業(yè)控制中被廣泛應(yīng)用。但不足之處在于Windows系統(tǒng)屬于一個(gè)軟實(shí)時(shí)、多任務(wù)系統(tǒng),其響應(yīng)時(shí)間無(wú)法滿足某些高精度的控制領(lǐng)域。雖然隨著微處理芯片領(lǐng)域的發(fā)展,其處理能力和響應(yīng)時(shí)間得到顯著提高,但是其最差響應(yīng)時(shí)間的提高不能總是被保證,而且其線程優(yōu)先級(jí)太少,隱含著不確定的線程調(diào)度機(jī)制。因此,對(duì)Windows平臺(tái)進(jìn)行實(shí)時(shí)擴(kuò)展就顯得尤為必要。

1 RTX簡(jiǎn)介

美國(guó)Ardence公司推出了一套純軟件的硬實(shí)時(shí)擴(kuò)展子系統(tǒng)Real-Time Extension for Windows(即RTX),提供了專門針對(duì)Windows系統(tǒng)的嵌入式實(shí)時(shí)解決方案。相比其他的實(shí)時(shí)系統(tǒng),RTX具有開發(fā)周期短,成本低等優(yōu)點(diǎn),并且RTX支持VC++6.0與VS.NET開發(fā)環(huán)境。RTX并不對(duì)Windows系統(tǒng)本身進(jìn)行任何封裝或修改,通過(guò)在HAL層(硬件抽象層)增加實(shí)時(shí)HAL擴(kuò)展來(lái)實(shí)現(xiàn)基于優(yōu)先級(jí)的搶占式實(shí)時(shí)任務(wù)的管理和調(diào)度。RTX實(shí)時(shí)子系統(tǒng)的線程優(yōu)先于所有Windows線程,提供了對(duì)IRQ、I/O、內(nèi)存的精確直接控制,以確保實(shí)時(shí)任務(wù)的可靠性。通過(guò)高速的IPC通信和同步機(jī)制,RTX方便地實(shí)現(xiàn)與Windows之間的數(shù)據(jù)交換。Windows的定時(shí)器時(shí)鐘分辨率為1 ms,而RTX的定時(shí)器時(shí)鐘分辨率為100 ns,最低定時(shí)器周期為 100 μs。

RTX被實(shí)現(xiàn)為一套庫(kù)的集合 (動(dòng)態(tài)庫(kù)與靜態(tài)庫(kù)),RTSS(Real-Time Sub System)作為 Windows 的內(nèi)核設(shè)備驅(qū)動(dòng)與HAL擴(kuò)展,其主要目的是管理實(shí)時(shí)任務(wù)的強(qiáng)占運(yùn)行,為應(yīng)用提供各種便利,快速響應(yīng)外部事件,實(shí)現(xiàn)實(shí)時(shí)處理。RTSS通過(guò)RtWinAPI動(dòng)態(tài)庫(kù)的實(shí)時(shí)API提供對(duì)外部對(duì)象的訪問(wèn)方法。RtWinAPI可以被標(biāo)準(zhǔn)Win32環(huán)境和RTSS環(huán)境調(diào)用,將Win32程序轉(zhuǎn)化為RTX程序只需要重新鏈接一套不同的庫(kù),Windows服務(wù)控制管理器直接將RTX進(jìn)程和動(dòng)態(tài)鏈接庫(kù)(DLL)的可執(zhí)行映像裝入內(nèi)核的不分頁(yè)內(nèi)存中。

RTX的主要體系結(jié)構(gòu)如圖1所示。

圖1 RTX體系架構(gòu)

2 RTX下驅(qū)動(dòng)程序開發(fā)

2.1 在RTX環(huán)境中導(dǎo)入硬件設(shè)備

大多數(shù)硬件設(shè)備的驅(qū)動(dòng)程序,都是基于Windows環(huán)境開發(fā)的,無(wú)法在RTX環(huán)境中使用。如果要在RTX環(huán)境中訪問(wèn)此類設(shè)備,就必須把該設(shè)備導(dǎo)入到RTX環(huán)境中,編寫專門的驅(qū)動(dòng)程序。

如圖2所示 (以RTX8.1.2版本為例),打開RTX Properties面板,選擇Hardware選項(xiàng),在Devices欄點(diǎn)擊Setting按鈕,在彈出的Pnp Devices Setting面板上可以看到當(dāng)前Windows系統(tǒng)下所有的即插即用設(shè)備,選擇需要在RTX下訪問(wèn)的設(shè)備,點(diǎn)擊鼠標(biāo)右鍵,在彈出的菜單中選擇Add RTX INF Support,確認(rèn)后在Windows設(shè)備管理器中即可把設(shè)備導(dǎo)入到RTX環(huán)境中(圖2)。

圖2 RTX中導(dǎo)入硬件設(shè)備

2.2 編寫RTX環(huán)境下設(shè)備驅(qū)動(dòng)程序

RTX下編寫驅(qū)動(dòng)程序相對(duì)簡(jiǎn)單,因?yàn)閼?yīng)用程序可以直接訪問(wèn)硬件設(shè)備的I/O端口。以PCI設(shè)備為例,RTX提供了相關(guān)的頭文件與庫(kù)函數(shù),開發(fā)人員可以使用RTX Driver Wizard創(chuàng)建驅(qū)動(dòng)程序框架,在創(chuàng)建的過(guò)程中根據(jù)應(yīng)用需要可以添加中斷服務(wù)程序,共享中斷,I/O訪問(wèn),內(nèi)存映射等功能函數(shù)。創(chuàng)建好的驅(qū)動(dòng)程序包含2個(gè)重要部分:

(1)初始化設(shè)備。RTX下的硬件驅(qū)動(dòng)程序首先使用DeviceSearch()函數(shù)查找PCI設(shè)備,通過(guò)指定的廠商號(hào)與設(shè)備號(hào),遍歷查找所有的PCI的插槽,找到匹配的設(shè)備以后,記錄下當(dāng)前的總線編號(hào)、內(nèi)存與I/O端口的基地址以及相關(guān)的中斷資源。

(2)內(nèi)核與硬件的數(shù)據(jù)交換。開發(fā)驅(qū)動(dòng)程序的目的就是為了與硬件設(shè)備進(jìn)行數(shù)據(jù)交換,但硬件設(shè)備讀寫數(shù)據(jù)使用的是物理地址,而應(yīng)用程序讀寫數(shù)據(jù)使用的是虛擬地址,RTX中提供RtTranslateBusAddress()和 RtMapMemory()函數(shù)來(lái)完成物理地址到虛擬地址的轉(zhuǎn)化,從而完成應(yīng)用程序與硬件設(shè)備的數(shù)據(jù)交換。

3 RTX與Windows的IPC通訊

一般的設(shè)備控制程序需要有一個(gè)良好的圖形操作界面,RTX作為一個(gè)嵌入式的實(shí)時(shí)系統(tǒng),并不直接提供支持類似MFC的圖形界面類庫(kù)。因此,在一個(gè)通用的控制程序中RTX常用來(lái)完成實(shí)時(shí)控制部分,而Windows用來(lái)完成與用戶的交互部分,二者之間通過(guò)共享內(nèi)存與互斥信號(hào)量來(lái)完成數(shù)據(jù)通訊。

3.1 共享內(nèi)存

共享內(nèi)存是在內(nèi)存中開辟一塊指定大小的區(qū)域,不同的進(jìn)程都可以共享此區(qū)域,包括RTSS進(jìn)程與Win32進(jìn)程都可以對(duì)其進(jìn)行讀寫訪問(wèn)。要使用共享內(nèi)存通訊,首先必須創(chuàng)建共享內(nèi)存對(duì)象,然后在另外一個(gè)需要通訊的進(jìn)程中打開該共享內(nèi)存對(duì)象。RTX中使用RtCreateSharedMeory()和RtOpenSharedMeory()來(lái)實(shí)現(xiàn)共享內(nèi)存的創(chuàng)建與打開。通常情況下是在RTX應(yīng)用程序中創(chuàng)建一個(gè)共享內(nèi)存對(duì)象,創(chuàng)建的同時(shí)會(huì)產(chǎn)生一個(gè)該對(duì)象的句柄,其他進(jìn)程通過(guò)獲取該句柄來(lái)完成不同進(jìn)程間的數(shù)據(jù)傳輸。

3.2 互斥信號(hào)量

由于Windows與RTX都可以對(duì)共享內(nèi)存進(jìn)行讀寫操作,為避免出現(xiàn)讀寫沖突,所以需要引入信號(hào)量機(jī)制。當(dāng)RTX需要訪問(wèn)共享內(nèi)存時(shí),首先會(huì)向共享內(nèi)存發(fā)送一個(gè)請(qǐng)求訪問(wèn)的信號(hào)量,共享內(nèi)存收到此信號(hào)量后會(huì)向Windows發(fā)送一個(gè)詢問(wèn)的信號(hào)量。如果Windows此時(shí)已經(jīng)準(zhǔn)備好,就會(huì)給共享內(nèi)存發(fā)回一個(gè)準(zhǔn)備好的信號(hào)量,共享內(nèi)存收到后再給RTX發(fā)回一個(gè)可以訪問(wèn)的信號(hào)量,RTX就可以對(duì)共享內(nèi)存進(jìn)行讀寫操作了。同理,當(dāng)Windows需要訪問(wèn)共享內(nèi)存時(shí),也需要同樣的操作,如圖3所示。

4 RT-TCP/IP

圖3 Windows與RTX通訊

在一臺(tái)主機(jī)上,RTX與Windows之間可以通過(guò)共享內(nèi)存來(lái)通訊。在實(shí)際應(yīng)用當(dāng)中,有時(shí)候需要實(shí)現(xiàn)2臺(tái)主機(jī)之間互相通訊,普通的以太網(wǎng)通訊無(wú)法保證數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性。但RTX提供了實(shí)時(shí)性能較好的RT-TCP/IP,它通過(guò)RTSS實(shí)現(xiàn)對(duì)底層網(wǎng)卡的實(shí)時(shí)支持。RTX在子系統(tǒng)中建立獨(dú)立的TCP/IP協(xié)議。該協(xié)議棧建立在NetSilicon公司的Fusion TCP/IP協(xié)議棧的基礎(chǔ)上,為了實(shí)現(xiàn)更好的實(shí)時(shí)性能,RTX對(duì)TCP/IP協(xié)議棧作了部分修改。RTX將TCP/IP協(xié)議的實(shí)現(xiàn)和硬件的操作集成在網(wǎng)卡的實(shí)時(shí)驅(qū)動(dòng)中,用戶無(wú)需加載額外的鏈接庫(kù)。RT-TCP/IP給終端用戶提供了許多重要參數(shù)設(shè)置,使其更加適合實(shí)時(shí)傳輸。另外,RTX開放了大量網(wǎng)卡的驅(qū)動(dòng)程序源代碼,給用戶開發(fā)RTX下的網(wǎng)絡(luò)通訊程序帶來(lái)了極大的幫助。

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

RTX可靠的實(shí)時(shí)性已經(jīng)在眾多的平臺(tái)上得到了驗(yàn)證,本文簡(jiǎn)單介紹了RTX下開發(fā)實(shí)時(shí)控制程序的一個(gè)大概流程。由于RTX只是對(duì)Windows系統(tǒng)的一個(gè)擴(kuò)展,并不對(duì)Windows系統(tǒng)本身做任何改變,而且RTX對(duì)微軟編譯環(huán)境的支持,使得需要更高實(shí)時(shí)性能的Windows程序可以很容易地移植到RTX下,相信RTX會(huì)在實(shí)時(shí)控制中得到更多的應(yīng)用。

[1] 劉心語(yǔ),楊煜普.基于RTX實(shí)時(shí)環(huán)境的1394驅(qū)動(dòng)程序開發(fā)[B].微計(jì)算機(jī)信息,2009,25(11-2):75-76.

[2] 方澄,徐琦.基于RTX的飛行模擬器分布式實(shí)時(shí)仿真系統(tǒng)[A].測(cè)控技術(shù),2007,26(7):86-87.

[3] 劉曉川,樊子明.Windows2 000(X P)+R TX的實(shí)時(shí)性分析與測(cè)試[J].艦船電子程,2007,27(6):135-138.

[4] 付文芳,張萍.RTX下PCI9052驅(qū)動(dòng)程序的開發(fā)[A].科技廣場(chǎng),2006(8):97-100.

[5] 呂瑛,陳懷民等。RTX環(huán)境下某智能串口卡的驅(qū)動(dòng)開發(fā)[A].科學(xué)技術(shù)與工程,2007,7(5):761-764.

猜你喜歡
信號(hào)量共享內(nèi)存驅(qū)動(dòng)程序
通過(guò)QT實(shí)現(xiàn)進(jìn)程間的通信
Nucleus PLUS操作系統(tǒng)信號(hào)量機(jī)制的研究與測(cè)試
計(jì)算機(jī)硬件設(shè)備驅(qū)動(dòng)程序分析
基于Linux內(nèi)核的文件服務(wù)器模型的研究與構(gòu)建
基于PCI總線的多處理器協(xié)同機(jī)制研究
硬件信號(hào)量在多核處理器核間通信中的應(yīng)用
基于MPC8280的CPU單元與內(nèi)部總線驅(qū)動(dòng)程序設(shè)計(jì)
一種高效RTAI 共享內(nèi)存管理層的研究與實(shí)現(xiàn)*
μC/OS- -III對(duì)信號(hào)量的改進(jìn)
Linux操作系統(tǒng)信號(hào)量機(jī)制的實(shí)時(shí)化改造