远程固件更新功能简述如下:
1.使用串口通信接口;
2.数据分帧发送(遵循特写协议,类似于TCP包)
3.设备接收后进行有效性检验(如文件头信息,检验位等)
4.设备重启后执行所下载的新固件
希望做过类似实现的大虾们指点一二,目前尚无头绪:
如何制作下载文件(固件文件),需要对Hex文件(或Hex转换的Bin文件)做哪些处理?
如何使重启后跳转执行新固件,又如何保证下一次仍可继续下载更新?
开发环境:STM32F开发板(ARM Cortes-M3内核)+MDK,可使用的外部存储器仅2k,用于存储设备配置数据。
本来是准备参数ISP方式处理的,但发现有个本质的区别:
ISP直接Flash擦除编程,而这种更新是先存储,校验后才能Flash擦除编程。
唉,没思路了。
个人认为,嵌入式未来发展中,通过网络远程控制特定设备是其中一大特色。
一个控制台,通过网络监控多个设备,其固件更新是必不可缺的功能(不可能一一回收,用原始的方式刷新固件吧)。
因此希望此前有过此类想法,或者有志于未来领先一步的大虾们,能够参与一下。
谢谢 |