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

2023-11-18

本位将介绍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. 

 

四。

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

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • NLP学习02_最大匹配算法、UniGram LM、Spell Correction

    如果没有数据的时候 那只能通过正则或者规则来解决问题 但是有些基于概率的方法 必须有一定的数据 首先我们要对句子进行切分 使用分词 接着进行预处理 拼写纠错 stemming 将不同的单词转换到原型 停用词过滤 a an 单词顾虑 同义词等
  • win7本地服务器如何添加网站,win7 添加本地服务器地址

    win7 添加本地服务器地址 内容精选 换一换 OBS Browser 是一款用于访问和管理对象存储服务的图形化工具 支持通过配置内网DNS服务器地址的方式 使在华为云上的Windows ECS通过内网直接访问OBS 下面将介绍具体其操作流
  • java写企业员工信息管理系统

    java写企业员工信息管理系统 这一篇文章主要介绍java写的企业员工信息管理系统 功能介绍 员工登录 首页 工资信息 出差记录 请假 签到 留言 修改密码 退出登录 管理员登录 员工管理 新增员工 工资信息 出差信息 请假信息 签到信息
  • RoboMaster机甲大师:裁判系统服务器搭建助手(RMServer Aid)

    RoboMaster机甲大师 裁判系统服务器搭建助手 RMServer Aid 更新 2022 03 28 写在前面 使用教程 软件简介 软件下载 软件安装 软件使用 打开软件 首次使用 1 组建局域网 2 配置RM环境 3 启动RM服务
  • vmware 磁盘扩容

    文章目录 参考 https blog csdn net zmzdmx article details 112299741 fdisk dev sda root localhost fdisk dev sda Welcome to fdisk
  • 二. SpringCloud Alibaba Sentinel 流控

    目录 一 简单介绍 二 流控模式 直接 快速失败 关联 快速失败 三 流控效果 快速失败 WarmUp 预热 排队等待 一 简单介绍 假设当前 Sentinel 监控的服务中有两个接口 针对整个服务 或针对服务中的指定接口添加流量控制设置
  • nodejs http模块

    客户端 在网络节点中 负责消费资源的电脑 叫做客户端 服务器 负责对外提供网络资源的电脑 叫做服务器 http 模块 是node js 官方提供的 用来创建web 服务器的模块 通过http 模块提供懂得 http caeateServer
  • 自删除技术详解

    基础知识 这里首先说一下程序自删除实现的思路 程序创建一个批处理文件 并创建进程执行 然后程序结束进程 批处理所做的功能便是延时5秒后 删除指定程序然后再自删除 这样 程序自删除功能便实现了 常用的有三种 自删除 技术 1 利用window
  • esp32-S3专题二:内存1之RAM使用

    esp32 S3模块内部的存储分为ROM RAM SPRAM RTC内存 FLASH 种类很多 几乎可以不使用外接存储器的情况下 可以进行很多业务场景 十分有用 现在我们逐一讲解一下他们的作用和使用方法 一 ROM 384 KB 内部 RO
  • Obsidian学习从0到1 —— MARKDOWN

    文章目录 1 认识markdown 2 使用markdown 常用语法 1 标题 2 加粗 斜体 删除线 3 列表 4 分级 5 引用 6 分割线 7 链接 8 代码块 9 任务列表 快捷方式 10 插入图像 11 表格支持 高级用法 1
  • 【STM32】入门(十三):FreeRTOS

    STM32 STM32单片机总目录 1 FreeRTOS简述 完全免费 FreeRTOS是完全免费的实时操作系统 源码简单 只需 3 个 RTOS 移植通用的源文件和 1 个微控制器专用的源文件 镜像较小 具有最小 ROM RAM 和处理开
  • 集简云上线ChatGPT文档问答,基于文档实现智能问答训练

    过去 我们想要让ChatGPT结合自身业务进行针对性回答 只能通过输入大量的prompt提示 或使用官方原生Fine Tuning模型训练 然而 过多的prompt提示词一方面提高了使用成本 另一方面 提示词的信息量有限 无法复用于不同的问
  • Permutation 和 Combination

    文章目录 Permutation 代码 代码核心思路 Combination 代码 代码核心思路 总结 Permutation 和 Combination是算法中非常常见的两种数据的排列方式 也就是数学中的排列和组合 Permutation
  • java代码编写规范,讲的太透彻了

    什么是ACID 事务的定义和实现一直随着数据管理的发展在演进 当计算机越来越强大 它们就能够被用来管理越来越多数据 最终 多个用户可以在一台计算机上共享数据 这就导致了一个问题 当一个用户修改了数据而另外一个还在使用旧数据进行计算过程中 这
  • 符号“∑”的用法

    和 分别用来表示求和与求积 Sigma X 将X中的值全部相加 XF XF X表示的是产量 这个没有错 F表示有同样产量X的人数 数学上称为频数 就是英语的Frequency XF的意思 不是人均产量 人数 而是产量X 产量为X的人数 例如
  • EJBCA操作说明(二)java操作

    ejbca web界面操作 代码下载地址 初始化获得EJBCA实例 初始化EjbcaWS 获得EJBCA服务端Webservice实例 return public static EjbcaWS init EjbcaWS ejbcaWS nu
  • 单元测试 实体

    单元测试 实体 代码 Before public void setUp userVoTest new UserVo Test public void testEquals final boolean result userVoTest eq
  • C语言编译遇到的错误提示总结

    C语言编译遇到的错误提示总结 error1 expected asm or attribute before token error1 expected asm or attribute before token 解决方案 很有可能是你定义
  • Java常见面试题

    1 进程和线程的区别 1 进程是内存中运行的程序 是操作系统资源分配的基本单元 在windows操作系统中运行的每一个exe文件就是一个进程 每个进程都有独立的代码和数据空间 程序上下文 所以程序之间切换开销比较大 2 线程是处理器任务调度
  • stm32f407 bootloader程序制作 bootloader(基于rtthread3.3.0 sfud easyflash等库) 升级APP(基于rtthread的app)

    本位将介绍stm32f407vgt6 芯片制作bootloader程序 用作app的远程升级 一 硬件介绍 stm32f407vgt6 主频 166MHZ flash 1M SRAM 192K stm32f407vgt6 使用的phy芯片为