前一篇转载的博文很清楚,全面的介绍了DFU功能的实现步骤。关于DFU功能,你还需要知道以下信息:
一、image.fs,firmware,loader,psr之间的关系
图1-1 image.fs示意图
图1-2 image.fs,stack,loader示意图
从图1-1可以看出,image.fs主要有VM application和DSP程序构成,以及promots等组成;
通过VMBuilder,将VM app与firmware(loader和stack)merge到一块,形成最终的可烧录固件。xxx.xpv/xdv都可以单独烧录和下载。
psr文件时存储在flash中的配置参数,merge.xpv/merge.xdv并不包括psr配置参数。
二、DFU类型
DFU主要是功能是便于通过诸如USB,UART,RADIO(OTA)等方式升级应用程序(不是loader)而设计的,如果你的设备依然保留着USB-SPI接口,我想也没有多大必要使用DFU功能吧。一般而言,DFU功能分为两个阶段:
1、初次下载程序升级包。
对于新的设备,你需要准备:
loader.xpv/xdv;
stack.xpv/xdv;
image.fs(vm.app, prompts, *.kap,etc);
app.psr;
如果希望固件被加密,还需要对loader,stack,image.fs,app.psr进行加密。
对上述资源进行整合后,通过BlueFlashCmd.exe工具下载(可能必须通过USB-SPI接口)到设备中去,此后设计即具备DFU功能。如果需要更新loader,需要再次重复该过程;
2、通过DFU功能升级VM application或者stack firmware。
对于已经具备DFU功能(loader.xpv/xdv已经下载),可以通过USB,UART,RADIO等接口升级vm application, stack,psr配置文件。你只需准备:
image.fs;
stack.xpv/xdv(可选);
app.psr(可选);
对于USB,UART传输介质,你需要准备通过dfubuild.exe生成xxx.dfu文件即可。
对于RADIO传输介质,可能需要多做几步操作,生成的xxx.dfu需要进一步转化为xxx.bin文件,具体请参考:CS-328884-UG.pdf