本帖最后由 lzq12 于 2017-6-27 15:22 编辑
本文主要对STM32网络升级固件的IAP程序进行解析,也就是在STM32联网的情况下在浏览器上输入指定的IP地址(目前设置为192.168.1.101),然后在浏览器上输入用户名和密码,登陆后可以选择需要升级的bin文件进行固件升级。以下是目前该程序应用的硬件与软件环境:
1.硬件:STM32F407(理论上STM32系列都可以),网卡芯片LAN8720,其他部分参考正点原子的STM32F407探索者开发板。
2.软件:Keil5 ,LWIP1.4.1 主要是基于正点原子STM32F407探索者的第六十章网络通信实验程序与第五十五章串口IAP实验程序(这部分只用到了跳转和烧写FLASH程序)。
说明:该程序与我之前编写的《STM32F407通过SD卡进行程序升级(把bin文件烧写到FLASH的方式)》程序整合起来就可以实现SD卡+网络升级,即可以通过SD卡进行程序升级,如果升级失败自动跳转 去进行网络升级,也可以直接进行网络升级。目前该程序可以应用在项目上,网络升级和SD卡升级均稳定无差错。该程序的网络升级大概需要15秒钟(从点击到程序升级成功)。STM32F407通过SD卡进行程序升级(把bin文件烧写到FLASH的方式)》本论坛的链接:http://www.openedv.com/forum.php?mod=viewthread&tid=90835以下先对网络升级部分的操作步骤进行解说,后面再贴上各个C文件的程序。
一、网络升级的主要实现过程
按住K1键开机,自动进入网络升级模式(进入网络升级模式的方法不一定是要按下K1,可以自己编写条件,比如SD卡升级失败后就进入网络升级模式),然后在浏览器上输入192.168.1.101登陆页面
登陆界面.jpg (7.73 KB, 下载次数: 22)
2017-6-27 14:28 上传
输入用户名和密码(用户名和密码都是admin)之后,点击进入文件升级界面,选择升级的bin文件然后点击进行升级
选择升级文件界面.jpg (6.32 KB, 下载次数: 30)
2017-6-27 14:29 上传
更新成功.jpg (19.53 KB, 下载次数: 25)
2017-6-27 14:29 上传
本程序已经通过测试,网络升级不会有错乱,程序中会对升级的bin文件的文件名与文件的合法性进行校验,其中网络IP、用户名、密码、文件名均可在程序里自行更改。
二、网页界面的HTML代码编写
网页界面不是用他人那种把网页界面转成数组然后存放在程序里调用的方式,用的是直接编写HTML代码的方式,简单直观而且可以任意修改,登陆界面和文件升级界面都可以自己修改,可以看函数http_write_loginweb()和http_write_updatebinweb(),效果如上图的登陆界面和文件升级界面。
//用户和密码登陆WEB界面的HTML内容代码填充
voidhttp_write_loginweb(char *pbuff, int *ppos,int error)
{
*ppos += sprintf(pbuff + *ppos,"");
http_write_script(pbuff,ppos,error);
*ppos += sprintf(pbuff + *ppos,"
\r\n