4.上报升级状态;这一步由于时间问题,我也省略了,总之程序已经下载到MCU上了,只是没有通知服务器而已,大家最好还是加上这一步 。

文章插图

文章插图
5.main函数循环;
复制
char rrr; char dev_id[] = {\"640600857\"}; char Authorization[] = {\"version=2018-10-31&res=products%2F378414&et=1735660800&method=sha1&sign=9EgY%2Bk4r%2BlvCooIGf1ghtQFC0%2Bc%3D\"}; char Version[] = {\"V10\"}; 复制
while(1) { switch(pro) { case1: //上报版本if(Report_Version(dev_id,Authorization,Version,10) == 0) pro++; break; case2: //检查任务if(Detect_Task(dev_id,Version,Authorization,50) == 0) pro++; break; case3: //接收token、size、md5信息rrr = json_get_value((char*)usart_info.buf,\"token\",ota_info.token); rrr = json_get_value((char*)usart_info.buf,\"size\",ota_info.csize); rrr = json_get_value((char*)usart_info.buf,\"md5\",ota_info.md5); ota_info.size = atoi(ota_info.csize); pro++; break; case4: //进行下载res = Download_Task(ota_info.token,ota_info.size,OTA_BUFFER_SIZE,10); if(res == 0) //校验成功{ pro++; } elseif(res == 1) //校验失败{ pro = 1; } break; case5: //Flash写入升级完成的标志位USART1_Clear(); STMFLASH_Unlock(); STMFLASH_WriteHalfWord(FLASH_APP1_ADDR - 0x64, 0xFF02);//写入数据STMFLASH_Lock(); pro++; break; case6: //复位或者跳转到APPSys_Soft_Reset(); //iap_load_app(FLASH_APP1_ADDR);break; } } 下图是我升级的历史

文章插图

文章插图
八.注意事项
1.鉴权参数是需要自己去算的,具体算法请见我之前写的帖子和附件(
https://bbs.21ic.com/icview-3144666-1-1.html)
2.由于用的是STM32F030F4P6,RAM也非常小,所以局部变量和全局变量的数组不要超过4K,堆栈大小有改动 。当前用内存管理的话就不用了 。

文章插图
【手把手教你STM32的远程升级 ota升级详细流程】 3.OTA校验用的是MD5,需要把MD5的算法移植一下 。
4.别的想不到了,太长时间了 。
总结:
OTA的方法只是我个人的理解,可能有的地方不正确,欢迎大家指点 。BootLoader代码也是很早之前写过的一个Demo,最简化的,传输协议、加密、升级失败的操作、回滚等等都没有涉及,只是一个OTA演示的例子,代码水平有点差,大家将就的看,参考一下就可以了哈,感谢!
本文内容由互联网用户自发贡献,该文观点仅代表作者本人,不代表万网时代立场 。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任 。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 qulianxi@foxmail.com 举报,一经查实,本站将立刻删除 。
- 5个小妙招教你轻松应对 养肝护肝中药处方
- 两手倒立最简单的方法 5个步骤教你简单倒立
- 怎样做出好吃的沙琪玛
- 教你正确表扬宝宝的方法
- 想吃三杯鸡在家里面就能做
- 怎么认毒蘑菇
- 教你5个暖宫小方法
- 如何预防校园踩踏事故的发生
- 教你新鲜牛肉的辨别方法
- 南瓜皮厚又硬不好去皮,教你好方法
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
