- 博客(29)
- 问答 (1)
- 收藏
- 关注
原创 一主多从下的IAP升级(四)
主mcu端发送过来的是相同的宏定义,知识宏定义名字会去掉ACK,也就是主MCU发送给子MCU,SUBMCU_OTA_STAR这条命令时,子MCU通过解析后得到,处理完成会给主MCU回复SUBMCU_OTA_START_ACK。当主MCU将包发完后会通知子MCU,包发送完了,可以做整个代码的检查了,此时子mcu会对已经更新了的flash部分做crc计算,看看是不是与发过来的crc一致,看看是否能够通过。当发给主mcu ACK后,主MCU会开始给子MCU发送升级包,指令SUBMCU_OTA_PROCESS。
2024-03-27 17:42:49 441
原创 一主多从下的IAP升级(三)
原因是:在实际工作中发现,当boot跳转到APP的时候,例如某个引脚默认是低,但是在主程序中,此引脚连接了某些器件,默认是高的时候才会是关闭,低是运行,此时从boot跳转主程序,引脚就会从默认是低跳变成默认是高,连接的器件有可能会有一瞬间的上电情况。当开始升级的时候,上层下发升级请求,上层按照一定的顺序分发子mcu固件,首先会在主mcu上判断是否满足升级条件,如果各项指标都满足,此时向子mcu发送升级请求,此时子mcu的APP程序中应该可以收到升级指令,此时子mcu应重启进入boot。
2024-03-26 17:11:42 250
原创 一主多从下的IAP升级(二)
如上,可以定义bootload的起始地址,大小为18k,bootflag大小为2k,APP大小为100k,这样一次排列,当然也可以拓展,比如说多定义一些地址,去存特定的东西,这里只定义这三个分区。建议可以在flash相关的.h文件中定义下flash分区,这样方便写flash相关函数,也方便后续维护,例如要改各个分区的大小时,如果用宏去做定义,就会相对方便。:flash的擦除只能是整页擦除,我们的擦除一页的单位是2k,说明擦除一次至少擦2k。并且在读写flash之前,应该增加一些地址限制的判断。
2024-03-23 18:25:54 191
原创 一主多从下的IAP升级(一)
当一个主mcu与多个mcu相连的时候,主mcu进行控制各个子mcu运行,此时想要对所有的mcu做升级操作,上位机仅按照一定顺序进行分发各mcu升级程序,但主mcu的flash无法存下各个子mcu的程序,:从上位机上下发升级通知,此时主mcu接到升级请求,文件存在上位机上,此时升级,先升级子mcu,主mcu做分发功能,将收到的包使用串口DMA分发给各个子mcu,当子mcu升级成功后,在对主mcu进行升级。//指定了RAM的起始地址。FLASH操作 ,MCU启动过程与中断响应方式 ,串口,DMA。
2024-03-22 16:45:10 724
空空如也
力扣运行代码堆溢出,ubuntu上没问题
2022-07-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人