APP下载

基于lAP技术的远程固件更新系统设计与实现

2019-12-10檀朝新张杨马柱徐钧梅彬

中国医疗器械杂志 2019年6期
关键词:PC机固件字节

檀朝新,张杨,马柱,徐钧,梅彬

安徽养和医疗器械设备有限公司,桐城市,231400

0 引言

为了更好地应对市场的变化以及客户的需求,医疗设备需要不断引入新的技术对产品进行固件升级,即对仪器内部主控芯片的程序(下位机程序)进行替换,最终达到提升仪器整体性能的目的。而目前我们采用的更新仪器下位机程序的方法有两种:一种是工程师到现场拆开仪器,使用程序下载器进行升级,另一种是将待升级的仪器寄回公司本部由市场服务部人员进行拆机升级。

由于医疗设备在市场上分布是与医院的分布相关的,因此医疗设备分布与全国各个省市自治区的情况相关,比较分散很难集中处理。如果采用传统的升级下位机程序的方式对医疗设备进行升级,升级的效率将很低,不可能在短时间内完成,并且还需要花费大量的差旅费、邮寄费以及人工费。本项目通过STM32平台的IAP技术和互联网通信技术完成一个固件更新系统方案,解决传统升级下位机程序方式中效率低下成本高昂等问题,提高下位机程序升级维护的便携性。

1 STM32嵌入式微控制器固件烧写方式

1.1 串口ISP烧写模式

ISP(In System Programming)在系统编程、固件烧写原理与JTAG烧写相同,接口更简单,只需要通过RS232串口就能完成烧写,RS232串口是在医疗设备中常用的接口。根据STM32的启动模式如表1所示,当Boot0=1与Boot1=0时,启动模式为系统存储器即开启ISP模式,我们使用串口就能进行程序烧写。这种模式是由STM32厂家在芯片出厂前在特定区域设置了一段Bootloader程序,通过这段程序将串口接收的程序数据烧写到芯片的主闪存存储器[1]。

表1 启动模式Tab.1 Start mode

ISP烧写的缺点是需要硬件触发,需要硬件电路将Boot0与Boot1脚进行设置才能进入ISP模式,这种触发方式不适合在仪器外部设置,因此不适合远程固件升级。

1.2 IAP烧写模式

IAP(In Application Programming)在应用编程,即应用程序自己对自己进行烧写,编写专用的固件烧写程序,通过RS232串口进行程序烧写。与ISP模式相比IAP模式可以自定义固件升级模式的触发方式,因此IAP模式可以自定义适合远程升级的触发方式。IAP固件升级程序需要由软件工程师编写,升级方式很自由可根据自身情况进行设计。IAP固件升级过程,如图1所示。

图1 IAP固件升级过程Fig.1 IAP firmware upgrade process

2 系统方案设计

2.1 系统框架

将最新固件上传到公司服务器,通过互联网将固件版本信息与仪器本身固件进行对比,判断是否更新升级固件,如果需要更新固件,使用PC机将固件程序通过串口连接线发送到仪器,仪器利用IAP技术烧写新的固件。仪器固件远程升级方案示意图,如图2所示。

2.2 IAP升级程序设计

2.2.1 程序地址分配

图2 仪器固件远程升级方案示意图Fig.2 Schematic diagram of remote firmware upgrade of instrument firmware

首先对STM32微控制器的闪存(Flash)进行程序地址分配,分为两个区域,一个Flash区域存储IAP升级程序,另一个存储用户程序。STM32微控制器Flash起始地址为0x8000000,IAP升级程序功能单一,程序较小一般不超过10 kB,因此将IAP升级程序的地址区域分配为0x8000000~0x8002FFF,12 kB存储空间。用户程序存储地址则从0x8003000开始,如图3所示。不同的设备用户程序大小差别较大,可根据芯片STM32微控制器Flash大小确定用户程序的结束地址[2]。

图3 Flash地址分配Fig.3 Flash address allocation

2.2.2 改进IAP固件更新过程

为了使升级过程变的更加的顺畅快捷,尽量减少人工操作,我们需要对IAP程序运行过程进行改进,我们采用发送串口指令的方式触发仪器进入IAP升级模式,这样整个升级过程在仪器终端不需要人为进行任何操作。改进后的IAP升级过程如图4所示,在正常情况下仪器都是运行用户程序,如果需要升级就必须在用户程序中接收从PC端发来的升级指令,并将升级指令作为参数存储在存储芯片中,然后启动软件复位,使仪器复位进入IAP程序,IAP程序启动后开始读取存储芯片中的是否有升级参数,有升级参数将进入升级模式,没有就会跳转到用户程序。

图4 改进后的IAP固件更新过程Fig.4 Improved IAP firmware upgrade process

2.2.3 IAP关键过程程序

(1)接收固件后烧写程序[3]

2.3 上位机程序设计

仪器固件更新需要借助PC机与公司服务器通过Internet网络连接,PC机端需要上位机程序用于从公司服务器获取固件。使用Internet 网络进行远程传输固件程序,具有传输速度快(10/100 Mb/s),使用标准应用层协议(如FTP、HTTP、TFTP 等)进行传输,可以远距离操作(LAN、WLAN)等优点。

上位机与下位机之间使用Ymodem协议进行固件传输,Ymodem协议具有完善的握手机制和出错管理机制,确保更新的固件数据准确完整。

Ymodem协议一次可传输1 024字节数据,为了保证数据的正确性,数据传输增加CRC检验功能。为了保证数据的完整性,Ymodem协议制定了完善的握手机制,每进行一次数据块传输,就会有相应的应答信号,接收到应答信号后,才会继续传输下一个数据块[5]。

(1)起始帧的数据格式

YModem的起始帧主要传输文件名与文件大小等信息,起始帧帧长为33字节(3字节数据首部、128字节数据、2字节CRC16校验码)。它的数据帧结构如下:

其中CRCH与CRCL分别为CRC检验值的高8位与低8位,而SOH=1表示为初始帧,初始帧只有128个字节数据。

(2)数据帧的数据格式

YModem的数据帧主要用于传输1024字节数据:

其中CRCH与CRCL分别为CRC16检验码的高8位与低8位,而STX=2表示这个数据帧为数据帧,数据帧一次可传输1 024个字节数据。

(3)结束帧的数据格式

YModem的结束帧数据与起始帧类似,以SOH开始,后面传输128字节数据(都为0)和CRC校验码:

(4)Ymodem数据传输握手机制

Ymodem数据传输握手机制,如图5所示。

图5 Ymodem数据传输握手机制Fig.5 Ymodem data transmission handshake mechanism

3 实际运行效果

现将远程固件升级系统应用于YH01A型液体闪烁计数仪上进行实际效果测试。该型仪器是用于C14呼气试验的医疗设备,使用PC机进行操控,借助PC机使仪器与互联网连接,从而可使固件数据从公司服务器传送到仪器端,最终实现固件更新升级。将待升级仪器与PC机通过USB数据线连接,在PC机上运行固件升级工具,如果与仪器连接成功将在信息栏显示“等待文件发送.......(按字母 'a' 停止当前操作):CCCCC”。与仪器连接成功后点击“浏览”键选择要需要更新的固件,最后点击“程序下载”键开始更新固件,代码更新成功后显示“代码更新成功”并显示文件名称和文件大小[6-7]。

4 结论

针对使用STM32微控制器平台的医疗设备进行固件升级问题,本文设计了一种远程升级医疗设备固件的系统工具,可实现仪器固件远距离升级,升级操作简单、快捷、方便。该系统适用于能与PC机连接的设备,解决了传统固件升级需要拆解仪器,需要专业人员到现场升级的问题。该系统可应用于各种基于STM32平台控制的医疗设备上,由于医疗设备对软件稳定性要求很高,如果有软件Bug出现,必须要做到及时快速的修改解决,而本文设计的远程固件升级系统非常适用于这种情况。

猜你喜欢

PC机固件字节
No.8 字节跳动将推出独立出口电商APP
No.10 “字节跳动手机”要来了?
轻量级分组密码Midori64的积分攻击
用VC++实现PC机与单片机的串行通信
VC.NET下实现dsPIC单片机与PC机的通信
单片机与PC机串行数据通信的工程实践
基于单片机与PC机的电气量采集系统设计
基于固件的远程身份认证
谷歌公司推出计算机固件分析工具帮助用户阻止恶意软件入侵
英特尔发布免费固件引擎