HTTP模式下STM32程序远程升级设计

这篇具有很好参考价值的文章主要介绍了HTTP模式下STM32程序远程升级设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

针对嵌入式终端设备架设分散、数量庞大以及应用程序更新迭代速度快带来的程序升级困难局面,运用STM32微控制器的在应用中编程(IAP)原理,设计了通过以太网远程升级程序的方案。

HTTP协议和LwIP协议的使用,不仅让整个方案具备高安全性、可靠性。易用性,还有效降低了硬件资源的消耗。该方案稳定、可靠、操作简单,可以广泛应用于网络环境下的IAP升级,具有较高的推广价值。

引言

目前STM32设备程序升级的通用解决方案是使用在应用中编程(IAP)原理进行设计,通过串口、USB、4G无线模块等通信方式将待升级程序文件传输至设备端,然后直接写入用户程序存储区来实现。

在实际使用场景中,串口、USB的方式不支持远程操作,而4G无线模块通信稳定性较差,硬件成本较高。

针对上述问题,本文以某信号处理项目健康管理单元模块为背景,开展使用以太网通信方式实现程序远程升级方法的研究,使用轻量化的通信协议以减少对内存资源的占用,并提供精简、安全的网页操作界面供用户使用。

LwIP协议

LwIP是一个小型开源的TCP/IP协议栈,有无操作系统的支持都可以运行,其实现的重点是在保持TCP协议主要功能的基础上最大程序地减少对设备内存的占用,以便在硬件资源紧张的嵌入式系统中使用。
其源代码全部使用C语言实现,开发人员可以方便地实现跨处理器、跨操作系统的移植。

数据流向

基于LwIP内核自身的内存管理策略和网络数据包管理策略,网卡数据传入LwIP内核的流程大致如下:当网口接收到网络数据产生一个中断后就会释放一个信号量,通知网卡接收数据区处理这些收到的数据,再将这些数据封装成消息投递到tcpip_mbox邮箱中,LwIP内核线程得到这个消息后就对其进行解析,根据消息中数据包的类型进行处理,同时调用ethernet_input函数决定是否递交到IP层。
如果是ARP包,内核就不会递交给IP层,仅仅只更新ARP缓存表;如果是IP数据包,则递交给IP层去处理。
stm32网络升级程序,论文学习,http,stm32,网络协议
这样的数据流向使内核处理数据包的效率得到较大提升,且各层之间保持相对独立,某一层并不需要指定下一层如何实现,仅需知道该层通过层间接口所提供的服务即可。用户程序与内核是完全独立的,通过操作系统进程间通信机制进行数据交互。

HTTP服务器

HTTP是用于从万维网服务器传输超文本到本地浏览器的传输协议,它是基于TCP/IP通信的,使用“客服端-服务器”模型运作,是一个应用层协议,可以用来传输服务器的各种资源,如文本、图片、音频等,本设计用它来传输应用程序的二进制文件。

资源管理

统一资源标识符(URI)是一个通用的概念,由2个子集组成,分别是统一资源定位符(URL)和统一资源名称(URN)。
URL是互联网上用来标识某一处资源的绝对地址,即通过资源的位置来标识资源,使用它就能找到资源。
其通用格式如下:😕/:@:/

;?#
stm32网络升级程序,论文学习,http,stm32,网络协议
URL不一定包含所有的组件内容,常用的URL组件如表1所示。
本方案中升级网页的地址http://192.168.0.12就是一个最简单的URL,地址中的数字同时也是设备的IP地址,改变IP地址即可切换到局域网内不同终端设备的升级网页,有效提升程序升级效率。

HTTP报文

HTTP报文是在http应用程序之间发送的数据块,它包裹着请求数据交换的信息。
HTTP报文分请求报文和响应报文,其结构基本相同,分为:

  1. 起始行,它描述请求或响应的基本信息
  2. 头部,它使用关键词-数值的形式详细地说明报文
  3. 实体,即实际传输的数据,可以使纯文本,图片,视频等二进制数据。

一个完整的HTTP报文如图所示,需要特别注意的是,头部和实体之间有一个空行。
stm32网络升级程序,论文学习,http,stm32,网络协议

请求行
请求报文的起始行称为请求行,它简要描述了客户端想要如何操作服务器的资源。
请求行的构成:

  1. 请求方法:GET/POST,表示对资源的操作。
  2. 请求目标,通常是一个URI,标记了请求方法要操作的资源。
  3. 版本,表示报文使用的HTTP协议版本。
    stm32网络升级程序,论文学习,http,stm32,网络协议

状态行
响应报文的起始行又称为状态行,主要用来标识服务器响应的状态。
状态行的构成:
4. 版本,表示报文使用的HTTP协议版本。
5. 状态码,一个3位数,用代码的形式表示处理结果,比如200是成功,500是服务器错误。
6. 原因,作为数字状态码补充,是更详细的解释文字,帮助人理解原因。

stm32网络升级程序,论文学习,http,stm32,网络协议

总体架构

系统主要由远程电脑主机、嵌入式终端设备组成,2者通过网线接入到同一局域网。
当终端设备需要进行程序升级时,在电脑主机端通过网页登录HTTP服务器,输入用户名和密码进入到程序升级网页,然后选择目标程序文件并点击升级按钮,即可对设备程序进行升级。

在嵌入式设备端,系统引导程序加载完毕后,首先检查是否需要对设备程序进行升级,若检查到标志位,则通过以太网接口接收目标程序文件,校验成功后烧写到用户应用程序分区中,接着复位系统,便可运行升级后的用户应用程序;若为检测到标志位,则直接运行用户原来的应用程序。

stm32网络升级程序,论文学习,http,stm32,网络协议
相比采用串口、USB、无线模块等实现的在线升级功能,本方案对于设备维护人员来说,无需进行复杂的接线操作,免去上位机繁琐的安装及设置过程,只要电脑主机和设备端位于同一局域网即可。

LwIP支持的通信协议较为完整,支持多种编程接口,开源免费,其流畅运行只需要40kB的存储空间和几十kB的运行内存,消耗的硬件资源较少。

升级代码由跳转检测代码和用户程序烧写代码2部分组成,当检测代码识别到升级标志位后,系统则等待网络中传来的程序文件。程序文件传送完毕且校验无误后,随机跳转到用户程序区烧写代码,完成终端设备的程序升级工作。

跳转代码

为了区别IAP模式与正常运行的用户程序,系统在初始化完外围器件后需要读取一个状态标志位来确定是否进行用户程序升级。
使用内部存储区的某个特定区域来存放升级标志位,当程序读取到该标志位后便进入IAP模式,否则直接运行用户应用程序。

当跳转程序检查栈顶地址合法后便设置用户代码区第二个字位程序开始地址,接着初始化应用程序堆栈指针,最后跳转到应用程序,等待接收升级文件。文章来源地址https://www.toymoban.com/news/detail-672130.html

到了这里,关于HTTP模式下STM32程序远程升级设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 OTA远程升级

    前言:OTA全称是over the air,主要应用于物联网设备作为更新代码使用,其原理在不同芯片上相通,应用较为广泛。 一、OTA硬件组成 ​ 对于OTA硬件来讲,常用的硬件组成是无线芯片+MCU,常用的无线模块有WIFI、4G、LORA甚至是蓝牙等具有无线传输功能的设备,MCU则是例如51,STM3

    2024年02月11日
    浏览(33)
  • 基于stm32作品设计:多功能氛围灯、手机APP无线控制ws2812,MCU无线升级程序

    作品哔哩哔哩视频:https://www.bilibili.com/video/BV1Yb4y1a7AQ#reply5536921990 资料链接: 蓝牙彩灯v1.01资料链接: CSDN: https://download.csdn.net/download/mbs520/25149435 百度网盘: https://pan.baidu.com/s/14Vout7Q2P6JBDZCCd8Gm6w 提取码:b7it 蓝牙彩灯v1.03资料链接: https://download.csdn.net/download/mbs520/25150035 取

    2024年02月09日
    浏览(32)
  • stm32利用bootloader与app实现远程升级

    1、flash空间分配: 事先在flash开辟好空间,假设flash为128k,我这边给它分为五个区,分别为bootloader、标志位、application、application backup、标签ID。 (注:升级之前,app的代码烧录于application的flash存储区域内。用于app升级的 bin文件 大小一定要小于自己开辟的flash空间大小)

    2024年02月13日
    浏览(37)
  • STM32 10个工程篇:1.IAP远程升级(五)

            伴随着催更不断,周日晚上来继续撰写STM32 IAP远程升级的项目例程,在这篇博客中笔者主要结合上位机报文发送机制来介绍下位机的报文解析设计,坚持做原创博客确实是一件很考验耐力的事情,一方面博客的文字和图片需要投入大量精力和时间,另一方面想要把意

    2024年02月13日
    浏览(29)
  • STM32 10个工程篇:1.IAP远程升级(三)

           本想着周六去更新 IAP 远程升级(三),但是周三单位突然通知团建周六去爬水长城,晚上回来已经精疲力竭,打开电脑不由地点开网易云音乐听着听着感觉很乏,去床上躺了会可一觉醒来已经夜里三点,于是调整一下周日晚上开始撰写这篇博客,言简意赅不想赘述过

    2024年02月13日
    浏览(28)
  • STM32 10个工程篇:1.IAP远程升级(六)

           在IAP远程升级的最后一篇博客里,笔者想概括性地梳理总结IAP程序设计中值得注意的问题,诚然市面上或者工作后存在不同版本的IAP下位机和上位机软件,也存在不同定义的报文格式,甚至对于相似的知识点不同教程又有着完全不同的解读,这就很容易让初学者摸不

    2024年02月06日
    浏览(35)
  • STM32 10个工程篇:1.IAP远程升级(四)

          在前三篇博客中主要介绍了 IAP 远程升级的应用背景、下位机的实现原理、以及基于 STM32CubeMX 对 STM32F103 串口 DMA 的基本配置,第四篇博客主要想介绍 Labview 端上位机和下位机端的报文定义和通信等。        当笔者工作上刚接触到 STM32 IAP 升级的时候,实事求是地说存

    2024年02月06日
    浏览(29)
  • STM32 USB DFU固件升级的设计与实现

    STM32微控制器支持通过USB DFU(Device Firmware Upgrade)协议进行固件升级,这使得设备可以在不需要特殊的调试工具或编程器的情况下,通过USB接口实现固件的更新。 在本文中,我们将介绍如何设计和实现STM32 USB DFU固件升级功能,并提供相关的代码示例。 ✅作者简介:热爱科研

    2024年01月25日
    浏览(34)
  • stm32 在线升级程序 bost IAP程序 + app程序

    机器内 bootloader程序 启动默认程序 默认程序有 串口判断 是否收到 升级命令 收到升级命令后 接受串口发送过来的 更新程序 接受完成后 跳转到新程序位置开始执行 https://www.zhihu.com/people/lian-zhu-50 首先arm单片机控制程序运行是通过PC指针完成的,PC指到哪里,程序就运行到哪里

    2024年02月10日
    浏览(39)
  • STM32 IAP应用开发--bootloader升级程序

    原文链接:https://blog.csdn.net/ShenZhen_zixian/article/details/129424077 什么是IAP? IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。在应用编程(IAP)是用户的应用代码对片内Flash存储器进行擦除/编程的方法。这种方式的典型应用就

    2024年01月17日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包