• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      多路并行ADS1282實時地震數(shù)據(jù)采集內(nèi)核驅(qū)動設計

      2019-09-19 06:08:422
      測控技術 2019年2期
      關鍵詞:數(shù)據(jù)文件應用層實時性

      2

      (1.西南科技大學 信息工程學院,四川 綿陽 621010; 2.四川理工學院 人工智能重點實驗室,四川 自貢 643000;3.成都理工大學 地質(zhì)災害防治與地質(zhì)環(huán)境保護國家重點實驗,四川 成都 610059)

      隨著地震勘探技術向高密度空間采樣和多波多分量數(shù)據(jù)采集方向發(fā)展[1],多路并行地震數(shù)據(jù)采集成為地震勘探的關鍵技術環(huán)節(jié)。傳統(tǒng)的地震數(shù)據(jù)采集站一般是野外工作的嵌入式系統(tǒng),無關具體平臺,其采集驅(qū)動實現(xiàn)方式一般分為裸機驅(qū)動[2-3]、帶操作系統(tǒng)的應用層驅(qū)動[4-5]和操作系統(tǒng)之下的內(nèi)核驅(qū)動[6-7]。但是裸機驅(qū)動需要操作大量底層寄存器,不適用于大量地震數(shù)據(jù)采集的采集與傳輸,而應用層驅(qū)動又需依靠頻繁的API系統(tǒng)調(diào)用接口實現(xiàn)硬件控制,且控制實時性差。若單道數(shù)據(jù)采集的系統(tǒng)調(diào)用量過大,實時性低,占用大量CPU、內(nèi)存等資源,就會嚴重限制地震采集單元向多通道、大數(shù)據(jù)量的方向發(fā)展。

      針對上述問題,在Linux 3.0.35內(nèi)核下,以總線設備驅(qū)動模型為指導[8],提出一種單路SPI驅(qū)動多路ADC并行采集的驅(qū)動,并在驅(qū)動實現(xiàn)過程中簡化系統(tǒng)調(diào)用,減小內(nèi)核和用戶空間的切換頻率,然后通過歸類并分離實現(xiàn)實時操作與非實時操作的改進方式,增加數(shù)據(jù)采集單元的工作效率,提高其數(shù)據(jù)可靠性。

      1 多路并行地震采集單元結(jié)構(gòu)介紹

      地震采集站主要是用于地震資料的采集、存儲與傳輸[9]。本地震數(shù)據(jù)采集單元主要由前級MEMS檢波器組、濾波電路、多路獨立ADC并行采集單元、多路復用接口和Cortex-A9處理器及其外圍存儲單元構(gòu)成。圖1為地震數(shù)據(jù)采集單元的總體結(jié)構(gòu)。針對目前存在的實時性不高以及系統(tǒng)調(diào)用頻繁問題,本文的ADC數(shù)據(jù)采集驅(qū)動主要由Cortex-A9處子框中的用戶空間實現(xiàn)轉(zhuǎn)到內(nèi)核空間實現(xiàn)。

      圖1 地震數(shù)據(jù)采集單元的系統(tǒng)總體結(jié)構(gòu)

      2 ADS1282地震數(shù)據(jù)采集內(nèi)核驅(qū)動設計

      2.1 內(nèi)核驅(qū)動程序設計

      在Linux內(nèi)核中,利用Linux內(nèi)核的SPI子系統(tǒng)總線掛接外設ADS1282單元[10]后,還需:① 在板級支持文件中填寫SPI口參數(shù)信息(如時鐘、電平模式等)和ADS1282與Cortex-A9的GPIO連接信息等,配置相關的網(wǎng)絡服務、編譯內(nèi)核映像uImage和BootLoader,制作文件系統(tǒng)燒寫系統(tǒng)并重啟;② 設備注冊,將ADS1282外設單元抽象成字符設備掛載到SPI總線上,填充設備描述結(jié)構(gòu),申請設備號、內(nèi)存等資源,使用cdev_init實現(xiàn)設備名和描述結(jié)構(gòu)的互聯(lián);③ 驅(qū)動注冊,注冊與設備同名的驅(qū)動名,填充驅(qū)動描述結(jié)構(gòu),申請中斷、異步通知、乒乓緩存等資源。

      ADS1282地震數(shù)據(jù)采集驅(qū)動的內(nèi)核實現(xiàn)流程如圖2所示。首先,初始化ADS1282外設,按照SPI協(xié)議發(fā)送命令配置RESET、PWDN、SYNC、DIN引腳,讀SampleRate(采樣率S)和SecondPerFile(每ns寫1個地震文件)參數(shù),準備進入連續(xù)采集狀態(tài);然后,Linux中斷頂半部等待DRDY信號中斷,底半部利用SPI單字節(jié)讀寫函數(shù)依次將數(shù)據(jù)寫入乒乓緩存;最后,數(shù)據(jù)采集完成,創(chuàng)建內(nèi)核線程,直接調(diào)用具體的VFS文件系統(tǒng)讀寫函數(shù)實現(xiàn)乒乓緩存到地震數(shù)據(jù)文件中的拷貝,并采用異步信號(軟中斷)通知應用程序數(shù)據(jù)寫文件完成。

      圖2 ADS1282內(nèi)核驅(qū)動實現(xiàn)流程框圖

      2.2 內(nèi)核驅(qū)動對應的應用測試程序

      在用戶空間測試驅(qū)動和設備能否正常工作。首先打開ADS1282設備;其次讀取配置文件中SampleRate和SecondPerFile參數(shù),并通過ioctl函數(shù)實現(xiàn)應用程序?qū)?nèi)核參數(shù)的控制;最后阻塞等待異步通知,添加文件頭地震數(shù)據(jù)文件(包括采集站IP、采集時間戳等信息)。此外,應用程序還提供了“停止采集”命令控制接口,用于用戶終止ADC連續(xù)采集。驅(qū)動測試應用程序流程圖如圖3所示。

      3 ADS1282地震數(shù)據(jù)采集內(nèi)核驅(qū)動的實時性優(yōu)化技術

      3.1 系統(tǒng)調(diào)用的簡化過程

      系統(tǒng)調(diào)用把應用程序的請求傳給內(nèi)核,調(diào)用相應的內(nèi)核函數(shù)完成所需的處理,再將處理結(jié)果返回[11]。本文主要在GPIO中斷控制和寫地震數(shù)據(jù)文件部分實現(xiàn)了系統(tǒng)調(diào)用的簡化。

      圖3 驅(qū)動測試應用程序流程圖

      針對常規(guī)的嵌入式應用層驅(qū)動不能如裸機般直接對GPIO進行方向操作或是電平置高置低的問題,采用內(nèi)核中斷頂半部與底半部相結(jié)合[12]的方式減少了大量的系統(tǒng)調(diào)用。應用程序只能通過文件I/O方式將待用的GPIO引腳從內(nèi)核導出,產(chǎn)生/sys/class/gpio/gpioN目錄,對其中value文件進行讀寫實現(xiàn)gpio中斷控制、電平控制等。而本驅(qū)動的DRDY引腳與Cortex-A9直連,中斷頂半部通過直接讀取DRDY硬件脈沖來簡化文件I/O的系統(tǒng)調(diào)用,且避免了由于select函數(shù)輪詢value文件值延遲而造成的數(shù)據(jù)采集不實時問題。

      針對寫地震數(shù)據(jù)文件部分存在大量系統(tǒng)調(diào)用的問題,為了實現(xiàn)內(nèi)核空間到用戶空間的數(shù)據(jù)拷貝,常用的方式是內(nèi)核使用copy_to_user函數(shù)結(jié)合應用層write系統(tǒng)調(diào)用,優(yōu)化方式主要由內(nèi)核和用戶空間采用mmap內(nèi)存映射方式實現(xiàn)數(shù)據(jù)傳輸,但要頻繁進行內(nèi)存映射與解映射。因此,本驅(qū)動直接在數(shù)據(jù)采集完成后,在內(nèi)核中調(diào)用具體的VFS(虛擬文件系統(tǒng))讀寫函數(shù)ext3_file_operations結(jié)構(gòu)的do_sync_write函數(shù)直接將緩存數(shù)據(jù)寫入文件,實現(xiàn)寫文件的同時省略了從write到VFS讀寫函數(shù)的調(diào)用過程。

      3.2 實時與非實時操作的分離

      根據(jù)實時性對地震數(shù)據(jù)采集驅(qū)動實現(xiàn)的必要操作歸類,硬實時部分主要是對DRDY控制與多路數(shù)據(jù)的快速緩存,軟實時操作包括將數(shù)據(jù)從緩存存入文件,加入系統(tǒng)時間戳,并用異步通知信號告知應用程序數(shù)據(jù)寫文件完成,非實時操作主要是給數(shù)據(jù)文件添加IP地址等文件頭。

      本驅(qū)動在中斷頂半部函數(shù)中實現(xiàn)了對DRDY的實時硬件監(jiān)控,在底半部實現(xiàn)多路數(shù)據(jù)的乒乓緩存。由于地震數(shù)據(jù)的高精度時間同步要求,在單個文件采集開始或者完成時均須加上當前的系統(tǒng)時間,涉及到引起阻塞或睡眠的函數(shù),因此不能直接在頂半部中緩存數(shù)據(jù)。而添加文件頭等非實時操作便由應用程序在監(jiān)測到異步信號后再對數(shù)據(jù)文件進行完善。由于異步通知的引入避免了應用程序一直輪詢設備狀態(tài),更提高了本驅(qū)動的實時性。

      4 ADS1282內(nèi)核驅(qū)動測試及分析

      以i.mx6q[13]Cortex-A9處理器為例,搭載3路32位A/D芯片ADS1282,在Linux 3.0.35內(nèi)核下進行了采集驅(qū)動的實現(xiàn)。采集單元硬件連線如圖4所示。測試設置SPI主時鐘為2 MHz,采樣率SampleRate為4000 Hz,SecondPerFile為5 s,每個地震數(shù)據(jù)文件由3×20000個采樣點組成。

      圖4 地震數(shù)據(jù)采集單元硬件連接圖

      4.1 ADS1282內(nèi)核驅(qū)動功能測試

      測試單道ADS1282的數(shù)據(jù)采集功能,并采用Matlab讀取采集的地震數(shù)據(jù)文件,繪圖顯示波形曲線如圖5所示。

      ① 將ADS1282差分輸入端直接短接,測試采集板等效輸入噪聲水平及其幅頻曲線,如圖5(a)和圖5(b)所示;

      ② 輸入100 Hz 1 mV的標準正弦波信號,測試ADS1282采集效果及其幅頻曲線,如圖5(c)和圖5(d)所示;

      ③ 輸入人工敲擊地震波信號,測試ADS1282采集信號及其幅頻曲線,如圖5(e)和圖5(f)所示。

      4.2 單次寫地震數(shù)據(jù)文件耗時測試

      對比文件IO方式實現(xiàn)的應用層驅(qū)動與本內(nèi)核驅(qū)動對單次寫地震數(shù)據(jù)文件的耗時情況,可繪制圖6所示兩種驅(qū)動完成單次采集的耗時對比圖。

      圖5 ADS1282內(nèi)核驅(qū)動功能測試

      圖6 兩種驅(qū)動單次采集操作的耗時對比

      實驗采用內(nèi)核驅(qū)動和應用層驅(qū)動分別采集100個數(shù)據(jù)文件。由圖6分析可知,相對于傳統(tǒng)的應用層驅(qū)動,內(nèi)核驅(qū)動確實減少了系統(tǒng)調(diào)用,同時提高了數(shù)據(jù)傳輸速度,完成同樣的采集、數(shù)據(jù)轉(zhuǎn)換、存儲操作,內(nèi)核驅(qū)動相較于應用程序用時少了約90 ms,效率更高。根據(jù)4000 Hz的采樣率計算,DRDY信號間隔約250 μs,多耗時90 ms意味著寫文件的操作會影響ADC采集,甚至會丟失有效地震信號。

      4.3 系統(tǒng)調(diào)用分析

      采用統(tǒng)計分析的方式,對系統(tǒng)調(diào)用的減少量進行分析。實驗采用應用層驅(qū)動和內(nèi)核驅(qū)動各采集20000個采樣點時各類系統(tǒng)調(diào)用次數(shù)的總量,如表1所示。

      根據(jù)統(tǒng)計結(jié)果分析,內(nèi)核驅(qū)動程序和測試程序部分的系統(tǒng)調(diào)用主要集中在測試程序中打開設備,ioctl設備參數(shù)以及系統(tǒng)時鐘獲取部分,因此明顯比ADS1282應用層驅(qū)動減少了各類系統(tǒng)調(diào)用的次數(shù)。而應用層驅(qū)動的系統(tǒng)調(diào)用量主要集中在查詢與GPIO相連的DRDY_value文件和寫地震數(shù)據(jù)文件部分,因此,通過內(nèi)核驅(qū)動直接調(diào)用具體的VFS寫函數(shù)而非在用戶空間調(diào)用write系統(tǒng)調(diào)用的方式便可實現(xiàn)系統(tǒng)調(diào)用量的大大降低,從而提高采集的實時性。

      4.4 多路擴展性分析

      根據(jù)ADS1282手冊可知,其支持的SPI時鐘為2~16 MHz,讀寫1 bit數(shù)據(jù)耗時t為62.5 ns~0.5 μs,而采樣率為S,即DRDY信號間隔為1/S。查閱ADG804手冊可知,其開關快速切換時間小于25 ns,若忽略采集時通道間切換時間,則其通道可擴展的理論最大道數(shù)N=1/(S·32·t)。以SPI時鐘2 MHz,采樣率4 kHz為例,其通道可擴展數(shù)N=1/(4000×32×0.5×10-6),約15道。實測一個DRDY間隔(250 μs)內(nèi),采集3路數(shù)據(jù)加上3路通道切換耗時60~65 μs,則該地震數(shù)據(jù)采集單元可擴展成12路ADC同時采集。

      表1 兩種驅(qū)動系統(tǒng)調(diào)用量統(tǒng)計

      5 結(jié)束語

      本文設計了一種基于Linux的ADC地震數(shù)據(jù)采集內(nèi)核驅(qū)動,支持外部3路ADS1282并行地震數(shù)據(jù)采集。通過在內(nèi)核驅(qū)動實現(xiàn)過程中簡化系統(tǒng)調(diào)用過程,歸類實時性與非實時性操作,解決了地震數(shù)據(jù)采集過程中應用層驅(qū)動存在系統(tǒng)調(diào)用頻繁、硬件控制實時性不高以及數(shù)據(jù)采集效率低下等問題。測試部分,在i.mx6q平臺上、Linux 3.0.35內(nèi)核下,首先完成了ADS1282內(nèi)核驅(qū)動的功能測試,并給出了采集驅(qū)動的功能測試;其次給出了驅(qū)動寫數(shù)據(jù)文件的耗時測試,根據(jù)耗時減少說明內(nèi)核驅(qū)動的實時性有所提高;最后統(tǒng)計了應用層驅(qū)動和內(nèi)核驅(qū)動的系統(tǒng)調(diào)用量,隨后給出了多路擴展性分析??傊?,本驅(qū)動相較于應用層驅(qū)動所采集的數(shù)據(jù)效果好,引入的噪聲少,工作效率高,實時性更好,具備多路可擴展的特點。本設計已經(jīng)應用到復雜山地多波寬頻帶地震數(shù)據(jù)采集儀器中并取得良好的實際應用效果。

      猜你喜歡
      數(shù)據(jù)文件應用層實時性
      基于規(guī)則實時性的端云動態(tài)分配方法研究
      高技術通訊(2021年3期)2021-06-09 06:57:24
      數(shù)據(jù)文件恢復專題問答
      數(shù)據(jù)文件安全管控技術的研究與實現(xiàn)
      基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡實時性仿真
      SQL數(shù)據(jù)文件恢復工具
      航空電子AFDX與AVB傳輸實時性抗干擾對比
      基于分級保護的OA系統(tǒng)應用層訪問控制研究
      新一代雙向互動電力線通信技術的應用層協(xié)議研究
      物聯(lián)網(wǎng)技術在信息機房制冷系統(tǒng)中的應用
      一種車載Profibus總線系統(tǒng)的實時性分析
      平顺县| 清苑县| 高唐县| 甘孜| 中卫市| 平潭县| 贡觉县| 四会市| 五峰| 嘉兴市| 兴文县| 方山县| 遂川县| 宣汉县| 拉萨市| 朝阳县| 且末县| 调兵山市| 沁水县| 县级市| 沧州市| 黄梅县| 清水河县| 萨迦县| 黑龙江省| 遂平县| 涟源市| 德安县| 朝阳县| 娱乐| 兰州市| 天水市| 安吉县| 渭源县| 华蓥市| 奉化市| 安吉县| 广河县| 阜平县| 育儿| 应用必备|