为你的设备实现远程固件更新

Home / 博客 / 为你的设备实现远程固件更新


写在前面

以往在烧写芯片时,往往需要将芯片主板从系统中取出,离开电路后,才能用编程器烧写程序。也就是说芯片不能脱离系统而进行写入。

这个在众多应用环境中带来了很多的不便及困扰。比如:一些早期的STB机顶盒,还未有操作系统的涉入,但是如果系统程序需要做优化升级,但是产品早已发给客户端,挨家挨户的取做升级,显然是不太可能的事情。

这就引发了人们对于在线编程的探讨。

 

关键字:在线编程,ISP,IAR,固件更新,程序烧写,远程,TCP/IP,CATV;

 

  • 应用探讨

很多时候, 我们很难将设备取下来并对其进行更新 :

气象站,交通控制系统,CATV光纤收/发器。

再或我们一些Arduino爱好者, 做的一些远程监控家中空气湿度、温度的小应用等等太多的设备,那么如能都应用远程更新固件就再方便不过了。

 

在室外,某些放置于高处的气象站的设备,不便于取下来, 而又不想丢失一部分气象数据;用于高压站或是不便操作地点附近的监控系统,或是交通系统中的道路监控;CATV的光纤收/发器,渐渐也走进千家万户,这么多的设备更新起来太麻烦了。

那么今天就为大家介绍我们开发的这款远程固件更新应用,为您解决这些问题!

 

那么如何能够实现‘不离线’,远程更新固件程序呢?

  • 有关在线编程

常见的有两种在线编程技术——ISP和IAP

ISP(在系统可编程),即逻辑器件不用脱离系统,就可以进行程序写入。

ISP实现起来相对容易,通常的做法是利用上位机软件通过串口来改写单片机的内部存储器。条件是单片机需要具备非易失性存储器,用来存储由上位机传来的程序和数据。实现ISP的硬件接口支持JTAG、串口、无线等等。该接口通常固化在单片机所在的电路板上,芯片烧写时无需返厂或技术人员亲临现场,用户只需要通过计算机上的RS232接口或者USB接口就可以自行改写程序。

IAP在应用可编程),即逻辑器件不用脱离应用,就可以进行程序写入。

IAP实现起来相对要复杂一些,单片机内部需要有两个存储区,一块被称为BOOT区,一块被称为APP区。单片机上电后,首先运行在BOOT区,满足改写程序的条件时,则对APP区的程序进行改写操作,程序改写完成后,单片机重新启动;如果不满足改写程序的条件时,程序指针直接跳转到APP区,开始执行存放在APP区的程序。实现IAP的硬件接口支持串口、无线、网口等等。由于网口的原因,一方面工作人员可以不用亲临现场即可实现固件的远程更新,另一方面,可以通过以太网的广播、组播数据包实现多个用户的同时全部更新,节省人力物力资源。

 

  • 远程固件更新程序应用原理

由于一些类型模块被固化在其他设备当中,因此我们想到开发这款应用程序——Nuri,来实现对该模块固件的远程更新,避免了繁琐复杂的手动连接。只要设备连接到网络,就能够对其进行设置或重置。同时,通过网络的广播和组播,还可实现对多个设备的同时更新,省时省力。

那么以 W5200E01-M3为例,给大家讲解一下在线更新固件的应用原理。

W5200E01-M3

在W5200E01-M3中,通过ISP的方式来烧写BOOT程序。之后由BOOT程序远程更新APP程序时,采用的是IAP方式。

注:W5200E01-M3模块是一款嵌入W5200 (使用全硬件TCP/IP协议)开发板,单片机使用的是STM32F103CB(有128KB的FLASH存储空间),可以将固件程序存储在该存储器中。

上位机通过电缆与下位机相连。下位机进行数据预处理,组成一定的数据格式,通过RS-232串行口,将数据送到上位机,上位机采用串口终端方式接收数据,保证采集数据的实时处理。

那么在远程固件更新的过程中。PC机作为上位机,接收数据,进行固件程序的更新。

  • 操作过程

操作过程就十分容易:

(W5200E01-M3中已装载有固件boot.bin)

  1. 利用[email protected][email protected]电源适配器通过USB数据线为W5200E01-M3模块供电(或者直接通过USB数据线连接至电脑,为W5200E-M3模块提供稳定的5V电源)。同时,利用网线将该模块连接到以太网中。
  2. 然后,打开我们开发的应用程序ConfigTool_Nuri.exe,出现如下界面:远程固件更新1

1  主程序界面

  1. 点击“Search”图标,进行设备搜索。找到设备后

设备信息即更新到“Device”,“Connection”和“Option”标签下。点开左侧串口转以太网下面的设备MAC地址前面的“加号”,可以查看该硬件设备的固件版本信息,如图所示,当前版本信息为0.1。

远程固件更新2

2  查看固件版本

  1. 接下来进行基本操作:更改设备IP地址和恢复出厂设置。

更改设备IP地址:

修改Device IP address中的内容为192.168.11.101,然后点击“Setting”图标,即完成了硬件设备的IP地址更改操作。设备的IP地址被设置为192.168.11.101。如下图所示远程固件更新3

3  设置IP地址

恢复出厂设置:

点击“Factory Reset”图标,实现恢复出厂设置的功能,再点击“Search”图标更新界面信息,发现Device IP address又恢复为192.168.11.100,即完成了恢复出厂设置的操作。远程固件更新4

4  恢复出厂设置

  1. 点击“Firmware Upload”图标,弹出窗口,要求选择固件。
  2. 选定新版本的固件后,确认升级。耐心等待固件升级完成。固件升级完成后会出现提示。

升级完成后,点击“Search”图标,更新显示信息:可以看到固件版本从0.1升级为1.0。远程固件更新5

5  更新显示信息

需要注意的内容:

远程更新固件时,主机与设备必须处于同一网段内,否则更新将不被允许。

远程更新固件时,W5200硬件开关必须处于“RUN”运行模式下,而不是“PROM”编程模式,否则更新将不被允许。

感谢您的关注!

应用程序下载:http://pan.baidu.com/share/link?shareid=593485&uk=1930353891

 

更多信息请关注WIZnet官方微博:

http://weibo.com/wiznet2012