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

?

在應(yīng)用編程技術(shù)在測井儀器中的應(yīng)用研究

2015-12-24 03:36:36黨明江魏亞軍
石油管材與儀器 2015年4期
關(guān)鍵詞:串口應(yīng)用程序測井

黨明江 魏亞軍

(1.中國電子科技集團公司第二十二研究所 河南 新鄉(xiāng) 453003;2.陜西延長石油集團油氣勘探公司 陜西 延安 716000)

0 引言

目前,固件升級技術(shù)在手機、平板等多種嵌入式設(shè)備中得到了廣泛應(yīng)用。石油測井儀器在使用過程中,有時也需要對應(yīng)用程序進行升級,以修復(fù)上一版本缺陷或增加儀器適應(yīng)能力,獲得更好的測井效果。雖然測井儀器中使用的單片機大都支持通過JTAG 方式進行在系統(tǒng)編程,但在編程時往往需要研發(fā)人員到油田現(xiàn)場,拆開儀器后使用專用的編程器才能完成對應(yīng)用程序的升級。如果使測井儀器具備在應(yīng)用編程功能,研發(fā)人員只需將新程序的代碼發(fā)送給油田用戶,油田用戶在現(xiàn)場無需拆卸儀器即可完成測井儀器應(yīng)用程序的升級,這種方式省時省力,具有較高的實用價值。

1 在應(yīng)用編程的基礎(chǔ)

C8051FXXX 系列單片機[1]是美國Cygnal 公司開發(fā)的完全集成的混合信號片上系統(tǒng)型MCU,其CIP-51 內(nèi)核的指令系統(tǒng)與8051 完全兼容,由于采用了高速、流水線結(jié)構(gòu),C8051FXXX 單片機的執(zhí)行速度比標準8051 單片機快數(shù)倍。同時該系列的單片機片上還集成了豐富的外設(shè)資源,包括ADC、DAC、PCA、定時計數(shù)器以及多種通訊接口,單片集成電路基本上可以完成應(yīng)用系統(tǒng)所需的數(shù)字通訊和控制功能,可以很好地應(yīng)用到石油測井儀器中。

C8051F040 單片機[2]是C8051FXXX 系列中一種,由于該單片機內(nèi)部集成了一個CAN2.0B 控制器,常用于需要使用CAN 總線的場合。C8051F040 單片機內(nèi)部集成了64 kB 的FLASH 存儲器,用于程序代碼和非易失性數(shù)據(jù)的存儲。Silicon Labs 或第三方提供的編程工具可以通過JTAG 接口對FLASH 存儲空間編程,實現(xiàn)單片機的在線調(diào)試和在系統(tǒng)編程。同時,單片機中的軟件也可以通過MOVX 寫指令對FLASH 存儲器編程,這是該單片機可以實現(xiàn)在應(yīng)用編程的基礎(chǔ)。

C8051F040 沒有專門的指令完成對FLASH 存儲器的寫和擦除操作,通過設(shè)置單片機內(nèi)部控制寄存器幾個相關(guān)位,就可以使用MOVX 寫指令完成對FLASH 存儲器的寫和擦除操作[3]。與FLASH 存儲器編程相關(guān)的位有三個,位于控制寄存器PSCTL 和FLSCL 中,分別是:單片機軟件寫/擦除FLASH 允許位FLWE(FLSCL. 0),F(xiàn)LASH 擦除允許位PSEE(PSCTL.1),MOVX 寫指令指向FLASH 控制位PSWE(PSCTL.0),通過設(shè)置三個位的組合方式,單片機的MOVX 寫指令可以實現(xiàn)三種不同的功能,如表1 所示。單片機復(fù)位后,這三個位都處于“0”狀態(tài),此時,MOVX 寫指令指向XRAM 空間,單片機指令不能更改FLASH 存儲器的內(nèi)容。

表1 MOVX 寫指令的三種功能

對FLASH 存儲器的寫操作只能將數(shù)據(jù)位由“1”寫為“0”,如果數(shù)據(jù)位原來是“0”,是無法通過簡單的寫指令將該位寫為“1”的,只有通過擦除操作才能將FLASH數(shù)據(jù)位置“1”。因此,在寫入新數(shù)據(jù)之前,一般都要先擦除待編程地址的數(shù)據(jù)。需要注意的是,F(xiàn)LASH 數(shù)據(jù)的擦除操作是頁擦除方式,即每執(zhí)行一次頁擦除指令,該FLASH 頁內(nèi)的所有的數(shù)據(jù)將會被擦除為0xff。C8051F040 共有64kB 的FLASH 空間,從0x0000 地址開始,每512 個連續(xù)字節(jié)為一頁,共分為128 個FLASH 頁。當設(shè)置為頁擦除方式時,對頁內(nèi)的任何一個地址執(zhí)行寫操作就可以擦除整個FLASH 頁的數(shù)據(jù),將該頁內(nèi)所有的字節(jié)都置為0xff。

實際應(yīng)用中必須注意,在執(zhí)行FLASH 寫和擦除操作時,必須禁止中斷,以防在其它中斷中使用MOVX 寫指令對FLASH 存儲器造成誤操作。下面代碼顯示了將位于XRAM 中(addrh,addrl)地址開始的512 字節(jié)寫入FLASH 中從0x1000 到0x11ff 地址的詳細過程。

2 實現(xiàn)的原理和方法

一般測井儀器中的單片機程序只包含實現(xiàn)測井功能的應(yīng)用程序,為了實現(xiàn)在應(yīng)用編程功能,單片機中必須增加引導(dǎo)裝載程序。引導(dǎo)裝載程序?qū)崿F(xiàn)以下功能:在系統(tǒng)復(fù)位后首先獲得控制權(quán),試圖與上位機取得聯(lián)系,判定是否需要升級應(yīng)用程序,如不需要升級程序并且應(yīng)用程序正確時,引導(dǎo)裝載程序?qū)⒖刂茩?quán)交給測井應(yīng)用程序完成儀器的正常測井功能。

由于引導(dǎo)裝載程序需要從上位機獲取新應(yīng)用程序的代碼,因此測井儀器需要增加與上位機的通訊接口。在實際應(yīng)用中,串口是簡單、常用且資源需求低的通訊接口,本設(shè)計中使用單片機的UART0 串口作為通訊接口。由于計算機端的串口使用的是RS232 電平標準,而C8051F040 單片機UART0 串口使用的是TTL 電平標準,因此在測井儀器中需要增加MAX232 芯片完成RS232電平和TTL 電平之間的轉(zhuǎn)換,實現(xiàn)單片機與上位機之間的雙向通訊[4]。

為實現(xiàn)在應(yīng)用編程功能,將C8051F040 單片機的程序空間劃分為兩部分:0x0000—0x0fff 為引導(dǎo)裝載程序區(qū);0x1000 以上為應(yīng)用程序區(qū)。C8051F040 單片機復(fù)位后,程序指針指向0x0000,引導(dǎo)裝載程序首先獲得控制權(quán)開始執(zhí)行。

3 引導(dǎo)裝載程序的設(shè)計

單片機使用UART0 與上位機的通訊,因此將引導(dǎo)裝載程序中實現(xiàn)應(yīng)用程序升級功能的代碼放在UART0 中斷服務(wù)程序中??紤]到引導(dǎo)裝載程序的重要性,在設(shè)計中必須充分考慮到應(yīng)用程序升級過程中可能出現(xiàn)的各種異常情況。為了確保出現(xiàn)異常情況造成升級失敗后,對測井儀器重新加電后仍能繼續(xù)完成應(yīng)用軟件的升級,設(shè)計中遵循了以下原則:

第一,在應(yīng)用程序的升級過程中,應(yīng)該避免對引導(dǎo)裝載程序空間的擦除和寫入操作。否則,如果在擦除或?qū)懭脒^程中出現(xiàn)了掉電的異常情況,將造成引導(dǎo)裝載程序的自身錯誤而導(dǎo)致系統(tǒng)自舉失敗,因此必須禁止對引導(dǎo)裝載程序所在的FLASH 空間進行寫或擦除操作。

C8051F040 有21 個中斷源,中斷向量的地址位于0x0000 到0x0100 之間,屬于引導(dǎo)裝載程序禁止更新的地址空間,為了保證使測井程序能正常使用這些中斷,引導(dǎo)裝載程序必須將這些中斷向量轉(zhuǎn)接到測井程序空間中。實現(xiàn)轉(zhuǎn)接的方法并不復(fù)雜,例如INT0 中斷的地址轉(zhuǎn)接可用下面的代碼實現(xiàn),其它中斷向量的轉(zhuǎn)接可以用同樣的方法完成。UART0 中斷只允許引導(dǎo)裝載程序使用,無須轉(zhuǎn)接到應(yīng)用程序空間中。

第二,應(yīng)用程序在升級過程中如果由于異常情況造成升級失敗時,由于應(yīng)用程序代碼不正確,運行時必然會出現(xiàn)程序跑飛的情況。為了避免此類情況的發(fā)生,引導(dǎo)裝載程序在將控制權(quán)交給應(yīng)用程序之前應(yīng)該檢查應(yīng)用程序代碼的完整性,在確認應(yīng)用程序正確后再移交控制權(quán)。在應(yīng)用程序升級過程中,引導(dǎo)裝載程序在對舊應(yīng)用程序擦除之前,首先擦除0x0e00 所在的FLASH 頁,此時0x0e00 字節(jié)單元的內(nèi)容為0xff,在新應(yīng)用程序?qū)懭胪瓿珊?,引?dǎo)裝載程序?qū)?x0e00 字節(jié)單元的內(nèi)容寫為0x55。這樣,引導(dǎo)裝載程序就可以通過讀取0x0e00 地址的值是不是0x55 來決定是否移交控制權(quán)。

第三,基于以上的設(shè)計,應(yīng)用程序的升級過程是由引導(dǎo)裝載程序在UART0 中斷服務(wù)程序中完成的。這就要求應(yīng)用程序正確設(shè)置交叉開關(guān)使能UART0 串口,并允許UART0 中斷。實際中應(yīng)用程序可能由于存在邏輯錯誤導(dǎo)致無法進入UART0 中斷,造成無法更新應(yīng)用程序的情況。為了應(yīng)對此類問題,在引導(dǎo)裝載程序啟動時增加了一個窗口期,在此窗口期中始終等待與上位機的升級握手,窗口期過去之后再將控制權(quán)移交給應(yīng)用程序。窗口期的存在延長了儀器的上電響應(yīng)時間,可根據(jù)實際情況調(diào)節(jié)窗口期時間的長短。

下面是引導(dǎo)裝載程序的流程圖,如圖1 所示。

第四,測井應(yīng)用程序的設(shè)計應(yīng)符合以下要求:

正確設(shè)置交叉開關(guān),使能UART0 串口,并允許UART0 中斷。

圖1 引導(dǎo)裝載程序流程圖

應(yīng)用程序的入口地址從0x0000 改為0x1000,各中斷向量的地址也相應(yīng)的從0x00xx 改為0x10xx。

新的應(yīng)用程序編寫完成后,經(jīng)匯編后生成二進制代碼包。在升級過程中,上位機軟件首先通過RS232 串口與測井儀器建立通訊,然后讀取二進制代碼包,將其拆分成多個512 字節(jié)的小包,將起始地址、512 字節(jié)代碼以及校驗碼等打包后發(fā)送給測井儀器并等待測井儀器頁更新完成握手,待所有待數(shù)據(jù)包都完成更新后,發(fā)送升級結(jié)束命令,完成本次應(yīng)用程序的升級。

4 結(jié) 論

本方法通過在C8051F040 單片機中植入引導(dǎo)裝載程序,只需要占用較少的單片機資源就實現(xiàn)了測井儀器的在應(yīng)用升級功能,具有很高的實用價值。本方法在設(shè)計中充分考慮了對升級過程中由于異常情況造成升級失敗的預(yù)防和處理,保證了在測井儀器應(yīng)用程序升級的可靠性。本設(shè)計對于其它類型單片機實現(xiàn)在應(yīng)用升級方法也具有重要的參考意義。

[1]潘琢金,施國君.C8051Fxxx 高速SOC 單片機原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2003:1 -7.

[2]童長飛.C8051F 系列單片機開發(fā)與C 語言編程[M]. 北京:北京航空航天大學(xué)出版社,2005:38 -43.

[3][美]SILICON LAB 公司. AN201 WRITING TO FLASH FROM FIRMWARE.2007:7 -12(資料)

[4][美]Maxim 公司. +5V -Powered,Multichannel RS -232 Drivers/ Receivers.2000(資料)

猜你喜歡
串口應(yīng)用程序測井
本期廣告索引
八扇區(qū)水泥膠結(jié)測井儀刻度及測井數(shù)據(jù)處理
中國煤層氣(2021年5期)2021-03-02 05:53:12
淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
刪除Win10中自帶的應(yīng)用程序
電腦報(2019年12期)2019-09-10 05:08:20
USB接口的多串口數(shù)據(jù)并行接收方法探索
基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
地礦測繪(2015年3期)2015-12-22 06:27:26
基于測井響應(yīng)評價煤巖結(jié)構(gòu)特征
中國煤層氣(2015年4期)2015-08-22 03:28:01
中石油首個全國測井行業(yè)標準發(fā)布
基于并行控制的FPGA多串口拓展實現(xiàn)
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
时尚| 鄂尔多斯市| 军事| 五台县| 潜山县| 延川县| 泌阳县| 丹凤县| 修武县| 民勤县| 建德市| 高密市| 资中县| 垫江县| 佛山市| 阳朔县| 甘泉县| 青川县| 濮阳县| 上饶市| 红安县| 休宁县| 巴林右旗| 运城市| 馆陶县| 内江市| 安溪县| 万全县| 修文县| 南通市| 忻城县| 阿拉善盟| 梁河县| 武强县| 古丈县| 金平| 巢湖市| 宁都县| 盘锦市| 呼玛县| 西青区|