2017两学一做网站,广州网站建设广州网络推广公司好,排行榜123网,广州专业建网站公司清晨一大早起来开始撰写STM32 10个例程篇的第一章即串口IAP远程升级#xff0c;虽然网络上有很多免费和付费的STM32教程#xff0c;但是仍然不断地说服自己沉住气、静下心写一份独一无二的#xff0c;这份独一无二中也凝聚了一名MCU工程师5年间不断地项目迭代积累#xff0… 清晨一大早起来开始撰写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升级助手上位机