原创 基于 HTTP的远程配置和固件更新

2013-12-3 09:12 1310 21 21 分类: 通信 文集: 产品应用

(已在《无线电》杂志第10期刊登)

对于HTTP的思考

你也许会问,既然通过一个上位机程序可以完成这个任务,为什么还要通过浏览器实现呢?其实这两个方法各有优缺点,用上位机程序,用户可以自己定制协议,但是用户不仅需要安装该上位机程序,而且还要考虑面对不同的操作系统下的兼容情况。然而通过网页更新的话,只需要设备内嵌一个HTTP服务器,便省去了编写上位机程序的负担,并无须考虑去兼容不同的操作系统。当然,上位机程序可以实现UDP广播寻址终端,无需知道终端IP地址即可找到同一网段下的多个终端。而使用网页的话就只能是预先知道终端IP地址并逐一配置。

其实,对于通过网页配置相信大家并不陌生,家里有无线路由器的朋友估计都有实践经验。通过浏览器键入路由器的默认IP,然后根据网页提示就可以一步步地实现设备信息配置,诸如WiFi密码、SSID等。今天,我们就是来探究一下这个应用的原理,在单片机里实现一个HTTP服务器,通过这个HTTP服务器来配置设备信息,并实现了设备固件更新。

当然,我这里的这个HTTP服务器没有家里的路由器那样的功能强大,在这里也只是抛砖引玉,希望大家能够从中获取启发,设计出更出色的产品。方便起见,我们仍旧延续上一篇文章的平台——基于Cortex-M3的W5200评估板(STM32F108C8 + W5200)。

 http1

图1 W5200评估板

该评估板单片机的系统资源:64KB的闪存和20KB的SRAM。

(W5200可以和任何单片机配合使用,如果用户想使用其他单片机+W5200来实现的话,需要您自行修改代码,这里暂不提供其他库。)

功能演示

在我们展开谈论基于HTTP的远程配置和固件更新的原理之前,先给大家看一下我们这个程序小样的功能演示。感兴趣的朋友可以在接下来的文章中,了解到具体该功能是如何实现的。

步骤1

用ISP工具烧录Boot(评估板SW2 调至PROP),不了解的话,可以参考我们上一个主题内容。

 http2

图2用FlashLoader烧录boot.bin

步骤2

将评估板上SW2 调到RUN模式,打开ConfigTool。点击按钮http3,可查找到当前设备,并可通过按钮http4,将app.bin程序上传至评估板中,右侧可看到当前设备的IP地址及版本号等信息,此时版本号为1.0,如图:

http5

图3配置工具烧录app.bin成功

ConfigTool这里的工作也很简单,就是在第一次Boot启动时,把App传给单片机。当App运行时,ConfigTool就无用武之地了,因为用浏览器就可以完成ConfigTool的工作了。

(注:以上途径并不是必须的,仅为了方便演示,保证boot和app程序已经烧录好即可。)

步骤3

在浏览器中输入W5200评估板的IP地址,回车后出现Web界面。

如图可看到,界面分为Device Settings和Firmware Updating两部分,其中Device Settings中依次列出W5200评估板的硬件版本号、MAC地址、IP地址、子网掩码以及默认网关基本配置。

用户可以配置其他IP地址,子网掩码及网关,并点击’Save settings and Reboot’,设置并重启生效;

http6

图4 Web配置界面

如:在WEB界面上,将IP地址192.168.1.2改为192.168.1.20。更改后保存,等待后更改成功:

http7

图5更改IP成功

步骤4

下面针对固件更新,点击“浏览”按钮,选择好要更新文件。http8;选好后开始上传,出现以下界面,更新过程需要6s.http9

 图6等待升级完成

更新完成,可以看到新成功,版本号更改为5.0,IP地址以及界面颜色都进行了更新,如下图:

 http10

图7升级成功

是不是很简单?马上动手,也给你的设备加入一个HTTP服务器,实现远程配置升级功能吧。当然,配置和升级只是应用的一小部分,你也完全可以通过模拟/数字输入接入几个传感器,比如温度、湿度和PM2.5,这样打开浏览器就可以监视这些传感器数据了。

这个小样只是一个简单的功能及原理演示,下面就让我们来看一下这个基于 HTTP的远程配置和固件更新实现的思路及原理。

应用原理

1.  方框图

http11

图8 HTTP远程更新固件框图

每次重启,均从首地址开始执行程序:

1启动进入BOOT区,若BOOT检测APP区的不为空,则跳转到APP区的首地址执行主程序;

2浏览器访问APP区的网页服务器

l  配置网络参数:即将浏览器中键入的参数通过APP更新到Configure Information区

l  远程更新固件:即进入到以下步骤3

3浏览器访问APP主程序的网页服务器,并通过浏览器将即将更新的APP写入到Backup区;

4当APP检测到Backup区域已经有新的APP程序后,跳转到BOOT区,执行更新操作;

5BOOT将APP区擦除,并将新APP从Backup区写入到APP区;

重启,重新执行程序。

继续阅读:http://blog.iwiznet.cn/?p=5861

作者:Katrina,Jerry,Cillian 

感谢阅读!

更多信息请关注WIZnet官方微博:http://weibo.com/wiznet2012

文章评论0条评论)

登录后参与讨论
我要评论
0
21
关闭 站长推荐上一条 /2 下一条