基于STM32充电桩系统远程升级设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于STM32充电桩系统远程升级设计

基于STM32充电桩系统远程升级设计   摘 要:随着嵌入式设备的广泛应用,对嵌入式设备程序升级的要求也越来越高。在探讨应用编程(IAP)原理的基础上,设计一种基于STM32的充电桩系统远程升级方案。系统阐述了在应用中编程的技术原理以及升级流程,并通过TFTP方案实现了充电桩固件远程升级。实际应用表明,该方案具有较高的应用价值和推广价值。   关键词:STM32;Flash;在应用中编程(IAP);远程升级;充电桩   DOIDOI:10.11907/rjdk.162697   中图分类号:TP319   文献标识码:A 文章编号:1672-7800(2017)007-0077-04   0 引言   随着新能源电动汽车的推广与普及,电动汽车配套设施充电桩正在蓬勃发展。当前充电桩的布设往往采取建立充电站的形式,各充电站之间距离远,充电桩数量多。充电桩设备投入使用后,由于程序本身的漏洞或者用户新的需求,需要对桩程序进行升级。传统的升级方法是相关技术人员到现场用代码烧写工具对设备进行升级,工作量大,升级过程复杂。本文提出的基于STM32的充电桩远程升级方案,可以让用户通过以太网实现对目标充电桩系统程序的实时更新,提高充电桩系统的可拓展性和可维护性。   1 设计原理   1.1 STM32存储原理   STM32是一种32位微处理器[1],共有4GB线性地址空间,分为8个存储块,每个存储块512MB。第一块为代码区,用来存储程序的代码文件以及常量,主要分为嵌入式闪存、系统存储区、选项字节等。第二块内部包含嵌入式SRAM区等,程序的变量以及堆栈存储在这一块。不同型号的STM32芯片,闪存存储器(Flash)容量也不同[2],最小的只有16K字节,最多的能达到1 024K字节[3]。本方案采用的STM32F207微控制器具有1 024K的Flash,起始地址为0终止地址为0x080FFFFF,总共分为12个扇区,其中0~3号扇区大小为16K,4号扇区大小为64K,5~11号扇区大小为128K,Flash模块组织如表1所示。   1.2 IAP原理   IAP(In-Application Programming)是指在用户程序运行过程中对其Flash区域进行程序烧写[4],烧写完成后,运行新的程序,完成升级。要实现IAP功能,需要将项目代码分成两部分进行设计。第一部分称为装载区,即Bootload区,这一区域程序主要用来判断设备是否需要进行用户程序升级并进行相应的跳转,装载区代码必须从Flash首地址开始烧写。第二部分称为用户区,即App区,这一区域用来存放真正的功能代码。两部分代码分别存储在Flash的不同地址上,设备上电以后系统首先执行装载区程序,并根据是否需要升级跳转执行升级代码或者用户代码。在实际设计过程中,可以设计多个App区,以防止在升级失败时系统可以运行之前的程序。   2 IAP的实现   2.1 装载程序   装载程序是IAP实现过程中最重要的一步,在进行装载程序设计时,需要保证逻辑清晰、代码简明。当设备上电开始运行时,系统从Flash的首地址即0x8000000开始执行装载程序。首先完成的是STM32的初始化工作,包括堆栈和内核的初始化。接着读取存储器中的用户升级标志位[5],若标志位为0x55,则说明没有升级请求,程序跳转执行用户区代码;若标志位为0xAA,说明有升级请求,需要对用户程序进行更新,接下来要对时钟和外设进行相应的初始化,并在主循环中等待用户程序文件写入FLash的用户程序区,接受完成后将用户升级标志位置为0x55,同时执行软件复位。整个装载程序的流程如图1所示。   要保证装载程序能够正常运行,需注意两个方面:一是在跳转执行用户程序时,要将程序指针重定向并指向程序用户程序起始地址,堆栈指针指向用户堆栈的起始地址;二是在将用户程序文件写入Flash之前需要对Flash进行解锁并擦除当前Flash区域中的代码。   2.1.1 跳转实现   STM32内部通过中断向量表来响应中断,程序正常启动时,将首先从中断向量表中取出复位中断向量执行复位中断程序完成启动。中断向量表的起始地址是06],当有中断来临时,STM32内部硬件机制会将PC指针强制指向中断向量表处,并根据中断源取出对应中断向量执行中断服务程序。加入IAP以后,如果没有升?请求,程序需跳转执行用户代码,启动流程如图2所示。   (1)STM32复位后,从0出复位中断向量的地址,并跳转到复位中断服务程序,在执行完中断复位程序之后跳转到IAP的main函数当中。   (2)在执行完IAP以后(如果需要新的用户代码写入Flash或者没有更新直接跳转,用

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档