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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hjj651471519/article/details/87880746

本位将介绍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库: 源码地址:[email protected]:armink/SFUD.git 直接克隆下来添加到keil工程即可。

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

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

扫描二维码关注公众号,回复: 5278985 查看本文章

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

     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. 

四。

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

猜你喜欢

转载自blog.csdn.net/hjj651471519/article/details/87880746