STM32基于GPRS模组使用HTTP协议单片机固件在线升级(IAP)

2023-11-19

一、前言

    最近有朋友让我帮忙开发基于GPRS模组的单片机固件在线升级,这样的远程升级就两种方式:

   1.自己定义协议,服务器端进行bin文件拆包,一包包下发。优点:可以每包一校验还可以断点续传,不需要考虑Flash学入占用的时间,缺点:需要服务器端和节点设备都要进行协议解析。

  2.基于HTTP协议进行文件传输。优点:不需要服务器端进行过多的操作,只需要下发URL链接即可。缺点:不能断点续传,只能一整包下发,而且bin文件是一次性下发,串口既要缓存还要进行写入Flash操作,STM32在读写Flash时不能进行取指操作,处理不当会发生字节丢失。
在这我采用的是第2中方式,主要是简化服务器端的操作。

二、Flash分配

                                      

三、串口数据处理方式

    由于升级包(40K)bin 文件是一次发送到单片机的,单片机进行写Flash时不能进行取指,所以串口中断无法进行。在这采用DMA方式。DMA加缓冲区可以很好的解决这个问题

具体可参考:https://blog.csdn.net/zn2016/article/details/79049687

具体功能已经全部实现,代码不方便贴出,如果有项目需求可以留言

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

STM32基于GPRS模组使用HTTP协议单片机固件在线升级(IAP) 的相关文章

  • Sping之自动注入-1

    最近终于能静下心来 一步步的学习Java Web开发 在学习的过程中 遇到太多的问题 一开始好些问题真是不知道怎么解决 在这里要非常感谢 Sping In Action 一书的作者 感谢他能写出此书 让我受益匪浅 您辛苦了 本着 相互学习
  • linux查看已安装的软件

    这本阿里P8撰写的算法笔记 再次推荐给大家 身边不少朋友学完这本书最后加入大厂 Github 疯传 史上最强悍 阿里大佬 LeetCode刷题手册 开放下载了 因为linux安装软件的方式比较多 所以没有一个通用的办法能查到某些软件是否安装

随机推荐

  • docker run之后 docker ps 不显示运行中的容器

    docker run 启动mysql以后 生成的对应容器直接exited 1 问题 今天在部署项目过程中 用docker run指令启动容器返回了容器id 但是用docker ps指令却不显示刚才启动的容器 问题查找 由于docker ps
  • L298N 小车应用(附代码)

    L298N L298N是目前智能小车应用很广泛的价格也比较便宜的电机驱动 用来驱动直流电机 L298N 输出A 输出B 分别接两个直流电机 电机两根线随便接 如果发现两电机方向是反着的 就调换下接线就ok了 12V供电 这个是外部电源为驱动
  • kubernetes集群实战——暴露service供外部访问的4种方法(NodePort、LoadBalancer、ExternalName和分配公有IP)

    1 service介绍 Service可以看作是一组提供相同服务的Pod对外的访问接口 借助Service 应用可以方便地实现服务发现和负载均衡 service默认只支持4层负载均衡能力 没有7层功能 可以通过Ingress实现 servi
  • android studio3.1调试

    快捷键 ctrl alt left或者ctrl alt right 回退 前进 双击快捷键 shift 全局搜索 快捷键 shift F9 开始调试 快捷键 F6 单步执行程序 快捷键 F5 单步执行程序 遇到方法时进入 快捷键 F8 调到
  • 机器学习算法——Kmeans

    1 k mean算法的原理 1 选取K个点做为初始聚集的簇心 2 分别计算每个样本点到K个簇核心的距离 这里的距离一般取欧氏距离或余弦距离 找到离该点最近的簇核心 将它归属到对应的簇 3 所有点都归属到簇之后 M个点就分为了K个簇 之后重新
  • element 时间日期选择器限制选择范围为7天

    template 部分
  • 编写递归算法,计算二叉树叶子结点的数目。

    编写递归算法 计算二叉树叶子结点的数目 编写递归算法 计算二叉树叶子结点的数目 include stdio h 包含 getchar scanf printf include malloc h malloc 动态申请空间 函数 二叉树 结点
  • 服务器的地址信息,服务器地址信息

    服务器地址信息 内容精选 换一换 可以一次添加一台服务器 也可以一次添加同一网段连续IP的多台服务器 进入任务中心可以查看状态信息 如果状态为成功 说明服务器已添加成功 如果要自定义裸金属服务器的DNS服务器信息 需要将裸金属服务器网络设置
  • 《算法导论》笔记(15) 最小生成树 部分习题

    习题23 1 11 给定图G和一棵最小生成树T 假设减少了位于T之外的某条边的权重 因为T内的边 是连接所有结点的权重最小的 那么首先将T外的减少权重的边 u v 加入T 然后在u v中寻找所有的路径 去掉路径中权重最大的边 习题23 2
  • 5、H3C交换机ACL配置

    创建 IPv4 高级 ACL 并进入 IPv4 高级 ACL 视图 switch acl number acl number name acl name 注 IPv4 高级 ACL 的编号范围为3000 3999 创建规则 switch a
  • 无法打开计算机开始菜单,开始菜单,教您开始菜单无法打开

    win10系统开始菜单不能使用该如何是好呢 最近有位用户反映在使用win10系统的过程当中 发现开始菜单没莫名其妙的就出现了打不开的情况 这该怎么办呢 不要着急 小编这就来将处理开始菜单打不开这个问题的办法来分享给你们 我们在使用电脑的过程
  • 使用Docker Compose搭建Redis主从集群

    一 本次环境使用到了docker docker compose redis 二 我们搭建的主从集群结构如图 共包含三个节点 一个主节点 两个从节点 这里我们会在同一台虚拟机中开启3个redis实例 模拟主从集群 信息如下 IP PORT 角
  • 超越nnFormer!UNETR++:高效准确的3D医学图像分割

    UNETR Delving into Efficient and Accurate 3D Medical Image Segmentation 论文链接 https arxiv org abs 2212 04497 代码链接 https g
  • Spring Boot 配置文件这样加密,才足够安全!

    1 前景 在使用Springboot时 通常很多信息都是在application yml中直接明文配置的 比如数据库链接信息 redis链接信息等等 但是这样是不安全的 所以需要对敏感数据进行加密 这样防止密码泄露 Jasypt这个库为我们
  • Go开发命令行程序指南

    近期在Twitter上看到一个名为 Command Line Interface Guidelines 的站点 1 这个站点汇聚了帮助大家编写出更好命令行程序的哲学与指南 这份指南基于传统的Unix编程原则 2 又结合现代的情况进行了 与时
  • 封装的几种形式

    你说的时cpu的封装吗 供你参考 集成电路芯片的封装形式 自从美国Intel公司1971年设计制造出4位微处a理器芯片以来 在20多年时间内 CPU从Intel4004 80286 80386 80486发展到Pentium和Pentium
  • 基于Jenkins实现Docker应用的持续集成与部署

    先决条件 1 服务器部署安装有docker 在docker应用开发中最常见的就是开发Dockerfile文件 可以使用代码仓库来管理它 而在企业私有开发环境中是无法访问公有代码仓库 如Github 的 这时可以搭建私有代码仓库 部署安装sv
  • 堆排序专题-把一个数组变成大根堆的两种方式和根据大根堆来实现对数组的排序,

    什么是堆排序 堆排序 Heap Sort 是一种基于二叉堆数据结构的排序算法 它的基本思想是将待排序的数组构建成一个大根堆或小根堆 然后依次将堆顶元素与堆尾元素交换 并重新调整堆 直到整个数组有序 堆排序的时间复杂度为O nlogn 是一种
  • python无人机路径规划算法_RRT算法在Python中的实现,快速,拓展,随机,树

    基于智能优化与RRT算法的无人机任务规划方法研究 博士论文 基于改进人工势场法的路径规划算法研究 硕士论文 import matplotlib pyplot as plt import random import math import c
  • STM32基于GPRS模组使用HTTP协议单片机固件在线升级(IAP)

    一 前言 最近有朋友让我帮忙开发基于GPRS模组的单片机固件在线升级 这样的远程升级就两种方式 1 自己定义协议 服务器端进行bin文件拆包 一包包下发 优点 可以每包一校验还可以断点续传 不需要考虑Flash学入占用的时间 缺点 需要服务