BC5-MM、CSR867x的DFU更新流程之一: DFU(.dfu)文件制作常用指令及DFU文件内容

DFU文件制作的常用指令**
dfukeygenerate,用于产生一对公私密钥,具体格式:
dfukeygenerate [-v] -o OUTPUTBASENAME [-r RANDOMFILE] [-i INFORMATION]
com
-v: 添加后,将在密钥生成过程中显示具体信息;
-o OUTPUTBASENAME:设置密钥文件名称,需注意的是:生成的密钥文件将自动添加.private.key 和 .public.key。如设置“-o key”,其生成的文件将是:keys.private.key 和keys.public.key;
-r RANDOMFILE : 不常用。官方的描述是:Name of an optional file containing random data to use as a seed for the key
generator.
-i INFORMATION:不常用。官方的描述是:A comment string to be included in the key files. This comment is used to mark files on
signing.

DFUkeyinsert,用于把公钥插入到相关文件,具体格式:
dfukeyinsert [-v] [-o OUTPUTBASENAME] -l LOADERCONSTFILE [-ks STACKENCKEYFILE]
-v: 添加后,将在公钥插入过程中显示具体信息;
-o OUTPUTBASENAME:设置输出文件名称,需注意的是:生成的文件将自动添加.xpv and .xdv后缀。
-l LOADERCONSTFILE: 设置加载的.xdv文件;
-ks STACKENCKEYFILE:设置公钥,用于把公钥插入到系统文件中;但实际上这是可选的,官方描述是“If the -ks parameter is omitted (no key file specified) then no key is inserted; the only action is to update the
firmware checksum.”
但在实际使用中,参数并非只有以上几种,实际使用如下:

常规使用:
::sign FW
call %dfutoolspath%\dfukeyinsert -v -o fw.signed\loader_signed -l fw.unsigned\loader_unsigned.xdv -ks keys.public.key
对psr文件进行签名:
::sing APP psr
::call %dfutoolspath%\dfukeyinsert -v -o example_app\image_signed -ps example_app\example.psr -ka keys.public.key

DFUsign ,使用密钥对.xpv and .xdv进行签名;
dfusign [-v] [-o OUTPUTBASENAME] -s STACKPROGFILE [-d STACKDATAFILE] [-ks STACKKEYFILE]
-v: 添加后,在密钥签名过程中显示具体信息;
-o OUTPUTBASENAME:设置输出文件名称,需注意的是:生成的文件将自动添加.xpv and .xdv后缀。
-s STACKPROGFILE:设置加载的.xpv文件;
-d STACKDATAFILE:设置加载的.xdv文件;
-ks STACKKEYFILE: 设置密钥;
在实际使用中,并不局限于以上参数设置,其还有-h 和-ka 等参数设置;

对FW进行签名:
dfusign -v -o fw.signed\stack_signed -s fw.unsigned\stack_unsigned.xpv -ks keys.private.key

对系统文件进行签名:
dfusign -v -o example_app\image_signed -h example_app\image.fs -ka keys.private.key

对stack psr进行签名(注意对stack psr 使用的是-ks, 对app psr就该改用 -ka):
dfusign -v -o example_app\dfu_fw_signed -ps example_app\example_DFU_fw.psr -ks keys.private.key

DFUbuild,用于生成.dfu文件,具体格式:
dfubuild [-v] [-pedantic] [-t 0|1|2|3][-c COMMANDLINEFILE [COMMANDLINEFILE …]]
-f DESTFILE -uv VENDOR_ID -up PRODUCT_ID [-i INFORMATION] [-ui LONGINFORMATION]
[-s STACKPROGFILE [STACKPROGFILE …]
[-d STACKDATAFILE [STACKDATAFILE …]]]
[-a APPFILE [APPFILE …]]
[p3 PSFILE STACKPSFILE APPPSFILE [PSFILE STACKPSFILE APPPSFILE …]]
[-h FILESYSTEM [FILESYSTEM …]]
其参数太多,直接贴使用例子:

dfubuild -v -pedantic   -f example_app\dfu_for_test.dfu -uv 0x0a12 -up 0x0001 -ui "test 0.0.0.10" -s fw.signed\stack_signed.xpv -d fw.signed\stack_signed.xdv -h example_app\image.fs -p3 . example_app\dfu_fw_signed.stack.psr example_app\dfu_vm_signed.app.psr

以上例子中:
-v :在dfu文件生成过程中显示具体信息;
-pedantic: 一般情况下,我们都会设置此参数,官方描述:Fail if redundant files have been specified, i.e. if the files would be omitted from the resulting DFU file because they could never be used.
-f: 设置生成的DFU .dfu文件名称;
–uv: 设置vendor ID,当前例子设置的0x0a12表示的是CSR devices;
–up:设置产品ID;
–ui :描述DFU 文件信息,尽量不要填写别的project资讯;
-s: 表示已签名的.xpv文件;
-d:表示已签名的.xdv文件;
-h:表示已签名的 文件系统;
-p3:参数为psr文件,可以填写多组 psr文件(如:stack psr 和app psr),也可不填写;当不填写时,其位置需使用“.”替代,这是需要特别留意的;

DFUbuild指令可以在实际测试中删减,如本人为了更快速的验证DFU 过程,DFU文件中一般只保留psr文件;

DFUunbuild ,用于反解析dfu文件,具体格式是:
dfuunbuild [-v] -f INPUTFILE [-o OUTPUTBASEFILENAME]
-v :在反解析过程中显示具体信息;
-f INPUTFILE:需要解析的.dfu文件;
-o OUTPUTBASEFILENAM:设置解析后的文件名称(注意的是:反解析其输出的是一堆文件,而不是一个文件);
在日常中的,dfuunbuild 很少使用,一般只在升级失败时用于查看DFU 文件内容;

DFU文件内容
这里直接贴图,理解更直观:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值