一种新的程序在线升级的实现(学习)

news/2024/11/7 14:33:51/

介绍一种新的程序在线升级方法,以及程序在线升级在嵌入式系统中的应用和实现。设计将从系统原理和实现介绍该程序在线升级方法。利用串口作为通讯方式,自定义通讯协议。

上位机将升级文件传给下位机,下位机将数据解析后存储在内部Flash中。解析成功后下位机通过Bootloader重新装置程序实现程序升级。

随着电子技术、计算机技术和通信技术的迅猛发展,嵌入式系统已经广泛应用于工业、军事、通信、消费电子等领域,但是面对新技术的不断涌现和对系统功能、性能以及规模要求的不断提高,开发者必须能够针对客户的需求和软件中存在的Bugs及时对软件进行升级或维护,以延迟设备使用周期,改善设备性能,增强设备适应性。

传统的嵌入式软件升级通常由维护人员到达设备工作现场,并拆卸设备烧写FLASH。当设备数目庞大且分布范围广时,传统的软件升级方法则显得束手无策。设计出了一种使用在线升级程序实现高效的数据下载方法。

系统原理

在这里插入图片描述
系统由上位机软件、串口和MCU终端组成。
上位机软件与MCU终端通过串口进行通信。

与传统的程序升级不同,本设计介绍的程序在线升级方法是嵌入在应用程序中,**在程序运行的过程中可以实现程序在线升级,并且当程序在线升级失败时还可以对程序进行恢复。**而传统的程序在线升级是在BOOTLOADER代码中实现程序升级。

程序升级结构

其中电平转化芯片是TTL转232。上位机软件通过电平转化芯片与MCU连接,用户需要进行程序升级时,先通过上位机软件对要升级的二进制代码文件进行解析,检测该升级代码是否符合MCU的二进制代码。然后读取MCU标志区中的升级标志位,若标志为真,则支持程序升级,否则不支持升级。然后上位机软件将升级代码的二进制解析后下载到MCU临时区中。

利用串口进行程序升级节省了很多外部资源,在数据传输的过程中只需要一个电平转芯片就可以实现,因为PC的串口信号电平与MCU的串口信号电平不匹配,所以需要TTL转232转化芯片实现。

MCU升级工作流程

由于程序在线升级代码是嵌入在应用程序中,所以支持升级程序的代码文件应包含程序升级功能的代码。

通信采用主从方式进行传送和接收,上位机软件作为主机发送命令,MCU作为从机队命令进行响应和回复。

在串口驱动层接收到数据后,将接收到的数据传递给协议层,协议层队数据进行解析后将数据放入缓冲区,待应用层队数据进行各种处理。

应用层将接收到的数据进行处理,并对各种命令按照一定的要求进行回复,应用层将要发送的数据传递给协议层,经协议层进行协议的处理后,协议层将处理后的数据传递给驱动层,并由驱动层队数据进行发送。

上位机软件工作流程

在通信的过程中,上位机作为主机进行命令发送并对命令的回复进行解析。数据的任何传输源自于一个读取或写入文件的连接请求。

将来自于应用层的数据传递给协议层,协议层对数据进行协议上的处理,并传递给物理层发送数据。

由于串口通信无法保证数据传输的可靠性,所以应用中在应用层添加了超时、重传机制来保证数据传输的可靠性。在每一帧数据中又采用CRC校验来保证数据没有出错。

在程序升级之前,上位机软件会对升级文件进行检查,以防误程序升级文件有误。程序升级文件传输完成后,下位机会对接收到的升级文件进行CRC校验,并传输至上位机,上位机通过该校验码判断程序升级文件中是否又数据出错。在上位机软件运行的过程中,上位机软件会打印与程序有关的信息来监控程序升级。

软件实现

因为升级的代码文件是通过串口下载到MCU的内部FLASH中的,所以串口的工作显得尤为重要。
为节省CPU的资源,串口程序的接收和发送都采用中断的方式进行。这样能够保证CPU能够及时的接收串口数据。
当有中断产生时,CPU根据ISQ的中断入口地址跳转到对应的中断服务程序。
当有数据来到后,物理层将接收到的数据存储到缓冲区中。

FLASH擦除
可以通过分页机制来实现对寻址空间的扩展和FLASH页面的使用和管理。所以FLASH的擦除操作可以进行整体擦除,也可以擦除某一地址开始的一个扇区,即擦除FLASH不能擦除某一字节或一次擦除小于512字节。

  1. 设置时钟分频,设置块号和页号
  2. 定位要擦除的扇区
  3. 写扇区擦除命令
  4. 等待命令执行完成

FLASH编程

  1. 设置时钟分频,设置块号和页号
  2. 向指定的地址写若干字数据
  3. 等待上一条命令执行完成
  4. 如果未写完数据,则递增源地址和目标地址,重复2和3步骤

看门狗程序

  1. 上位机将代码文件传输至MCU后,设置相应升级标志,表明升级程序已经成功下载至下位机。
  2. 为了让MCU运行升级后的程序,则需要让MCU重新启动,此时设置的方法是禁止看门狗模块,当看门狗运行时间到,没有清除看门狗标志,则MCU会重新启动运行升级程序。

http://www.ppmy.cn/news/730925.html

相关文章

Macbook Pro 201 装Win10 声卡_苹果MacBook全家桶将发布:重点不是Pro系列

今早,苹果正式官宣,将于北京时间11月11日凌晨两点,举行线上发布会。其海报标题写着“返场好戏来了。”这是苹果今年第三次举行线上发布会,此前在WWDC上,苹果正式宣布将会推出采用苹果自研芯片的MacBook。这次的“返场好…

【多线程】锁策略

1. 说在前面 这里的锁策略内容,属于典型的面试八股文!如果未来工作,需要实现一把锁,那么得好好研究下锁策略,但基本上不会让我们自己设计一把锁的。 而这里的锁策略内容不局限于 Java,任何 "锁" …

进程和线程基础知识全家桶,30 张图一套带走

作者 | 小林coding 来源 | 小林coding 前言 先来看看一则小故事 我们写好的一行行代码,为了让其工作起来,我们还得把它送进城(进程)里,那既然进了城里,那肯定不能胡作非为了。 城里人有城里人的规矩&#x…

M1芯片处理器如何安装adobe全家桶 PR/PS/AE/LR/AU/AI等 解决安装adobe闪退问题 Adobe全部支持MAC苹果 M1芯片处理器

作为一个摄影爱好者,早10年前就一直使用苹果mac系统做修图!也算是个mac忠实粉丝了。 就在11月份,苹果发布了基于Apple Silicon M1 SoC芯片打造新Mac系列产品,全新的M1处理器的诞生带来了很多革命性的变化,因为这标志着苹果正式开启…

vue全家桶

《vue全家桶》 目录 认识Vue.js 准备工作 Vue实例 模板语法 计算属性与侦听器 条件渲染与列表渲染 表单输入与绑定 组件基础 组件通信 路由 状态管理与Vuex 网络请求与axios 动画与过渡效果 测试与调试 性能优化与部署 项目实战 认识Vue.js Vue.js是一套用于…

Adobe全家桶-百度网盘-阿里云盘-内置window与Mac版本全系列

百度网盘 链接:https://pan.baidu.com/s/1wiiqMdqZnHYTBgbS1yuymA 提取码:p373 阿里云盘 https://www.aliyundrive.com/s/bF6u5nLFn8j

React 全家桶入门教程 01

React 全家桶入门教程 01 前面是基础课程(难度小,略过),后面是案例 目的 巩固react基础知识,查漏补缺(熟悉的部分快进)学习相关的库的使用 https://study.163.com/course/courseMain.htm?courseId1210995818 共计126课时,2021年1…

iOS 定位原理

iOS 定位原理 iOS定位有三种方式<iBeacon 不再本次研究范围内>, 手机基站定位, wifi定位, GPS(AGPS辅助定位系统, 比GPS更优), apple会根据当前信号情况和网络环境, 动态的去调整三种方法组合起来的调用次数和顺序, 这个开发者无法干预, 只能在CLLocation中直接拿到计算…