感觉已经没什么东西写了,最近给产品做了DFU升级,干脆就写这个吧。
其实DFU升级是app端和驱动这边共同完成的,这个协议是自己定义的,所以每个公司的升级都不一样,但从根本上看都是一样的,就是把升级包发给固件,然后进行升级,下面就来简单的说下我们这边的步骤。
1.发送升级指令
就是给固件发送一个指令,告诉固件,进入升级模式,当然在这之前有的公司会先发送一个查询固件的版本,然后对比当前版本和最新版,看是否需要升级,如果需要,再发送升级指令。这时,固件一般会断开蓝牙,切换成升级模式。
2.初始化校验
当固件切换完模式以后,需要重新连接蓝牙,然后给固件再发送一个指令,告诉固件升级包的一些信息,作为校验用。当然,这一步也可以在发完升级包再发送,反正校验都是要收完全部升级包以后才能校验的。
3.发送升级包
这一步就是将升级包发送给固件了,由于蓝牙每次发送数据大小的限制,升级包一般都要分多次发送,每次发送一部分,当然,发送方式是和驱动这边约定好了,这里也可以做断点续传功能,就是当发送了一部分升级包断开时,下次可以接着上次没发完的继续发送升级包。
4.校验重启
当整个升级包都发送给固件以后,固件就会将升级包和第二步收到的升级包信息进行对比校验,校验成功后,固件就可以重启,把模式切换回正常使用模式了。
对此,整个升级就完成了,还是前面说的,升级是和驱动这边共同完成的,双方定义如何升级,但总的都是获取升级包[1],发送给固件,固件进行升级这样。
版权声明:本文为 Crazy Steven 原创出品,欢迎转载,转载时请注明出处!
-
有的公司会把升级包放到服务器,也有的公司会在更新App时将固件升级包放到App里,毕竟固件升级的频率还是很低的,能不升级则尽量不要升级。 ↩
网友评论