清晨一大早起来开始撰写STM32 10个例程篇的第一章即串口IAP远程升级,虽然网络上有很多免费和付费的STM32教程,但是仍然不断地说服自己沉住气、静下心写一份独一无二的,这份独一无二中也凝聚了一名MCU工程师5年间不断地项目迭代积累,这时突然想到FPGA特权同学书序言里面一句话:没有人会记得你做过多少项目,但是一定会有人记得你写过一本好书,这句话从侧面说明了一个不争的事实:有价值的教程和文档确实太少了,所以可能一本好书或者一个博客能被人所传颂吧!

关于IAP远程升级笔者打算多写几篇博客,其本身确实是项目当中必备的一个开发要点,当我们的产品最后批量转产封装到密闭的容器或者结构内,这时再想着去拆机用STLINK或者JLINK下载器更新程序是非常不现实的,那么自然而然地就需要PC端上位机通过RS232、LAN、USBTMC等接口把APP的BIN文件打包发送到下位机,下位机STM32在接收后再把二进制码自己写入对应的FLASH空间里实现不用下载器远程升级程序的目标。

这时可以假设一个真实的场景,比如大家去参加公司技术面试,面试官上来就抛出一个问题:在项目中用过IAP升级吗,可以介绍介绍具体的实施细节吗?

也都是从学生时代过来笔者本科刚毕业只知道有串口这个名词,硕士刚毕业知道有串口助手和波特率玩过STM32开发板demo,当然面试官问这个问题,心里自然有一个期待答案,那么严格要求的话,这道题回答知道波特率和串口助手只能得10分;

如果有的朋友可能在校玩过原子或者野火的STM32开发板里面也有IAP升级demo,用心跑了一遍然后知道大概流程回答上位机整个BIN文件发送,下位机串口中断接收环形队列写入那么这道题可得30分;

但是市场上开发板demo和网络上泛滥成灾的demo改写版显然不是面试官最后期待的答案,如果实际工作过积累了两年以上经验回答我们用Labview或者C#做了个上位机,按照每包1024字节或者512字节打包发送给下位机,下位机接到以后环形队列写入,加入了CRC校验和上位机重发机制,那么考虑到了串口收发的不确定性重发机制的引入、上位机下位机联调经验这题可得50分;

如果工作真的实际用心做过IAP升级,回答采用了串口空闲中断DMA收发减轻MCU负担,写入前APP后续FLASH扇区全部擦除,程序里加入了对HAL库底层FLASH扇区删除和写入返回值等判断等,数据收发CRC校验错误,FLASH擦除写入错误都会告诉上位机,上位机接到后会重新发包那么已经非常接近完美了,这题可得90分;

直到你告诉面试官产品外挂了一个Eeprom,用了Eeprom固定地址的一位作为APP和BOOT的标志位,产品上电跳入BOOT立刻读出Eeprom固定地址的值,默认跳入APP,上位机有控件APP跳入和BOOT跳入,下位机对应写入Eeprom不同的值后,再NVIC_SystemReset()软件复位重启,这题可以得100分如同教科书般的经典回答;

这时候如果再补充说明,为了节约物料没有外挂Eeprom,而是把STM32内部FLASH分成了BOOT、APP、存储校准标志数据等,展开细节说明等,那么面试官真的是120分满意了。

如图1所示是笔者用Labview编写的IAP升级助手,借助这个上位机可以实现任何MCU的IAP升级功能,并且可以实现BOOT和APP之间随意跳转。

在第一章即串口IAP远程升级中,笔者会把STM32CubeMX配置、串口DMA空闲中断收发、CRC校验裸机代码结构、HAL库擦除写入FLASH、上位机下位机联调、BUS Hound抓包下位机联调等详细说明吧!

图1 IAP升级助手上位机

STM32 10个工程篇:1.IAP远程升级(一)相关推荐

  1. STC51单片机实现IAP远程升级过程分享

    STC51单片机实现IAP远程升级过程分享 1.STC内部ISP更新机制 2.了解51单片机IAP分区 3.IAP分区的调用流程与IAP部分源码: 4.IAP步骤总结 5.源码下载 关于STC单片机I ...

  2. STM32F407开发板的HTTP模式IAP远程升级之官方例程移植

    版权声明:本文为博主原创文章,转载请注明出处:https://blog.csdn.net/wbdxz/article/details/82859237 关于远程升级的模板建立,可以参考下面的博文 ST ...

  3. STM32F407(ucosII)利用4G模块进行IAP远程升级

    一.硬件资源 STM32F407VET6  flash:512K SIMCOM7600CE模块(MQTT) 二.软件情况 工程代码分两个来做,一个是BootLoader工程代码,一个是APP应用工程代 ...

  4. STM32开发必备知识篇:STM32的运行机制

    时间飞逝,转眼间已经硕士毕业工作第四年了,嵌入式研发成长道路上曲折坎坷,所以这也是我今年撰写博客的初心,即分享技术积累和研发经验,目前主要分为STM32和FPGA两个专辑,都包括开发必备知识篇和实战项 ...

  5. 远程升级stm32程序_STM32IAP远程升级带C#上位机

    关注"电子芯吧客" ,每周都有精彩文章推荐 在很多场景应用中需要我们的控制器能够实现远程升级,比如我之前做的一个项目中,项目的主要需求就是老师的电脑能够获取学生的实验设备的实验数据 ...

  6. 03-STM32+Air724UG远程升级篇OTA(自建物联网平台)-STM32+Air724UG实现利用http/https远程更新STM32程序(TCP指令,单片机程序检查更新)

    说明 这节测试一下STM32+Air724UG实现利用http远程更新STM32程序 我已经把固件文件放在了自己的服务器上 默认使用本人提供的下载路径测试 文件路径:  网站根目录->ota-& ...

  7. 03-STM32+BC26丨260Y远程升级篇(自建物联网平台)-功能测试-STM32+BC26丨260Y实现利用http远程更新STM32程序(单片机程序检查更新)

    说明 这节测试一下STM32+BC26丨260Y实现利用http远程更新STM32程序 提供了BC26 和 BC260Y两份程序 两份程序代码是一样的,只有小小个别的差别 这节以STM32+BC260 ...

  8. 6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(远程升级STM32程序,基于Wi-Fi,同时支持升级Wi-Fi,APP控制版)...

    https://www.cnblogs.com/yangfengwu/p/10456306.html 视频教程 https://www.bilibili.com/video/av54942955/ 请 ...

  9. STM32远程升级IAP功能+备份功能实现。(flash读写操作)

    远程升级加备份一共需要4个扇区,要确保flash可以被分成四个扇区(F4的扇区好大,4个16k,1个64k,剩下都是128k,对于小容量芯片非常不友好). 第一个存放出厂程序,也叫启动程序boot l ...

最新文章

  1. Hello,Word宏!
  2. 3DSlicer14:Loadable Module
  3. java作图如何来回移动_如何在java中连续左右移动球?
  4. mybatis热加载的实现
  5. JAVA生产者消费者的实现
  6. i3处理器能运行python吗_老cpu(10年前的core i3 不支持avx指令集)安装tensorflow2.0...
  7. 【PyTorch教程】P30 GPU加速
  8. 最大开源代码sourceforge 简介 及视音频方面常用的开源代码
  9. 计算机考研难度档,计算机考研院校报考难度排行
  10. SpringBoot的国际化错误信息返回
  11. 启示录:TOD分类及用地功能结构组成
  12. 安卓逆向:重温Thumb汇编指令细节
  13. python分析比赛_世界杯:用Python分析热门夺冠球队-(附源代码)
  14. composer php 打包图片,php图片添加水印,做海报,添加文字等处理的composer包推荐...
  15. mysql空间不足_磁盘空间不足的临时解决方案
  16. Axure RP8 注册码
  17. 网站被篡改 收录一些非本网站快照跳转如何解决
  18. 介绍一款Visual Studio下的arduino插件Visual Micro (Arduino IDE for Visual Studio)
  19. 【笨嘴拙舌WINDOWS】API
  20. 极光开发者线上沙龙 | 如何高效演进你的验证码

热门文章

  1. 投资能力怎么衡量?赚钱的凭什么是你?
  2. mailto body html,mailto: HTML e
  3. 【Linux】如何关闭Linux防火墙
  4. vue中用table_Vue中table合并单元格用法
  5. C和C++运算符优先级
  6. 关于网络行为管理系统的知识点介绍
  7. java leftshift,Java BigInteger shiftLeft()用法及代码示例
  8. Xftp中汉字文件夹名显示乱码解决方案
  9. LeetCode题解PDF百度网盘下载
  10. 《数位板这样玩——Photoshop+Painter数码手绘必修课(第2版)》—创建数字艺术工作室...