[STM32F1] STM32F107的网络IAP

[复制链接]
2031|4
 楼主| runningwzf 发表于 2014-8-6 00:16 | 显示全部楼层 |阅读模式
系统的在线升级是非常重要的功能,特别是对于107这种带网络接口的CPU而言,工程人员不需要到现场就可以解决固件的更新,甚至通过一些技术手段可以直接把固件加密以后直接给到客户,让其自行升级,可以有效降低后期维护的成本。
另外在生产过程中也可以把Booloader给到加工厂,一方面让其帮忙烧录,另外也可以让生产厂检查其加工的质量,把焊接不合格的产品在加工厂既可以修复。实际应用程序则可以当产品回到公司以后再通过网络的方式迅速烧录,从而降低被人解密的风险。
看了网上不少关于STM32F107的IAP程序,很多都是需要电路板上的按键之类来配合,不适合实际使用,所以本人编写了一个不需要按键的IAP,请各位批评指正。

STM端:硬件为RMII模式,PHY为DP83848,复位端口为:PD3,本地端口为:20000
PC端:C#编写,本地端口为:20001
Bootloader消耗资源:27KB,所以在使用的Flash为低32KB,最后一页(254~256KB)存储了网络配置等信息
运行方法:STM复位启动以后运行Bootloader,Bootloader按照1Hz的速度广播自己的IP、MAC地址到PC的20001端口,如果一直没有收到PC的应答,10秒后如果有应用程序则启动应用程序,否则一直运行Bootloader。
PC:侦听20001端口,如果有收到合适的广播包,则加入列表。
目前暂时定义了以下几个命令:
//搜索设备
#define CMD_QUERY        0x0001
//设置MAC和IP
#define CMD_SET_MAC        0x0002
//下载控件
#define CMD_DOWNFIRE        0x0003
//检查CRC
#define CMD_CHECKCRC        0x0004
//重启设备
#define CMD_RST                0x0005
//运行用户程序
#define CMD_RUN                0x0006

 楼主| runningwzf 发表于 2014-8-6 00:20 | 显示全部楼层
PC端和STM端
QQ图片20140806001858.jpg

STMBoot.rar

16.17 KB, 下载次数: 13

STM端

STM网络IAP.rar

130.65 KB, 下载次数: 13

PC端

 楼主| runningwzf 发表于 2014-8-6 00:29 | 显示全部楼层
在进入main函数以后,要第一时间执行:
__set_PRIMASK(1);
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x8000);
mmuuss586 发表于 2014-8-6 08:28 | 显示全部楼层

不错,做的挺好的,支持;
aozima 发表于 2014-8-6 10:06 | 显示全部楼层
跳转到APP前,最好执行 ISB 执行清除所有流水线和缓存。
  1.     /* ensure what we have done could take effect */
  2.     __ISB();
  3.     jump();
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

831

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部