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

        ?

        隨鉆聲波測井儀維護系統(tǒng)軟件設計

        2012-08-09 08:04:00師奕兵
        中國測試 2012年1期
        關鍵詞:驅動程序端點串口

        陳 鵬,師奕兵,張 偉

        (電子科技大學自動化工程學院,四川 成都 611731)

        0引言

        隨鉆聲波測井的數(shù)據(jù)量非常大,受到隨鉆測井傳輸速率的限制,大量的測井數(shù)據(jù)不能實時傳輸?shù)降孛嫦到y(tǒng),必須存儲在井下儀器的存儲電路中,待儀器工作起鉆后,再由上位機讀取[1]。井下儀器工作環(huán)境異常惡劣,對井下電路必須進行橡膠封裝以增強其抗震性能,這導致儀器的拆卸比較困難。為了便于測井數(shù)據(jù)的讀取以及對井下電路程序的在線升級更新,設計了隨鉆聲波測井儀維護系統(tǒng)。該系統(tǒng)通過串口和井下儀器進行通信,并通過USB或者網(wǎng)線和上位機進行通信,同時上位機能夠對井下儀器進行維護和程序更新。USB具有速度高、成本低、功耗低、使用方便、支持即插即用等優(yōu)點;以太網(wǎng)又可以做到遠程快速故障分析與處理、設備的遠程維護和數(shù)據(jù)的遠程傳輸,可以提高工作效率并降低整體成本。

        1 系統(tǒng)總體框圖

        維護系統(tǒng)與上位機和井下裝置的連接示意圖如圖1所示。

        隨鉆聲波測井儀維護系統(tǒng)的應用程序主要采用Qt進行開發(fā),應用程序主要實現(xiàn)兩部分功能:

        圖1 系統(tǒng)連接示意圖

        (1)實現(xiàn)與井下儀器的數(shù)據(jù)通信;

        (2)實現(xiàn)與上位機數(shù)據(jù)通信并響應上位機命令。

        2 Qt程序設計

        系統(tǒng)軟件采用Qt Creator進行開發(fā),Qt Creator是用于Qt開發(fā)的輕量級跨平臺集成開發(fā)環(huán)境,它提供一個專為支持跨平臺開發(fā)而設計的集成開發(fā)環(huán)境(IDE)。

        Qt最獨特之處在于它的“信號與槽”機制[2],簡言之,“信號與槽”機制就是將一個窗體里面發(fā)生的某一個事件所產生的信號與工程中任何一個窗體里面的任何一個預定義的或者程序員自定義的槽函數(shù)進行關聯(lián),關聯(lián)方法為:

        QObject::connect(signalemitter,SIGNAL(),signalreceiver,SLOT());

        編譯應用程序時應使用配置好的Qt-Embeded-Linux交叉編譯環(huán)境進行編譯,生成一個二進制可執(zhí)行程序文件,用NFS加載文件系統(tǒng)的方法啟動開發(fā)板,然后將Qt的庫文件復制到維護裝置的/lib/文件系統(tǒng)目錄下,再拷貝二進制可執(zhí)行程序文件到NFS共享目錄的文件系統(tǒng)中,即可使用命令形式啟動程序。

        3 USB從設備驅動程序

        USB(通用串行總線)的結構等在很多文獻中已有提及,該文主要涉及到USB從設備驅動程序的開發(fā)。

        系統(tǒng)是建立在Linux操作系統(tǒng)上的USB從設備,一方面需要遵循Linux設備驅動程序模型,另一方面需要配合USB Gadget設備規(guī)范。

        USB從設備驅動程序分為3個層次,USB從設備驅動程序體系圖如圖2所示,從底層向上分別是設備控制器(UDC)驅動程序層、Gadget API和Gadget驅動程序層[3]。

        設備控制器驅動程序層直接和硬件通信,不同的設備控制器硬件有不同的設備控制器驅動程序。Gadget API是對硬件控制的抽象層,是Gadget驅動程序的編程接口,它將Gadget驅動程序的控制傳遞給具體的設備控制器硬件驅動程序。

        圖2 USB從設備驅動程序層次圖

        系統(tǒng)采用三星公司的s3c2440芯片,其中集成了USB從設備控制器,通過對Gadget驅動程序進行編寫并通過USB從設備控制器與USB主機連接,實現(xiàn)設備功能。

        在驅動程序激活之前需要對各個端點進行配置[4],在用戶空間端點初始化的方法為:

        fd=open(“/dev/gadget/$ENDPOINT”,0_RDWR);

        status=write(fd,descriptors,sizeof(descriptors));

        此處的write函數(shù)通過調用文件操作函數(shù)集ep_config_operations中的ep_config函數(shù)建立端點配置。函數(shù)主要功能是使控制器端點有合適的最大包尺寸等配置,以分別適應批量、中斷、同步傳輸?shù)膫鬏敯蟆?/p>

        端點配置完成后,即可通過端點文件的文件操作函數(shù)集file_operations來對端點進行控制實現(xiàn)數(shù)據(jù)的傳輸操作,其中主要用到的重點函數(shù)有read、write、ioctl、release等,在實現(xiàn)時將這些函數(shù)分別實例化為ep_read、ep_write等。

        其中ep_read和ep_write函數(shù)實現(xiàn)端點數(shù)據(jù)與用戶空間數(shù)據(jù)之間的傳輸,ioctl函數(shù)實現(xiàn)端點的各種控制操作。

        在USB的傳輸方式中,批量傳輸可以保證數(shù)據(jù)的可靠性,當出現(xiàn)錯誤時,會要求發(fā)送方重發(fā)[5]。因而為了保證測井數(shù)據(jù)傳輸?shù)臏蚀_性,采用批量傳輸方式。

        端點寫操作函數(shù)ep_write的主體是USB從設備,將USB從設備的用戶空間的數(shù)據(jù)通過端點傳給USB主設備,ep_write用于處理一個bulk批量傳輸,函數(shù)聲明如下:

        static ssize_t ep_write(struct file*fd,const char_user*buf,size_t len,loff_t*ptr)

        函數(shù)實現(xiàn)中主要涉及參數(shù)的初始化以及內核空間的分配等工作,在write函數(shù)中調用ep_io()函數(shù)。此處的ep_io調用Gadget API函數(shù)usb_ep_queue()將讀寫請求放到端點上進行排隊,在端點上進行數(shù)據(jù)的發(fā)送和接收。

        s3c2440芯片包含了5個終端,其中包括一個控制端點即端點0和4個數(shù)據(jù)端點,控制端點的FIFO最大為16Byte,數(shù)據(jù)端點的FIFO最大為64Byte。端點進行寫操作時,大于64Byte的數(shù)據(jù)都分包發(fā)送,發(fā)送時先將發(fā)送寄存器設為只發(fā)狀態(tài),向端點對應的FIFO中不斷寫入64 Byte的數(shù)據(jù)包,發(fā)送完成后即將發(fā)送寄存器恢復為可用狀態(tài)。

        端點讀操作函數(shù)ep_read和ep_write有類似的操作,只是數(shù)據(jù)操作方向相反。在端點進行讀操作時,先通過ep_read函數(shù)中傳入的用戶空間接收數(shù)據(jù)的地址,一直等待數(shù)據(jù)接收,接收完成后便喚醒等待,重新進入可用狀態(tài)。

        4 基于Linux的網(wǎng)絡編程

        測井儀維護系統(tǒng)與PC通過網(wǎng)絡連接時,使用socket套接字編程,系統(tǒng)將作為服務器端,PC將作為客戶端進行通信。

        系統(tǒng)中要求測井數(shù)據(jù)的傳輸準確無誤,所以選用TCP/IP協(xié)議族傳輸層上的TCP協(xié)議。相對于UDP協(xié)議,TCP為應用程序提供可靠的通信連接,通過各種機制來減少錯誤發(fā)生的概率[6],可靠性比較高。使用基于TCP協(xié)議的流式socket(SOCK_STREAM)進行網(wǎng)絡編程,保證了測井數(shù)據(jù)傳輸?shù)恼_性和順序性。

        網(wǎng)絡通信的程序流程圖如圖3所示。

        首先,建立自己的套接口:

        s=socket(AF_INET,SOCK_STREAM,0)

        該函數(shù)建立指定地址格式、數(shù)據(jù)類型和協(xié)議下的套接口。

        bind(s,(struct sockaddr*)&server,sizeof(server))

        該函數(shù)將建立服務器本地的半相關,其中,server是sockaddr_in結構,其成員描述了本地端口號和本地主機地址,經(jīng)過bind()將服務器進程在網(wǎng)絡上標識出來。

        然后建立連接。首先調用listen()函數(shù)表示開始監(jiān)聽,再通過accept()調用等待接收連接。

        ns=accept(s,(struct sockaddr*)&client,&namelen))

        圖3 網(wǎng)絡通信服務器端流程圖

        accept()阻塞等待請求隊列中的請求,一旦有連接請求,該函數(shù)就建立一個和s有相同屬性的新的套接口。

        接下來,就可以按照以下格式接收和發(fā)送數(shù)據(jù)了。

        recv(ns,buf,1024,0)

        send(ns,buf,pktlen,0)

        recv從ns(建立連接的套接口)接收數(shù)據(jù)放入buf中,send則將buf中的數(shù)據(jù)發(fā)送給ns。

        最后,調用close()關閉套接口。

        5 串口通信

        在該設計中,UART口與井下儀器電路板的SCI口相連,讀取井下儀器的測井數(shù)據(jù),將數(shù)據(jù)讀入緩存。在Linux系統(tǒng)中,串口屬于字符型設備,位于“/dev”目錄下,設備名分別為“/dev/ttyS0”,“/dev/ttyS1”,“/dev/ttyS2”。在Linux下對設備的操作方法與對文件的操作方法是一樣的,對串口的讀寫可以使用簡單的 open()、read()和 write()函數(shù)來完成,但是對串口的其他參數(shù)需要另作配置[7]。對struct termios結構體的各成員值進行設置,波特率設置為115.2kb/s,傳輸協(xié)議為:1個起始位+8個數(shù)據(jù)位+1個停止位,無奇偶校驗位。

        6 系統(tǒng)工作流程

        應用程序工作流程圖如圖4所示。維護系統(tǒng)接收上位機傳送過來的命令并將命令傳給井下儀器。

        命令分為以下兩種:

        (1)讀取數(shù)據(jù);

        (2)井下儀器在線升級。

        6.1 上位機讀取數(shù)據(jù)

        井下儀器在接收到維護系統(tǒng)通過串口發(fā)送的數(shù)據(jù)傳輸命令后,就開始將存儲在存儲器中的測井數(shù)據(jù)通過SCI上傳。維護系統(tǒng)用串口讀取到數(shù)據(jù)后,經(jīng)過串口接收單元把串口幀還原出數(shù)據(jù),存儲到數(shù)據(jù)緩沖區(qū),然后讀取數(shù)據(jù)緩沖區(qū)的數(shù)據(jù),經(jīng)過USB口或網(wǎng)口發(fā)送至上位機。

        6.2 井下儀器在線升級

        PC可以通過維護系統(tǒng)直接對井下儀器進行必要的維護,實現(xiàn)對CPLD的快速在線配置,并使用串口模擬JTAG口燒寫DSP程序。

        6.2.1 配置CPLD

        基于ARM的嵌入式Linux中對CPLD進行JTAG配置,必須使用.jam或者.jbc格式的配置文件和標準測試與編程語言(Standard Test And Programming Language,STAPL)標準。由于用 Altera 公司的QuartusⅡ集成開發(fā)環(huán)境生成配置文件,默認產生.sol和.pof格式的配置文件,必須進行必要的轉換。

        Jam STAPI是Altera公司提供的支持STAPL的套件。使Jam STAPI進行配置包含兩部分,Jam Player(Jam解釋器或者稱為Jam虛擬機)和Jam配置文件。Jam Player運行在微處理器中,讀取Jam文件并解析Jam文件表達的內容,在JTAG接口上產生用于配置的二進制數(shù)據(jù)流并讀取反饋數(shù)據(jù)。

        Altera公司提供的Jam Player源程序文件包含了DOS、Windows和Unix 3種平臺的代碼。在類似Unix的Linux平臺中使用,必須進行定制和移植。

        將Jam Player移植到嵌入式Linux中,主要進行下列的定制:

        (1)更改平臺預定義環(huán)境,添加預處理語句,去除不必要的源代碼;

        (2)將JTAG信號映射到具體硬件引腳;

        (3)定制錯誤信息輸出方式;

        (4)根據(jù)具體微處理器的處理能力,定制延時函數(shù)。

        6.2.2 燒寫DSP

        井下儀器電路部分的DSP采用的是TI公司的TMS320F28335,傳統(tǒng)方式是基于JTAG的燒寫技術,但在隨鉆聲波測井儀中,欲使用JTAG接口則需對測井儀進行拆卸,難以實現(xiàn)在線燒寫。所以在此處利用該系統(tǒng)通過串口燒寫技術來實現(xiàn)DSP的程序更新[8-9]。

        DSP程序更新示意圖如圖5所示。

        圖4 應用程序流程圖

        圖5 DSP程序更新示意圖

        遠程燒寫的過程分為以下3個步驟:

        (1)上位機軟件端將CCS開發(fā)環(huán)境中的通用目標文件(COFF文件)轉化為測井儀升級系統(tǒng)特定格式的二進制文件(BIN文件)。

        (2)測井儀維護系統(tǒng)將二進制文件下發(fā)至測井儀,這個過程等同于維護系統(tǒng)向測井儀發(fā)送采集命令和采集參數(shù)。

        (3)測井儀中由CPLD實現(xiàn)的中控模塊對傳輸來的二進制文件進行變壓耦合、解碼并緩存到FIFO中,DSP讀取FIFO中的數(shù)據(jù)并存到外部RAM內,底層軟件負責控制Flash的燒寫,完成更新。

        7 結束語

        隨鉆聲波測井儀在井下采集的測井數(shù)據(jù)數(shù)據(jù)量大,數(shù)據(jù)結構復雜,通過USB或者網(wǎng)線進行數(shù)據(jù)傳輸將大大提高傳輸速度以及傳輸?shù)臏蚀_性,確保井下數(shù)據(jù)的不失真回顯。隨鉆測井儀的維護問題一直是困擾測井相關項目的難題,該文提出采用維護系統(tǒng)利用單一的串口線對井下儀器進行數(shù)據(jù)傳輸和在線升級,避免了對井下儀器的拆卸,直接在上位機端進行必要的操作就可以完成數(shù)據(jù)的傳輸以及系統(tǒng)的在線升級等維護工作,極大地提高了測井儀維護人員的工作效率,在實際應用中具有較高的現(xiàn)實意義和應用前景。

        [1]肖紅兵,鞠曉東,楊錦舟.隨鉆聲波測井數(shù)據(jù)存儲技術研究[J].科學技術工程,2009,6(9):3065-3068.

        [2] 成潔,盧紫毅.Linux窗口程序設計-Qt4精彩實例分析[M].北京:清華大學出版社,2008.

        [3] 閆婷婷,龍卓群.基于Linux的USB從設備驅動研究[J].電子元器件應用,2009,11(10):55-57.

        [4] Linux內核USB從設備驅動程序-shangshuwu[DB/OL].[2010-11-20].http://www.shangshuwu.cn/index.php/.

        [5] 李俊.嵌入式Linux設備驅動開發(fā)詳解[M].北京:人民郵電出版社,2008.

        [6] Donahoo M J,Calvert K L,陳宗斌,等.TCP/IP Sockets編程:C語言實現(xiàn)[M].2版.北京:清華大學出版社,2009.

        [7] 華清遠見嵌入式培訓中心.嵌入式Linux應用程序開發(fā)標準教程[M].北京:人民郵電出版社,2009.

        [8] 韓紅霞,耿愛輝.DSP外部Flash燒寫的兩種方法[J].微計算機信息,2009,23(2):170-171.

        [9] 孫秋生,陳尚峰.基于CCS的DSP片外Flash直接燒寫設計[J].電子設計工程,2009,17(1):93-95.

        猜你喜歡
        驅動程序端點串口
        非特征端點條件下PM函數(shù)的迭代根
        淺談AB PLC串口跟RFID傳感器的通訊應用
        不等式求解過程中端點的確定
        參數(shù)型Marcinkiewicz積分算子及其交換子的加權端點估計
        USB接口的多串口數(shù)據(jù)并行接收方法探索
        基丁能雖匹配延拓法LMD端點效應處理
        基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
        地礦測繪(2015年3期)2015-12-22 06:27:26
        基于并行控制的FPGA多串口拓展實現(xiàn)
        驅動程序更新與推薦
        驅動程序更新與推薦
        国产av无码专区亚洲av男同| 2022AV一区在线| 国产免费一区二区三区在线视频| 中文乱码字字幕在线国语 | 男人进去女人爽免费视频| 国产一级农村无码| 欧洲一级无码AV毛片免费| 国产精品熟女少妇不卡| 五月天中文字幕mv在线| 久热在线播放中文字幕| 中文字幕亚洲综合久久| 亚洲av日韩专区在线观看| 久久婷婷五月综合97色一本一本| 亚洲 欧美 国产 日韩 精品| 中文字幕精品亚洲无线码二区| 一级黄色一区二区三区| 免费看av在线网站网址| 亚洲人成电影在线无码| 玩弄极品少妇被弄到高潮| 亚洲另类丰满熟妇乱xxxx| 在线播放免费播放av片| 欧美成人免费观看国产| 久久狠狠髙潮曰十八女人| 十八禁视频在线观看免费无码无遮挡骂过| 国产情侣久久久久aⅴ免费| 精品国偷自产在线不卡短视频| 在线观看亚洲视频一区二区| 成人中文乱幕日产无线码| 国产精品 高清 尿 小便 嘘嘘| 亚洲一区二区三区在线观看蜜桃| 精品人妻一区二区三区在线观看| 日本午夜精品理论片a级app发布| 亚洲aⅴ无码国精品中文字慕| 麻豆三级视频网站在线观看| 色哟哟最新在线观看入口| 红杏亚洲影院一区二区三区| 日韩精品一区二区亚洲av性色 | 一本一本久久a久久精品综合麻豆| 无码一区二区三区人| 国产性虐视频在线观看| 国产成人亚洲精品|