STM32 10个工程篇:1.IAP远程升级(六)

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

       在IAP远程升级的最后一篇博客里,笔者想概括性地梳理总结IAP程序设计中值得注意的问题,诚然市面上或者工作后存在不同版本的IAP下位机和上位机软件,也存在不同定义的报文格式,甚至对于相似的知识点不同教程又有着完全不同的解读,这就很容易让初学者摸不清思路,所以在最后不准备过度赘述代码上的细枝末节,实际上大家在搞清楚整个IAP升级的过程后,便可以自定义报文设计出无数种下位机和对应的上位机软件,真实投产项目中IAP升级设计也是基于这些思想,但需要考虑到通信解析的完整性,即上位机和下位机的报文握手机制和重发机制,当然这些机制笔者都已添加到上位机软件中。

      另外笔者最近也买了一台新的戴尔小型台式主机,正考虑录制哔哩哔哩视频,前段时间也收到哔哩哔哩官方的邀请,但STM32和FPGA具体录制什么内容,具体怎么操作这些录屏软件等还在思考学习中,如果做视频想着视频内容不会太长都保持在一刻钟内,练习普通话言简意赅把关键点说明清楚,配上相关的背景知识、代码讲解、具体操作、上板现象等。

概括性地下面这些是笔者对IAP单片机升级程序设计中的关键技术点总结:

  1. 单片机上电首先进入的是Bootloader段程序,而默认是直接跳入Application段程序,这时候便自然而然地需要一些逻辑判断,比如板载Eeprom或者Flash置位相关标志位,即开机上电后单片机先读取掉电保存的标志位,如果标志位是跳转Application,则直接从Bootloader跳转到Application,如果标志位是停留Bootloader,则停留在Bootloader进行等待;
  2. 上位机中有“app跳入”和“boot跳入”两个按键,即按下两个按键,单片机向Eeprom或者Flash置位相关标志位再调用API函数NVIC_SystemReset(),单片机重启后立刻执行读取标志位操作,即可实现跳转到Application或者停留在Bootloader;
  3. 如果单片机没有外挂Eeprom或者Flash,那么也可以用系统时钟实现这个功能,如图1所示是系统滴答时钟默认是1ms,这里笔者用了10s的滴答时钟进行超时计时,即10s内单片机没有收到上位机的“boot检测”则直接跳转到Application,反之则停留在Bootloader等待上位机端发送BIN文件的二进制码;
  4. STM32单片机中向内部Flash中写入需要先解锁后加锁,即调用HAL_FLASH_Unlock()和HAL_FLASH_Lock()函数,同时要在HAL_FLASH_Unlock()解锁Flash并对Application段的Flash进行全擦除操作,再进行写入操作;
  5. 上位机端是主机,下位机STM32端是从机,为了确保程序的稳定性和可靠性,应引入报文握手机制和重发机制,这里很好理解上位机端每发一条指令,下位机都需要给出回应,如图2所示是下位机端正确和错误应答报文的定义,上位机端在发送任何一条报文后即进行了5s的超时等待,在这5s内下位机回复正确报文,上位机端则判断此条报文有效,反之收到下位机回复错误报文或者超过5s无回复判断此条报文无效,则如果是判断和跳转报文在上位机的信息菜单中显示相关提示,如果是发送BIN文件报文最多5次的进行重发;
  6. 在上位机发送BIN文件报文时,除了特定报头一般性地还需要加入报文帧信息,例如目前是第几帧数据,一共需要发送多少帧数据,举个例子在这个上位机中笔者把BIN文件按照1024字节进行划分,当然这里也可也划分成512字节和256字节,相对地要发送更多报文才能实现IAP升级,如图3所示是BusHound软件抓包上位机发送的BIN文件报文,其中红框固定报文头“7E 7E 5A”,“01”是命令码,而“00 06 00 07”代表这个BIN文件需要发送8个1024字节的报文,当前这个报文是第7包报文(报文统计从0计数),这些报文定义在前面博客中均有详细介绍,下位机STM32端在收到当前是第一包报文后就从Application段的Flash进行全擦除操作并进行Flash去锁处理,下位机检测CRC校验正确则回复上位机正确报文,触发上位机发送下一包BIN文件报文,下位机STM32端在收到当前报文是最后一包报文后即进行Flash加锁处理;

STM32 10个工程篇:1.IAP远程升级(六),STM32 10个工程,stm32,嵌入式硬件,单片机

图1 系统滴答时钟10s超时等待计时

STM32 10个工程篇:1.IAP远程升级(六),STM32 10个工程,stm32,嵌入式硬件,单片机

图2 下位机的正确和错误应答报文

STM32 10个工程篇:1.IAP远程升级(六),STM32 10个工程,stm32,嵌入式硬件,单片机

图3 Bus Hound软件抓包上位机发送的BIN文件报文

       如图4所示是KEIL5下在线仿真的截图我们输入0x08008000这个Flash偏移地址,即可发现和如图5所示的用WinHex插件打开的Application程序RTC.Bin文件内容是完全一致的,则侧面说明了整个IAP升级的可靠性和稳定性。

STM32 10个工程篇:1.IAP远程升级(六),STM32 10个工程,stm32,嵌入式硬件,单片机

图4 KEIL5下在线仿真截图

STM32 10个工程篇:1.IAP远程升级(六),STM32 10个工程,stm32,嵌入式硬件,单片机

图5 WinHex插件打开的Application程序RTC.Bin文件内容

       如图6所示是KEIL5中配置Application程序自动生成RTC.BIN文件的操作方法,因为KEIL中默认生成的是.HEX文件,而IAP升级中我们需要的是.BIN文件所以需要配置下在程序文件夹下的指定路径下生成.BIN文件,如图7所示是笔者自己编写的“豌豆升级IAP上位机软件”,在IAP升级过程中的截图。

STM32 10个工程篇:1.IAP远程升级(六),STM32 10个工程,stm32,嵌入式硬件,单片机

图6在KEIL5中配置Application程序自动生成RTC.BIN文件

STM32 10个工程篇:1.IAP远程升级(六),STM32 10个工程,stm32,嵌入式硬件,单片机

图7 IAP升级过程中上位机的截图文章来源地址https://www.toymoban.com/news/detail-740711.html

到了这里,关于STM32 10个工程篇:1.IAP远程升级(六)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 嵌入式——新建STM32工程(标准库)

    目录 一、初识标准库 1.CMSIS标准及库层级关系 2.库文件介绍 (1)Libraries文件夹 ①CMSIS文件夹 ②STM32F10x_Std_Periph_Driver文件夹 ③ 在用库建立一个完整的工程时,还需要添加stm32f10x_it.c、 stm32f10x_conf.h 和 system_stm32f10x.c文件 (2)Project文件夹 (3)Utilities文件夹 3.库各文件之间的关

    2024年01月23日
    浏览(53)
  • STM32开发环境搭建&工程创建(嵌入式学习)

    简介 STM32CubeMX是STMicroelectronics公司提供的一款集成开发环境(IDE)工具,用于快速配置和初始化STM32微控制器系列的软件工程。它提供了图形化界面和交互式工具,使开发者能够轻松地生成STM32微控制器的初始化代码和配置文件。 STM32CubeMX具有以下主要功能和特点: 微控制器

    2024年02月11日
    浏览(66)
  • 嵌入式系统开发笔记104:在STM32CubeIDE中导入工程

      本文讲述如何在STM32CubeIDE中导入现有工程。

    2024年02月16日
    浏览(52)
  • stm32毕设分享 stm32单片机的远程WIFI密码锁 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(54)
  • 嵌入式毕设分享 stm32 wifi远程温控风扇系统

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(72)
  • 【嵌入式开发工具】STM32+Keil实现软件工程搭建与开发调试

    本篇文章介绍了使用Keil来对STM32F103C8芯片进行初始工程搭建,以及开发与工程调试的完整过程,帮助读者能够在实战中体会到Keil这个开发环境的使用方法,了解一个嵌入式工程从无到有的过程,并且具备快速搭建一个全新芯片对应最小软件工程的基本能力思路。文章首先介绍

    2024年02月05日
    浏览(59)
  • 通信工程毕设 Stm32酒驾检查系统 - 单片机 嵌入式 物联网

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(131)
  • 通信工程毕设 Stm32单片机的音乐播放器设计 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(53)
  • 通信工程毕设 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月21日
    浏览(120)
  • 通信工程毕设 基于Stm32的便携体测仪(心率 体温) - 单片机 嵌入式 物联网

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包