打印
[STM32F1]

STM32F107的网络IAP

[复制链接]
1707|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
系统的在线升级是非常重要的功能,特别是对于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 (65.43 KB )

QQ图片20140806001858.jpg

STM网络IAP.rar

130.65 KB

PC端

STMBoot.rar

16.17 KB

STM端

使用特权

评论回复
板凳
runningwzf|  楼主 | 2014-8-6 00:29 | 只看该作者
在进入main函数以后,要第一时间执行:
__set_PRIMASK(1);
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x8000);

使用特权

评论回复
地板
mmuuss586| | 2014-8-6 08:28 | 只看该作者

不错,做的挺好的,支持;

使用特权

评论回复
5
aozima| | 2014-8-6 10:06 | 只看该作者
跳转到APP前,最好执行 ISB 执行清除所有流水线和缓存。
    /* ensure what we have done could take effect */
    __ISB();
    jump();

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

831

帖子

3

粉丝