前一篇转载的博文很清楚,全面的介绍了DFU功能的实现步骤。关于DFU功能,你还需要知道以下信息:

一、image.fs,firmware,loader,psr之间的关系

十、CSR8670的DFU功能[补充]-LMLPHP

图1-1 image.fs示意图

十、CSR8670的DFU功能[补充]-LMLPHP

图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

05-11 19:38