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

        ?

        ACME2.0采集前端軟件升級改進(jìn)研究

        2014-04-23 07:02:04樊琦余衛(wèi)東陳文輝程剛
        測井技術(shù) 2014年2期
        關(guān)鍵詞:設(shè)備系統(tǒng)

        樊琦,余衛(wèi)東,陳文輝,程剛

        (中國石油集團(tuán)測井有限公司,陜西 西安 710077)

        0 引 言

        EILog測井系統(tǒng)的采集箱體硬件采用基于cPCI(Compact PCI)總線的體系結(jié)構(gòu),前端軟件是基于Vx Works實(shí)時(shí)操作系統(tǒng)的應(yīng)用,在采集箱體中的單板計(jì)算機(jī)上運(yùn)行,是數(shù)據(jù)采集卡和測井采集控制管 理平 臺 ACME[1](Acquisition Control Management Expert)的中間橋梁,承擔(dān)著命令下發(fā)和數(shù)據(jù)上傳的任務(wù)。伴隨著EILog系統(tǒng)大規(guī)模推廣應(yīng)用,作為核心組成部分的采集箱體也在不斷升級,以滿足不斷提升的測井作業(yè)要求。前端軟件在單板計(jì)算機(jī)和數(shù)據(jù)采集卡得到更新后,自身也需要升級來匹配硬件運(yùn)行。由此,引出了在軟硬件升級過程中遇到的精確延時(shí)和中斷管理等2個(gè)關(guān)鍵性問題。采集時(shí)序正確和運(yùn)行穩(wěn)定是保證數(shù)據(jù)采集的準(zhǔn)確性的重要因素,只有解決了這2個(gè)問題,采集前端軟件才能穩(wěn)定地通用于新舊硬件之上,采集到正確的井下數(shù)據(jù)。本文分析了問題產(chǎn)生的原因,闡述了對應(yīng)的解決方案并給出了具體的實(shí)現(xiàn)方法。改進(jìn)后的軟件在實(shí)際應(yīng)用中取得了良好的效果。

        1 Vx Works精確延時(shí)

        EILog系統(tǒng)采集箱體首批使用的是SBS公司的CT7型號單板計(jì)算機(jī),它采用Pentium III單核處理器,運(yùn)行Wind River公司的Vx Works5.4操作系統(tǒng)。EILog系統(tǒng)在高速AD采集等情況下需要微秒級的準(zhǔn)確定時(shí),而系統(tǒng)提供的延時(shí)函數(shù)在精確性方面不能滿足要求。在EILog推廣應(yīng)用初期采用簡單有效的處理方法是執(zhí)行空循環(huán)完成需要的延時(shí),即根據(jù)系統(tǒng)時(shí)鐘頻率和需要的延時(shí)計(jì)算出要執(zhí)行的空循環(huán)次數(shù)。但該方法在單板計(jì)算機(jī)更換為Advantech公司MIC3392型號以后就不再適用,處理器頻率的提升和核心的增加以及其他因素使得計(jì)算空循環(huán)的次數(shù)變得復(fù)雜,并且這個(gè)次數(shù)在每次系統(tǒng)運(yùn)行時(shí)是在一個(gè)范圍內(nèi)波動(dòng)而不是一個(gè)固定的數(shù)值。因此,采用固定次數(shù)的空循環(huán)完成延時(shí)不再是一個(gè)可靠的解決方案。

        1.1 Vx Works系統(tǒng)提供的延時(shí)方法分析

        (1)task Delay()使調(diào)用該函數(shù)的任務(wù)延時(shí)n個(gè)tick(內(nèi)核時(shí)鐘周期)。該方法缺點(diǎn)是task Delay(n)表示任務(wù)延時(shí)至第n個(gè)系統(tǒng)時(shí)鐘到來的時(shí)刻,task-Delay有接近1個(gè)tick的誤差存在。

        (2)WatchDog看門狗[2]在經(jīng)過指定的延時(shí)后,實(shí)現(xiàn)在系統(tǒng)時(shí)鐘ISR的上下文中運(yùn)行指定的程序。如果利用看門狗定時(shí)器實(shí)現(xiàn)延時(shí),則存在與task-Delay()一樣的精度上的缺陷,并且與中斷服務(wù)程序的約束一樣,看門狗定時(shí)掛接的程序編寫有一定的限制。

        (3)sleep()和nanosleep()是系統(tǒng)提供的延時(shí)函數(shù)接口。sleep()以秒為單位,nanosleep()參數(shù)可精確到納秒,但傳參是時(shí)鐘的結(jié)構(gòu)體,實(shí)際上只能做到大于或等于這個(gè)時(shí)間。因?yàn)閟leep()或nanosleep()函數(shù)延時(shí)的時(shí)間基準(zhǔn)仍是tick,調(diào)用此函數(shù)的任務(wù)處于任務(wù)延時(shí)狀態(tài),這點(diǎn)與task Delay()一致。

        (4)sys Timestamp()通過讀取該定時(shí)器當(dāng)前計(jì)數(shù)值獲取高精度定時(shí)。使用sys Timestamp Freq()函數(shù)可以得到系統(tǒng)時(shí)間的頻率,它反映的是CPU定時(shí)器的基準(zhǔn)頻率。但該法依靠查詢方式實(shí)現(xiàn),頻繁使用非常影響系統(tǒng)執(zhí)行效率。

        (5)輔助時(shí)鐘利用目標(biāo)板上CPU的另一個(gè)定時(shí)器(除了系統(tǒng)時(shí)鐘之外)中斷實(shí)現(xiàn),容易實(shí)現(xiàn)毫秒級甚至微秒級定時(shí)。但是使用上存在缺陷,不能實(shí)現(xiàn)多個(gè)任務(wù)同時(shí)調(diào)用,且需占用CPU的1個(gè)時(shí)鐘資源。

        1.2 自刻度計(jì)算的硬延時(shí)函數(shù)方案

        以上的方案有的是精度不夠,有的是應(yīng)用場合不適用,因此使用空循環(huán)實(shí)現(xiàn)精確的“硬”延時(shí)成為了一個(gè)理想的選擇。

        1.2.1 硬延時(shí)函數(shù)的設(shè)計(jì)

        實(shí)現(xiàn)該延時(shí)函數(shù)的思想是在每次調(diào)用此函數(shù)時(shí)通過系統(tǒng)提供的sysClk ReteGet()函數(shù)和tick Get()函數(shù)刻度單位時(shí)間定時(shí)循環(huán)次數(shù)。因此在第1次調(diào)用時(shí)消耗的時(shí)間比請求的時(shí)間要長很多;當(dāng)系統(tǒng)時(shí)鐘頻率變化時(shí),需要重新刻度單位時(shí)間循環(huán)次數(shù)。

        1.2.2 硬延時(shí)函數(shù)的實(shí)現(xiàn)

        硬延時(shí)函數(shù)的主要實(shí)現(xiàn)步驟為

        (1)得到要循環(huán)的定時(shí)參數(shù)u,判斷是否已有計(jì)算過delay Loop值。

        (2)如果已有delay Loop值,則直接根據(jù)送入?yún)?shù)u和delay Loop雙重循環(huán),之后結(jié)束返回。

        (3)否則根據(jù)系統(tǒng)設(shè)定的每秒tick數(shù)首次遞歸計(jì)算delay Loop。

        (4)根據(jù)遞歸結(jié)果調(diào)整一次循環(huán)條件。

        (5)根據(jù)調(diào)整后的循環(huán)條件再次遞歸計(jì)算delay Loop,在遞歸結(jié)束后即得到每微秒對應(yīng)的空循環(huán)次數(shù)。

        其中,delay Loop是要計(jì)算和使用的每微秒對應(yīng)的空循環(huán)次數(shù);u為調(diào)用函數(shù)傳遞的延時(shí)參數(shù)(單位為μs);mpt為每秒系統(tǒng)的tick數(shù)。

        下面給出實(shí)現(xiàn)代碼。

        從實(shí)現(xiàn)代碼可以看出,如果延時(shí)函數(shù)是首次調(diào)用,那么將會(huì)通過遞歸計(jì)算delay Loop,完成刻度過程會(huì)消耗稍多的時(shí)間;如果不是首次調(diào)用,則函數(shù)直接通過傳入的參數(shù)和delay Loop運(yùn)行空循環(huán)完成延時(shí)。因此,在測井采集過程還沒有開始以前調(diào)用一次延時(shí)函數(shù)時(shí)很有必要的,并且為了刻度準(zhǔn)確,避免極端情況,在首次調(diào)用應(yīng)傳入一個(gè)較大的延時(shí)參數(shù)(如1 s)計(jì)算,使delay Loop更接近真實(shí)值。

        2 相同中斷號PCⅠ設(shè)備數(shù)據(jù)采集優(yōu)化

        計(jì)算機(jī)BIOS技術(shù)的發(fā)展也使部署在PCI總線上的數(shù)據(jù)采集卡中斷分配有了變化。在使用CT7時(shí),BIOS分配給板載設(shè)備(如網(wǎng)卡等)和PCI采集卡設(shè)備的中斷號都是不同的,不存在中斷沖突處理問題。在更新為MIC3392后,為了使PCI總線可以同時(shí)掛接更多的設(shè)備,BIOS允許不同的PCI設(shè)備使用相同的中斷號,因此采集卡設(shè)備和網(wǎng)絡(luò)設(shè)備有分配到相同中斷號的可能性。

        2.1 改進(jìn)前數(shù)據(jù)采集中斷控制

        EILog之前采集數(shù)據(jù)是通過中斷號判斷數(shù)據(jù)來源于某塊采集卡,并且采集是通過“使能中斷-采集數(shù)據(jù)-關(guān)閉中斷”流程完成。

        根據(jù)上面的實(shí)現(xiàn)代碼可以發(fā)現(xiàn),這樣做會(huì)導(dǎo)致2個(gè)問題:①在關(guān)閉中斷時(shí)會(huì)將與該采集卡相同中斷的其他設(shè)備中斷關(guān)閉;②采集數(shù)據(jù)時(shí)會(huì)將相同中斷號的設(shè)備發(fā)來的中斷信號全部響應(yīng)并且轉(zhuǎn)到中斷服務(wù)程序。

        通過中斷號控制采集設(shè)備的使能與關(guān)閉已不能適用于新硬件的場合。這種在系統(tǒng)層面粗放的控制在沒有共享中斷的情況下是不會(huì)出問題的,在有中斷共享的情況下需要更精細(xì)的控制,將PCI設(shè)備的控制精確到每個(gè)獨(dú)立設(shè)備。

        2.2 PCⅠ設(shè)備配置空間簡介

        根據(jù)PCI規(guī)范[3],PCI有3個(gè)相互獨(dú)立的物理地址空間:設(shè)備存儲(chǔ)器地址空間、I/O地址空間和配置空間。配置空間是PCI所特有的1個(gè)物理空間。由于PCI支持設(shè)備即插即用,所以PCI設(shè)備不占用固定的內(nèi)存地址空間或I/O地址空間,而是由操作系統(tǒng)決定其映射的基址。

        PCI總線通過橋芯片級連。按與CPU總線所隔的橋數(shù)目和同一層總線的掃描順序,從0開始依次編號,擴(kuò)展最多到256,就是總線號;在指定的局部總線上,按硬件掃描順序從0開始依次編號,擴(kuò)展最多到32,就是設(shè)備號;在1個(gè)多功能PCI設(shè)備上,按設(shè)備上配置存儲(chǔ)區(qū)的順序從0開始依次編號,稱為功能號,每個(gè)PCI設(shè)備最多可以實(shí)現(xiàn)8種功能,一般情況只有1個(gè)功能。這3個(gè)號組合起來就可確定唯一的1個(gè)PCI設(shè)備以及該設(shè)備上的某項(xiàng)功能。通過這3個(gè)參數(shù)(可組成PCI設(shè)備標(biāo)識符)就可操作PCI設(shè)備。

        2.2.1 PCⅠ配置空間

        PCI總線規(guī)范定義的配置空間總長度為256 B,配置信息按一定的順序和大小依次存放。前64 B的配置空間稱為配置頭,對于所有的設(shè)備都一樣,配置頭的主要功能是用來識別設(shè)備、定義主機(jī)訪問PCI卡的方式(I/O訪問或者存儲(chǔ)器訪問,還有中斷信息)。其余的192 B稱為本地配置空間,主要定義卡上局部總線的特性、本地空間基地址及范圍等。

        2.2.2 PCⅠ配置空間的功能

        配置空間中配置頭里的寄存器實(shí)現(xiàn)了很多功能,這里介紹重要的3類。

        (1)設(shè)備識別

        Vendor ID:廠商ID。

        Device ID:設(shè)備ID。

        Class Code:類代碼。共3字節(jié),分別是類代碼、子類代碼、編程接口。

        Header Type:指示Header中從地址10 H到3FH區(qū)域的內(nèi)容格式,同時(shí)指示該設(shè)備是否為多功能設(shè)備。

        (2)設(shè)備控制

        Status:狀態(tài)寄存器。不同的位代表不同出錯(cuò)狀態(tài)。

        Command:指令寄存器。不同的位代表不同的含義。

        (3)基地址配置

        Base Address:基地址寄存器。它報(bào)告設(shè)備寄存器或設(shè)備RAM在I/O端口地址空間(或物理地址空間)的地址。

        2.3 基于Command寄存器的PCⅠ設(shè)備使用優(yōu)化方案

        2.3.1 Command寄存器

        Command寄存器在PCI配置頭偏移04h的位置,長度為2 B。圖1是Command寄存器每一位的說明。

        圖1 Command寄存器位說明

        除第11~15位被保留外,Command寄存器的第0~10位均有對應(yīng)的功能,表1是對每一位功能說明。

        表1 Command寄存器對應(yīng)各位功能簡要說明

        2.3.2 改進(jìn)的采集方案和實(shí)現(xiàn)

        根據(jù)PCI配置空間和表1可以發(fā)現(xiàn),欲單獨(dú)控制某一PCI設(shè)備使能與否,只要將該設(shè)備的Command寄存器的第10位進(jìn)行設(shè)置即可,而不需對這一PCI設(shè)備對應(yīng)的中斷號使能或者禁止。因此,使用Vx Works系統(tǒng)的PCI寄存器配置函數(shù)[4]即可完成采集數(shù)據(jù)時(shí)設(shè)備的禁止和使能操作。

        (1)Vx Works PCI頭配置函數(shù)簡介

        ①寫PCI配置參數(shù):

        pciConfigOut Word(p BusNo,p DeviceNo,p Func No,address,value);

        說明:將值value寫入到由總線號、設(shè)備號和功能號決定的PCI設(shè)備address地址的寄存器。

        ②讀PCI配置參數(shù):

        pciConfigIn Word(pBus No,pDeviceNo,p Func No,address,(int*)&value);

        說明:將由總線號、設(shè)備號和功能號決定的PCI設(shè)備address地址的寄存器讀出到value。

        類似地,Vx Works系統(tǒng)還提供有pciConfig Out Long()、pciConfigIn Long()、pciConfigOutByte()、pciConfigInByte()等函數(shù),它們的區(qū)別只是讀寫時(shí)的字節(jié)多少不同,用法均一樣,不再贅述。

        (2)PCI設(shè)備中斷控制代碼實(shí)現(xiàn)

        應(yīng)用上面的代碼即可以實(shí)現(xiàn)在使能和禁止采集卡中斷的發(fā)生而不會(huì)影響到與其中斷號相同的其他PCI設(shè)備,解決了前文提出的在中斷共享時(shí)使能和禁止PCI設(shè)備帶來的問題。

        3 結(jié) 論

        (1)通過對采集流程的延時(shí)算法升級和PCI采集卡精細(xì)控制的改進(jìn),升級后的EILog采集前端軟件能夠很好地運(yùn)行在新舊采集硬件上,提升了對硬件的兼容性。

        (2)硬延時(shí)算法和PCI設(shè)備控制方法具有通用性。經(jīng)過測試,改進(jìn)的軟件目前已在ACME2.0測井采集控制平臺上正式應(yīng)用并取得了良好的效果。

        [1] 陳江浩,陳文輝,余衛(wèi)東,等.ACME測井采集控制管理平臺開發(fā)與應(yīng)用 [J].石油儀器,2010,24(5):77-79.

        [2] 程敬原.Vx Works軟件開發(fā)項(xiàng)目實(shí)例完全解析 [M].北京:中國電力出版社,2005:88-90.

        [3] PCI-SIG.PCI Local Bus Specification Revision 3.0 [Z].2002:186-218.

        [4] 李貴山,戚德虎.PCI局部總線開發(fā)者指南 [M].西安:西安電子科技大學(xué)出版社,1997:110-116.

        猜你喜歡
        設(shè)備系統(tǒng)
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機(jī)系統(tǒng)
        ZC系列無人機(jī)遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
        基于MPU6050簡單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        500kV輸變電設(shè)備運(yùn)行維護(hù)探討
        性人久久久久| 日韩精品视频免费在线观看网站| 日韩亚洲中文有码视频| 国产精品激情| 国产喷水在线观看| 国产午夜福利在线播放| 亚洲AV秘 无码一区二区三区臀 | 噜噜噜色97| 国产丝袜美腿在线播放| 一本精品99久久精品77| 久久精品夜夜夜夜夜久久| 高跟丝袜一区二区三区| 一区二区二区三区亚洲| 亚洲av无码国产精品永久一区| 久久久无码一区二区三区| Jizz国产一区二区| 亚洲第一黄色免费网站| 亚洲av无码专区亚洲av伊甸园 | 亚洲人成网77777色在线播放| 日韩制服国产精品一区| 四虎精品国产一区二区三区| 亚洲熟女av一区少妇| 成人欧美一区二区三区在线 | 国产欧美日韩精品丝袜高跟鞋| 人人妻人人爽人人做夜欢视频九色| 99日本亚洲黄色三级高清网站| 中文字幕乱码亚洲一区二区三区| 无码视频在线观看| 久久精品波多野结衣中文字幕 | 中文人妻无码一区二区三区| 精品亚洲av一区二区| 亚洲国产精品成人精品无码区在线| 国内精品无码一区二区三区| 国产午夜精品久久久久| 亚洲av高清一区二区三区| 日本入室强伦姧bd在线观看| 999精品全免费观看视频| 中文乱码字幕人妻熟女人妻| 国产精品国产三级国产av品爱网| 无套内谢孕妇毛片免费看看 | 欧美日韩久久久精品a片|