在应用编程技术在测井仪器中的应用研究

2015-12-24 03:36党明江魏亚军
石油管材与仪器 2015年4期
关键词:串口应用程序测井

党明江 魏亚军

(1.中国电子科技集团公司第二十二研究所 河南 新乡 453003;2.陕西延长石油集团油气勘探公司 陕西 延安 716000)

0 引言

目前,固件升级技术在手机、平板等多种嵌入式设备中得到了广泛应用。石油测井仪器在使用过程中,有时也需要对应用程序进行升级,以修复上一版本缺陷或增加仪器适应能力,获得更好的测井效果。虽然测井仪器中使用的单片机大都支持通过JTAG 方式进行在系统编程,但在编程时往往需要研发人员到油田现场,拆开仪器后使用专用的编程器才能完成对应用程序的升级。如果使测井仪器具备在应用编程功能,研发人员只需将新程序的代码发送给油田用户,油田用户在现场无需拆卸仪器即可完成测井仪器应用程序的升级,这种方式省时省力,具有较高的实用价值。

1 在应用编程的基础

C8051FXXX 系列单片机[1]是美国Cygnal 公司开发的完全集成的混合信号片上系统型MCU,其CIP-51 内核的指令系统与8051 完全兼容,由于采用了高速、流水线结构,C8051FXXX 单片机的执行速度比标准8051 单片机快数倍。同时该系列的单片机片上还集成了丰富的外设资源,包括ADC、DAC、PCA、定时计数器以及多种通讯接口,单片集成电路基本上可以完成应用系统所需的数字通讯和控制功能,可以很好地应用到石油测井仪器中。

C8051F040 单片机[2]是C8051FXXX 系列中一种,由于该单片机内部集成了一个CAN2.0B 控制器,常用于需要使用CAN 总线的场合。C8051F040 单片机内部集成了64 kB 的FLASH 存储器,用于程序代码和非易失性数据的存储。Silicon Labs 或第三方提供的编程工具可以通过JTAG 接口对FLASH 存储空间编程,实现单片机的在线调试和在系统编程。同时,单片机中的软件也可以通过MOVX 写指令对FLASH 存储器编程,这是该单片机可以实现在应用编程的基础。

C8051F040 没有专门的指令完成对FLASH 存储器的写和擦除操作,通过设置单片机内部控制寄存器几个相关位,就可以使用MOVX 写指令完成对FLASH 存储器的写和擦除操作[3]。与FLASH 存储器编程相关的位有三个,位于控制寄存器PSCTL 和FLSCL 中,分别是:单片机软件写/擦除FLASH 允许位FLWE(FLSCL. 0),FLASH 擦除允许位PSEE(PSCTL.1),MOVX 写指令指向FLASH 控制位PSWE(PSCTL.0),通过设置三个位的组合方式,单片机的MOVX 写指令可以实现三种不同的功能,如表1 所示。单片机复位后,这三个位都处于“0”状态,此时,MOVX 写指令指向XRAM 空间,单片机指令不能更改FLASH 存储器的内容。

表1 MOVX 写指令的三种功能

对FLASH 存储器的写操作只能将数据位由“1”写为“0”,如果数据位原来是“0”,是无法通过简单的写指令将该位写为“1”的,只有通过擦除操作才能将FLASH数据位置“1”。因此,在写入新数据之前,一般都要先擦除待编程地址的数据。需要注意的是,FLASH 数据的擦除操作是页擦除方式,即每执行一次页擦除指令,该FLASH 页内的所有的数据将会被擦除为0xff。C8051F040 共有64kB 的FLASH 空间,从0x0000 地址开始,每512 个连续字节为一页,共分为128 个FLASH 页。当设置为页擦除方式时,对页内的任何一个地址执行写操作就可以擦除整个FLASH 页的数据,将该页内所有的字节都置为0xff。

实际应用中必须注意,在执行FLASH 写和擦除操作时,必须禁止中断,以防在其它中断中使用MOVX 写指令对FLASH 存储器造成误操作。下面代码显示了将位于XRAM 中(addrh,addrl)地址开始的512 字节写入FLASH 中从0x1000 到0x11ff 地址的详细过程。

2 实现的原理和方法

一般测井仪器中的单片机程序只包含实现测井功能的应用程序,为了实现在应用编程功能,单片机中必须增加引导装载程序。引导装载程序实现以下功能:在系统复位后首先获得控制权,试图与上位机取得联系,判定是否需要升级应用程序,如不需要升级程序并且应用程序正确时,引导装载程序将控制权交给测井应用程序完成仪器的正常测井功能。

由于引导装载程序需要从上位机获取新应用程序的代码,因此测井仪器需要增加与上位机的通讯接口。在实际应用中,串口是简单、常用且资源需求低的通讯接口,本设计中使用单片机的UART0 串口作为通讯接口。由于计算机端的串口使用的是RS232 电平标准,而C8051F040 单片机UART0 串口使用的是TTL 电平标准,因此在测井仪器中需要增加MAX232 芯片完成RS232电平和TTL 电平之间的转换,实现单片机与上位机之间的双向通讯[4]。

为实现在应用编程功能,将C8051F040 单片机的程序空间划分为两部分:0x0000—0x0fff 为引导装载程序区;0x1000 以上为应用程序区。C8051F040 单片机复位后,程序指针指向0x0000,引导装载程序首先获得控制权开始执行。

3 引导装载程序的设计

单片机使用UART0 与上位机的通讯,因此将引导装载程序中实现应用程序升级功能的代码放在UART0 中断服务程序中。考虑到引导装载程序的重要性,在设计中必须充分考虑到应用程序升级过程中可能出现的各种异常情况。为了确保出现异常情况造成升级失败后,对测井仪器重新加电后仍能继续完成应用软件的升级,设计中遵循了以下原则:

第一,在应用程序的升级过程中,应该避免对引导装载程序空间的擦除和写入操作。否则,如果在擦除或写入过程中出现了掉电的异常情况,将造成引导装载程序的自身错误而导致系统自举失败,因此必须禁止对引导装载程序所在的FLASH 空间进行写或擦除操作。

C8051F040 有21 个中断源,中断向量的地址位于0x0000 到0x0100 之间,属于引导装载程序禁止更新的地址空间,为了保证使测井程序能正常使用这些中断,引导装载程序必须将这些中断向量转接到测井程序空间中。实现转接的方法并不复杂,例如INT0 中断的地址转接可用下面的代码实现,其它中断向量的转接可以用同样的方法完成。UART0 中断只允许引导装载程序使用,无须转接到应用程序空间中。

第二,应用程序在升级过程中如果由于异常情况造成升级失败时,由于应用程序代码不正确,运行时必然会出现程序跑飞的情况。为了避免此类情况的发生,引导装载程序在将控制权交给应用程序之前应该检查应用程序代码的完整性,在确认应用程序正确后再移交控制权。在应用程序升级过程中,引导装载程序在对旧应用程序擦除之前,首先擦除0x0e00 所在的FLASH 页,此时0x0e00 字节单元的内容为0xff,在新应用程序写入完成后,引导装载程序将0x0e00 字节单元的内容写为0x55。这样,引导装载程序就可以通过读取0x0e00 地址的值是不是0x55 来决定是否移交控制权。

第三,基于以上的设计,应用程序的升级过程是由引导装载程序在UART0 中断服务程序中完成的。这就要求应用程序正确设置交叉开关使能UART0 串口,并允许UART0 中断。实际中应用程序可能由于存在逻辑错误导致无法进入UART0 中断,造成无法更新应用程序的情况。为了应对此类问题,在引导装载程序启动时增加了一个窗口期,在此窗口期中始终等待与上位机的升级握手,窗口期过去之后再将控制权移交给应用程序。窗口期的存在延长了仪器的上电响应时间,可根据实际情况调节窗口期时间的长短。

下面是引导装载程序的流程图,如图1 所示。

第四,测井应用程序的设计应符合以下要求:

正确设置交叉开关,使能UART0 串口,并允许UART0 中断。

图1 引导装载程序流程图

应用程序的入口地址从0x0000 改为0x1000,各中断向量的地址也相应的从0x00xx 改为0x10xx。

新的应用程序编写完成后,经汇编后生成二进制代码包。在升级过程中,上位机软件首先通过RS232 串口与测井仪器建立通讯,然后读取二进制代码包,将其拆分成多个512 字节的小包,将起始地址、512 字节代码以及校验码等打包后发送给测井仪器并等待测井仪器页更新完成握手,待所有待数据包都完成更新后,发送升级结束命令,完成本次应用程序的升级。

4 结 论

本方法通过在C8051F040 单片机中植入引导装载程序,只需要占用较少的单片机资源就实现了测井仪器的在应用升级功能,具有很高的实用价值。本方法在设计中充分考虑了对升级过程中由于异常情况造成升级失败的预防和处理,保证了在测井仪器应用程序升级的可靠性。本设计对于其它类型单片机实现在应用升级方法也具有重要的参考意义。

[1]潘琢金,施国君.C8051Fxxx 高速SOC 单片机原理及应用[M].北京:北京航空航天大学出版社,2003:1 -7.

[2]童长飞.C8051F 系列单片机开发与C 语言编程[M]. 北京:北京航空航天大学出版社,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(资料)

猜你喜欢
串口应用程序测井
本期广告索引
八扇区水泥胶结测井仪刻度及测井数据处理
浅谈AB PLC串口跟RFID传感器的通讯应用
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
基于测井响应评价煤岩结构特征
中石油首个全国测井行业标准发布