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 举报,一经查实,本站将立刻删除 。
- 淘宝seo教程,9步教你「淘宝SEO」的黄金法则?
- 数字营销案例,教你把企业做做大?
- 电脑分辨率怎么调最佳,教你调整电脑屏幕分辨率的3个步骤?
- 教你如何做生意赚大钱的四大谈判技巧。?
- 直播间如何引流,直播间引流技巧策略?
- 花呗怎么关闭分期付款,教你关花呗白条?
- 如何做好运营,六招教你如何成为神一般的运营!?
- 笔记本导热硅胶怎么涂 教你正确涂抹散热硅脂
- 飞利浦手机触摸屏失灵 一招教你解决问题
- 企业名录搜索软件哪个好 教你获取企业通讯录