1 .概述DFU的全名是设备固件升级。 这意味着设备固件已升级,并且可以通过USB升级设备程序。 可以升级以下软件组件:固件协议栈3358www.Sina.com/VM APP应用程序3358 www.Sina.com/VM文件系统中的其他文件(语音指南、附加语言包
DFU协议由USB实现者论坛标准化为设备类规范,QTIL实现符合包括安全检查在内的标准。设备在制造时使用RSA公钥加密DFU文件,以便最终用户只能使用特定产品的DFU文件
Loader出厂时写入芯片,PS Keys存储系统配置,Firmware是固件协议栈,虚拟机文件系统包含虚拟机app和语音指导。
2 .使用dfu机制时可用的选项和限制(1) Loader无法更新。使DFU进程安全,加载程序始终存在且完好无损,因此可以在失败后重复DFU进程。
)2) Firmware可以更新,但不需要更新)DFU文件中可能没有堆栈,在这种情况下固件不会更新。如果缺省引导模式没有主机接口,则固件堆栈将始终包括在内。 否则,产品将没有堆栈、虚拟机和主机接口,无法正常工作。
)3) DFU文件中的PS Keys均可修改。
)4)如果DFU文件中存在VM文件系统(可以更新但不需要更新),则VM文件系统将被新的替换。 3358www.Sina.com/VM文件系统中的文件不能单独升级。 文件必须是连续的,没有间隙。
3.DFU升级工具(1) DFU向导:要启动DFU过程,用户必须安装CSR DFU驱动程序。
)2) hid dfu (hiddfucmd ) :不需要用户安装驱动程序,使用USB HID界面运行dfu。 hiddfucmd APP应用程序是使用USB HID界面升级设备的命令行工具。
4.PS Keys类型(1)不受保护的固件(FW )和虚拟机) VM ) keys: 这些keys不需要签名,但使用FW或VM密钥签名
)2)受保护的FW keys: 这些keys通过存储在loader中的FW公钥进行验证。
(3)受保护VWkeys ) http://www.Sina.com/通过存储在受保护FW keys密钥中的VM公钥来验证这些keys。
5 .环境准备(1)安装外部闪存的CSR8670、CSR8675开发板
)2) ADK4.0或更高版本
)3)要升级的文件
)4)命令行中提供的(tools)烂手套文件夹中的ADK工具
6 .生成生产固件
打开sink项目后,必须设置密钥以进入以下事件:
enterdfumode(USBdfu ) enterdriverlessdfumode ) USB-hiddfu )未签名的loader和stack是firmwareassistednified 将gordon中包含的或gordon文件夹下的loader_unsigned.xdv/.xpv和stack_unsigned.xdv/.xpv复制到其他文件夹中,然后从其中运行命令
用于生成DFU文件的工具位于安装目录下的tools烂手套文件夹中。 例如,ADK_CSR867x.WIN4.2tools烂手套等这些工具通常具有以下命令结构:
dfutoolnameoutputfilenameinputfilenameinputkey (1)创建dfu密钥对
生成dfukeygenerate -o keys,keys.private.key和keys.public.key
)2)将用于验证堆栈真实性的密钥插入loader
dukeyinsert-v-o loader _ signed-l loader _ unsigned.xdv-ks keys.public.key、loader_signed.xdv和loader_sey
)3)使用与插入loader的密钥相对应的密钥在stack上签名
du sign-v-o stack _ signed-s stack _ unsigned.xpv-ks keys.private.key、stack_signed.xdv和stack_signed.key
)4)验证虚拟机文件系统真实性的关键插头
入PS Keysdfukeyinsert -v -o image_signed -ps image.psr -ka keys.public.key,生成image_signed.psr
(5)使用与插入到PS Keys文件中的密钥相对应的密钥对vm文件系统进行签名
dfusign -v -o image_signed -h output.fs -ka keys.private.key,生成image_signed.fs
(6)构建二进制镜像文件
vmbuilder -size merge.xpv stack_signed.xpv image_signed.fs,生成merge.xpv
生成的镜像文件包括:
1)插入密钥的loader
2)签名的Firmware Stack
3)签名的VM文件系统
签名PS Keys生成的image_signed.psr没有内置到生成的二进制镜像中,因此要生成生产图像,还需执行:
1)使用BlueFlash将merge.xpv文件下载到目标设备上
2)使用PSTool合并image_signed.psr
3)使用BlueFlash Dump出生产固件 7.生成DFU文件
(1)签署要包含在DFU文件中的PS Keys文件
dfusign -v -o dfu_vm_signed -pa example_DFU_vm.psr -ka keys.private.key,生成dfu_vm_signed.app.psr
dfusign -v -o dfu_fw_signed -ps example_DFU_fw.psr -ks keys.private.key,生成dfu_fw_signed.stack.psr
(2)对.fs文件进行签名
dfusign -v -o image_signed -h image.fs -ka keys.private.key,生成image_signed.fs
(3)生成DFU文件
dfubuild -v -pedantic -f image.dfu -uv -up -s stack_signed.xpv -d stack_signed.xdv -h image_signed.fs -p3 . dfu_fw_signed.stack.psr dfu_vm_signed.app.psr,生成image.dfu
DFUWizard工具包含在安装目录下tools烂漫的手套文件夹中。(如ADK_CSR867x.WIN4.2tools烂漫的手套),DFUWizard是一个图形化用户界面程序,首先按键让设备进入DFU模式,按照提示操作即可。
8.2 USB-HID升级(HidDfuCmd)工具包含在安装目录下tools烂漫的手套文件夹中。(如:ADK_CSR867x.WIN4.2tools烂漫的手套),按键让设备进入DFU模式,使用命令行执行以下命令:
HidDfuCmd upgrade 0a12 fffe 0 0 image.dfu,选择Yes,等待两分钟左右(有进度提示),升级完成。