stm32 以太网 LWIP TFTP IAP 远程升级

本文详细介绍了如何使用STM32F107芯片,结合LWIP协议栈和TFTP协议进行固件的远程升级。通过DP83848 PHY芯片实现物理层连接,利用bootloader引导升级,并在APP用户程序中进行编译生成bin文件。在LWIP初始化后创建TFTP服务器,实现数据接收和写入Flash的过程,确保中断处理正确以避免程序异常。文章还提供了关键代码片段,并提及了备用分区策略以提高系统稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.综述
本文是基于STM32F107的LWIP协议栈通过TFTP的文件传输协议进行IAP程序升级。本例采用的PHY层芯片是DP83848,相当于物理层,STM32F107自带的MAC层相当于数据链路层,而LWIP协议栈提供的就是网络层、传输层的功能,应用层是需要我们自己根据自己想要的功能去实现的。升级程序由bootloader和APP两部分组成。将stm32 flash划分为两个分区,bootloader和APP区,bootloader存放升级引导程序,可以根据具体的Code大小确定bootloader的扇区,APP就是用户程序即需要升级的程序代码,APP存放的地址紧接bootloader的末地址之后。如果空间允许并且安全性要求高的话,可以将flash划分为三个分区,分别为bootloader、app和backups区。增加一个备份区,存放原运行程序,对原有运行程序进行拷贝,如果升级失败则运行备份程序,至于以系统不会瘫痪。如图:
这里写图片描述
二.Bootloader
作用是引导升级启动。
相关重点程序设置:

//设置APP用户程序起始地址
 #define USER_FLASH_FIRST_PAGE_ADDRESS  0x8003000
//设置擦除的flash结束扇区地址
 #define USER_FLASH_LAST_PAGE_ADDRESS   0x801FFFF 
//设置堆栈指针
__set_MSP(*(__IO uint32_t*) USER_FLASH_FIRST_PAGE_ADDRESS);
//复位中断,跳转到APP运行
 Jump_To_Application();

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值