arm芯片的主机,客户强烈要求实现远程更新。两步:在合适的时候由主app从远程服务器读取需要更新的固件文件保存起来,然后根据命令或者立刻reboot系统,进入uboot,uboot判断是否有新fw,执行update。
难搞的是uboot的修改,还好网络上有些参考。fw保存在mmc(sd)上,uboot本身实现了sd卡的fat文件系统,但最郁闷的是和常规的fat系统不一样,其文件操作裁剪过多,只有它自己需要的部分。uboot修改的部分是这样的逻辑:判断mmc中的fw版本是否比当前高,是则update,并更新当前fw版本号保存起来,保证每次新fw只更新一次。
涉及两个点:1 怎么读取mmc中更新的fw版本号?2 怎么保存更新后的版本号?费了点力,终于可以了。需要注意的是,uboot在自动update时不需要更新,在我看来,更新uboot的可能性远小于更新主板硬件的可能性,所以远程更新只需要kernel和rootfs即可。
记下这些,免得忘了。