999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2019-09-19 06:08:422
測控技術(shù) 2019年2期
關(guān)鍵詞:系統(tǒng)

2

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

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

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

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

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

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

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

2.1 內(nèi)核驅(qū)動(dòng)程序設(shè)計(jì)

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

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

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

2.2 內(nèi)核驅(qū)動(dòng)對(duì)應(yīng)的應(yīng)用測試程序

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

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

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

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

圖3 驅(qū)動(dòng)測試應(yīng)用程序流程圖

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

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

3.2 實(shí)時(shí)與非實(shí)時(shí)操作的分離

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

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

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

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

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

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

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

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

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

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

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

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

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

圖6 兩種驅(qū)動(dòng)單次采集操作的耗時(shí)對(duì)比

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

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

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

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

4.4 多路擴(kuò)展性分析

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

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

5 結(jié)束語

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

猜你喜歡
系統(tǒ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)
基于UG的發(fā)射箱自動(dòng)化虛擬裝配系統(tǒng)開發(fā)
半沸制皂系統(tǒng)(下)
FAO系統(tǒng)特有功能分析及互聯(lián)互通探討
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統(tǒng) 德行天下
PLC在多段調(diào)速系統(tǒng)中的應(yīng)用
主站蜘蛛池模板: 免费一级无码在线网站| 欧美a在线看| 九九这里只有精品视频| 国产精品女在线观看| 日韩国产黄色网站| 毛片免费在线视频| 日韩午夜片| 麻豆国产在线不卡一区二区| 亚洲第一中文字幕| 精品久久久久无码| 亚洲精品国产综合99久久夜夜嗨| 被公侵犯人妻少妇一区二区三区 | 亚洲中文字幕av无码区| 国产第一页屁屁影院| 伊人网址在线| 一区二区三区国产精品视频| 色综合久久88| 激情综合五月网| 国产区人妖精品人妖精品视频| 啊嗯不日本网站| 在线播放真实国产乱子伦| 国内精品久久九九国产精品| 国产自视频| 中国美女**毛片录像在线| 99在线观看国产| 久久精品波多野结衣| 国产91av在线| 99偷拍视频精品一区二区| 天堂成人在线视频| 国产黄色片在线看| 国产拍在线| 亚洲色婷婷一区二区| 精品伊人久久久大香线蕉欧美| 国产欧美日韩视频怡春院| 国产午夜一级淫片| 免费在线一区| 久久综合成人| 精品国产一二三区| 国产一区二区三区在线观看视频 | 国产h视频免费观看| 欧美一级在线播放| 99re经典视频在线| 亚洲永久免费网站| 99久久这里只精品麻豆| 亚洲人成在线精品| 国产美女视频黄a视频全免费网站| 亚洲综合精品第一页| 久久女人网| 成人亚洲国产| 亚洲人成在线精品| 97色婷婷成人综合在线观看| 欧美亚洲中文精品三区| 国产精品熟女亚洲AV麻豆| 国产哺乳奶水91在线播放| a级高清毛片| 亚洲精品午夜无码电影网| 国产激情无码一区二区免费| 欧洲欧美人成免费全部视频| 国产精品精品视频| 国产日韩AV高潮在线| 日韩麻豆小视频| 中文字幕在线观| 在线视频精品一区| 成人午夜精品一级毛片| 亚洲欧美成人| 国产精品香蕉| 97国产精品视频人人做人人爱| 国产精品手机视频一区二区| 99久久国产自偷自偷免费一区| 亚洲欧洲一区二区三区| 亚洲网综合| 国内精品一区二区在线观看| 国产午夜一级毛片| 亚洲国产成人久久精品软件| 亚洲区视频在线观看| 国产精品尤物在线| 激情六月丁香婷婷四房播| 亚洲 欧美 日韩综合一区| 国产拍揄自揄精品视频网站| 免费国产不卡午夜福在线观看| 伊人天堂网| 免费A级毛片无码免费视频|