特点
- 本地WEB网口升级芯片的程序目的是为了升级固件的操作变得简单和容易。
- 电脑端使用浏览器。
- 使用设备网口,电脑和设备通过网口连接。
- 确保各种情况下设备能正常运行,不是老固件就是新固件。
- 固件完整性验证。
- 各种条件下升级确保成功。
- 掉电等异常的保护。
- 升级完成重新启动设备,安装新固件,确保新固件安装成功。
- 升级保留原有参数。
- 只整体升级内核和文件系统,UBOOT,BOOTSTRAP不能升级。
需求
固件升级,指的是对硬件设备的内嵌固件进行升级。可以完善机器功能、增强机器稳定性、修补机器漏洞。由于现在的硬件设备的都是将固件保存在Flash中,所以升级固件实际上就是用新的固件程序重写Flash。
设计
1、WEB页面
要使得文件上载能够成功,WEB页面元素有以下要求:
" INPUT type=file 元素必须出现在 FORM 元素内。
" 必须为 INPUT type=file 元素指定 NAME 标签属性的值。
" INPUT TYPE="submit" 提交表单的按钮
" FORM 元素 method 标签属性的值必须设置为 post。
" FORM 元素 enctype 标签属性的值必须设置为 multipart/form-data。
2、WEB服务器后台处理
浏览器输入类型为文件类型,WEB服务器做输入处理,将WEB页面上传的文件写到/tmp目录下,然后对该文件做校验。服务器做输出处理,根据校验结果输出相应信息,校验通过则写到flash的备份区,并置升级标志写到flash第二分区,然后输出给浏览器校验结果信息并重启系统;校验不通过则直接输出给浏览器校验结果信息。
3、uboot中升级
固件升级是根据升级标志的值来判断系统是否升级,如果升级标志为空则不升级,如果升级标志的值为"update"则进行升级操作。
升级处理分析如下:
每次系统运行进入uboot后从nandflash的第二分区读出升级标志值,如果是"update"则从第五分区读出新的固件,擦除第三分区原有的固件,再把新的固件写到第三分区,最后擦除第二分区的升级标志。
处理流程如下图所示:
4、数据的存储空间
(1)WEB浏览器上传固件后服务器将文件存储在根文件系统的/tmp目录下,文件名为uploadXXXX,掉电即丢失。
(2)新固件保存到系统的/tmp目录下后,再从该目录下将新固件写到nandflash的第五分区。
(3)升级标志存储在nandfalsh的第二分区的第6-13个字节,升级时内容为"update",不升级时内容被清空为0。
(4)内存加载的内核程序存储在nandfalsh的第三分区。
使用web升级示意
路由器升级程序如下图所示:
联系人:付小姐
咨询QQ:99187411
咨询电话:15010577199