stm32f407 bootloader程序制作 bootloader(基于rtthread3.3.0 sfud easyflash等库) 升级APP(基于rtthread的app)

本位将介绍stm32f407vgt6  芯片制作bootloader程序,用作app的远程升级。

一、硬件介绍:

       stm32f407vgt6  主频:166MHZ  flash : 1M  SRAM:192K

       stm32f407vgt6 使用的phy芯片为:lan8720a, 外挂一个16M的spiflash

       硬件介绍完毕!

二、软件介绍

       bootloader 下面简称为(e-boot): 采用最新rtthread3.3.0+lwip2.0.2 

      升级方式支持两种:TFTP 和 Ymodem (不懂改协议的自行百度,使用方法下面会介绍)

       spiflash 底层驱动采用:sfud 开源spiflash库: 源码地址:git@github.com:armink/SFUD.git 直接克隆下来添加到keil工程即可。

       spiflash:上层应用采用开源的easyflash : 源码地址: https://gitee.com/armink/EasyFlash 直接克隆下来添加到keil工程即可。

      系统上电,自动判断有无app, 3秒内,敲回车键可停留在E-BOOT ,如果没有app,将自动停在e-boot下。

三、具体介绍软件的使用方法:

     1. 介绍 ymodem 方法升级

    将rthread源码目录下的: \rt-thread\components\utilities\ymodem  ymodem.c  ymodem.h 添加到工程

再将easyflash源码下面的  EasyFlash\demo\iap  ymodem-rtt.c 添加到keill工程后,主要需要改文件里面的upadte函数,处理接收到的文件。

 

重启之后,取出env环境变量,将spiflash内容 拷贝到内部flash,并在console终端执行跳转到app命令即可。跳转命令实现如下:

 

效果如下:

上面是正在下载文件,下面是下载完文件重启,进行拷贝到内部flash

 

拷贝方法非常简单如下:

 

升级成功跳转到app开始执行:

 

2. 使用tftp进行升级

首先去rtthread 文档中心,找到TFTP工具方法的使用,下载TFTP源码

 

将下载好的源文件,添加到keil工程:

 

这里只需要修改tftp_prot.c文件即可

该函数,tftp开始时,会将文件名传过来,如果你没有使用文件系统,那就可以不用open创建该文件。

同样的道理,TFTP在接收文件内容时,会回调此函数,p->len 为接收到数据长度:p->payload 为数据指针。同样,如果你没有使用文件系统,那么write函数就不能使用,这时你只需要把数据拷贝到spiflash就行。接收到数据,重启跳转即可

 

效果如下:启动TFTP server

接下来使用TFTPd32 工具将升级文件,下发到e-boot即可

 

 

三、

网上有说跳转不成功的文件,一定要把中断映射表整对就行了。

app需要修改的地方:

1. 

 

 

2.

 

 

3. 

 

四。

至此,你的升级就大功告成了。

 

 

 

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值