基于IAP的嵌入式系统在线编程设计(学习)

这篇具有很好参考价值的文章主要介绍了基于IAP的嵌入式系统在线编程设计(学习)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要:为了实现嵌入式系统程序的在线升级,提出一种基于IAP在线编程的程序更新方法。
以STM32L431控制器为例,该方法对控制器的片内FLASH进行区域划分,分别存放引导程序、执行程序及待更新程序。

系统通过运行引导程序将待更新程序更新到执行程序的FLASH区域,程序更新成功后跳转至新的执行程序运行。

该设计成功实现了FLASH程序的在线更新并进行了实验验证,其操作简单、速度快、正确率高。

引言

当今社会,嵌入式系统已经广泛应用于各行各业,人们对嵌入式产品的要求也越来越高。
由于嵌入式系统软件需要经常更新才能更加适应环境变化,满足日常功能所需,所以在线更新升级程序的技术就显得很重要。

传统的程序升级方法需要将调试工具通过线缆连接到电路板上的JTAG接口,对微处理器进行程序下载更新,这种方法需要重新拆卸组装设备,影响系统的可操作性。

IAP技术简介

传统的单片机在线编程方式有ICP、ISP和IAP三种。
ICP编程需要将单片机芯片外接在线仿真器才可进行编程。
ISP与IAP技术都只需要单片机内置Bootloader进行程序引导实现编程。
ISP编程通信方式较为简单,其系统内部自带Bootloader程序,只需在系统运行前由Bootloader通过通信端口进行程序更新和原有数据擦除。

IAP的Bootloader由用户设计,且是在系统运行过程中操作,主要通过对FLASH写入Bootloader程序之后运行系统,使用户程序在 Bootloader的引导下对 FLASH 烧写和擦除数据。

本设计将FLASH趋于分为两个主要部分:Boot-loader和FLASH_APP。
为了避免程序失败使当前运行程序停止,将FLASH_APP细化为FLASH_APP_A和FLASH_APP_B,用来存放执行程序和待更新程序。
当系统通电后,先执行Bootloader代码,该程序主要具备两个功能:

  1. 引导用户程序FLASH_APP的远程更新。
  2. 向用户程序FLASH_APP跳转。

若有程序更新指令下达,则将FLASH_APP_B区中的代码转移到FLASH_APP_A区进行更新,然后跳转至更新成功的FLASH_APP_A中执行用户程序;若没有更新指令或更新失败,则继续执行FLASH_APP_A区中的程序。

硬件设计

基于IAP的嵌入式系统在线编程设计(学习),论文学习,学习
主要包括主控芯片、时钟电路、复位电路、电源电路、JTAG接口电路。

系统上电后,上位机借助JTAG调试器将Bootloader程序烧写至嵌入式系统,烧写成功后,上位机软件通过USB串口将生成的BIN文件写入,并下发程序更新等各种指令。

Bootloader只需烧写一次,后续程序更新将相关 BIN 文件通过串口引导至指定 FLASH 区域即可。

FLASH区域划分

FLASH 程序空间被分为3段空间用来实现程序更新,分 别 为 Bootloader 空 间、FLASH_ APP_ A 空 间 和FLASH_APP_B 空间。
基于IAP的嵌入式系统在线编程设计(学习),论文学习,学习

Bootloader软件设计

嵌入式在线升级系统包含上位机控制系统和嵌入式设备终端两部分。
上位机主要是将编译完成的烧写文件打包处理,发送至嵌入式设备。
嵌入式设备接收时先寄存代码帧的帧个数和帧计数,然后判断数据帧的帧头和校验和。
若校验和正确,将该帧的源码写入FLASH_APP_B对应空间,将帧计数反馈给上位机计算更新进度。

例如,程序源码为20KB,每1KB为1帧,若当前反馈第12帧,则计算后的更新进度为60%,源码下发的帧间隔为300ms,当更新进度100%后显示更新完成。
更新成功后,将FLASH_APP_B程序完整地拷贝到FLASH_APP_A空间,同时将程序版本写入FLASH对应的空间,加锁FLASH,跳转至对应FLASH_APP空间的函数入口。

程序更新完成后,嵌入式设备给上位机发送反馈帧命令,并将写入FLASH的数据校验码返回给上位机,上位机收到校验码并校验无误后,结束与嵌入式设备的通信。

嵌入式系统在线升级的关键部分在于Bootloader引导程序的设计。
在本次提出的IAP在线编程中,将引导程序功能分为3个状态进行分析,分别为空闲态、跳转态以及升级态。
基于IAP的嵌入式系统在线编程设计(学习),论文学习,学习
“空闲态”为系统上电时,Bootloader软件处于等待状态,当接收到上位机指令后,进入下一状态。
“升级态”时主要完成FLASH执行程序区域的擦除和烧写操作,重新读取执行程序区的数据并进行检验,将结果反馈给上位机。

状态转换只有空闲态转升级态、空闲态转跳转态、升级态转跳转态3种。

基于IAP的嵌入式系统在线编程设计(学习),论文学习,学习

程序软件配置

打开Bootloader工程文件,在Keil中设置IROM1Start:0x08000000;Size:0x8800。
基于IAP的嵌入式系统在线编程设计(学习),论文学习,学习
打开FLASH_APP工程文件,设 置 “IROM1Start:0x08009800;Size:0x1C000”。

同时,修改void SystemInit(void)函数,设置对应区域的中断向量表,程序如下:
基于IAP的嵌入式系统在线编程设计(学习),论文学习,学习文章来源地址https://www.toymoban.com/news/detail-614925.html

到了这里,关于基于IAP的嵌入式系统在线编程设计(学习)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【毕业设计】基于Arduino的智能灌溉系统 - 嵌入式 单片机 物联网

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目,大家可用于 课程设计 或 毕业设计 基于Arduino的智能灌溉系统 单片机-嵌入式毕设选题大全及项目分享: https://blog.csdn.net/m0_71572576/article/details/125409052 rduino NANO开发板 1块 IO扩展板 1块 IO扩展模块包 1套 开发工具

    2024年02月05日
    浏览(69)
  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于AUTOSAR架构的AT控制系统研究与实现

    目录 前言 国内外研究现状   国外研究现状   国内研究现状

    2024年02月07日
    浏览(42)
  • 嵌入式系统项目设计——基于LED、按键、蜂鸣器的打地鼠游戏(完整代码)

    内容摘自上学期嵌入式系统课程设计最终的实验报告,因为CSDN不支持上传word资料,所以我就摘录下来写进文章里了,希望可以帮助到你 1.1选题背景 打地鼠游戏是一种非常受小孩子欢迎的游戏,拥有数量极其广大的受众,所以它的市场前景非常广阔。当今社会虽然存在各种各

    2024年02月09日
    浏览(29)
  • 【毕业设计】基于RFID的门禁系统 - 单片机 物联网 嵌入式 stm32

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 如何使用RFID技术构建一个单片机门禁系统 基于RFID的门禁系统 大家可用于 课程设计 或 毕业设计 单片机-嵌入式毕设选题大全及项目分享: https://blog.csdn.net/m0_71572576/article/details/125409052 本篇博客,学长先向大家介绍射频识别

    2024年02月03日
    浏览(35)
  • 毕业设计 - 基于单片机的智能饮水机系统设计与实现 (物联网 嵌入式 单片机)

    Hi,大家好,学长今天向大家介绍一个 单片机项目 基于单片机的智能饮水机系统设计与实现 大家可用于 课程设计 或 毕业设计 这次设计的智能饮水机就是单片机结合传感器的一个应用。 该系统设计综合单片机以及电子技术理论,从生活实际出发,完善了饮水机的功能。整个

    2024年02月03日
    浏览(79)
  • 【嵌入式开发学习】__扒一扒单片机串口IAP原理

    目录 一、什么是IAP? 二、串口IAP实验 1. 实验说明 2. 工程说明 IAP工程: LED工程: 3. IAP源码说明  (1)主函数: (2)主菜单函数Main_Menu (3)下载程序功能函数SerialDownload  4、下载验证 (1)下载IAP程序  (2)通过IAP程序引导下载LED程序 (* ̄︶ ̄)创作不易!期待你们的 点

    2024年02月20日
    浏览(36)
  • 【毕业设计】基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸

    Hi,大家好,今天向大家介绍一个 单片机项目, 大家可用于 课程设计 或 毕业设计 基于单片机的智能鱼缸系统设计与实现 🔥 项目分享与指导: https://gitee.com/sinonfin/sharing 近年以来,随着我国综合实力飞速飙升,人们对物质和精神生活质量的要求也不断提升,各式各样的智能

    2024年02月04日
    浏览(61)
  • 【蓝桥杯】【嵌入式组别】第九节:MCP4017编程设计

    他本质是一个IC器件,也就是本质是一个芯片。 芯片内部是一些电阻网络,是通过很多模拟开关来切换不同的阻值的。 那么如何控制芯片内部的不同开关从而实现不同的阻值呢?在本竞赛开发板上是通过IIC总线实现CPU向本芯片发送数据的,告诉芯片要打开多少开关,打开哪几

    2023年04月08日
    浏览(71)
  • 嵌入式ARM设计编程(三) 处理器工作模式

    文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AIShareLab】回复 嵌入式 也可获取。 (1) 通过实验掌握学会使用msr/mrs 指令实现ARM 处理器工作模式的切换,观察不同模式下的寄存器,加深对CPU 结构的理解; (2) 通过实验掌握ld 中如何使

    2024年02月03日
    浏览(38)
  • 嵌入式ARM设计编程(四) ARM启动过程控制

    文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AIShareLab】回复 嵌入式 也可获取。 一、实验目的 (1) 掌握建立基本完整的ARM 工程,包含启动代码,C语言程序等; (2) 了解ARM启动过程,学会编写简单的C 语言程序和汇编启动代码并进行

    2024年02月06日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包