本文主要讲解在ADK_CSR867x.WIN4.4.0.17下,
验证CSR8670 sink程序的HID DFU功能,
用的工具为ADK_CSR867x.WIN.4.4.0.17\tools\bin\HidDfuCmd.exe。
对于CSR8670芯片,USB升级(包括HIDDFU和DFUwizard)是不需要外挂FLASH的,OTA是需要外挂FLASH的。
操作步骤:
1)拷贝以下四个文件到ADK_CSR867x.WIN.4.4.0.17\tools\bin\目录下。
2)用“dfukeygenerate.exe -o keys”命令在bin目录下生成两个随机的key文件:
2.1)将public key插入到loader中:如下命令
Dfukeyinsert.exe -v -o loader_signed -l loader_unsigned.xdv -ks keys.public.key
2.2)将private key插入到stack中:如下命令
Dfusign.exe -v -o stack_signed -s stack_unsigned.xpv -ks keys.private.key
上述两条命令完成后得到 如下的4个文件:
2.3)把刚刚生成的文件拷贝到ADK的其他文件夹
(e.g.D:\ADK_CSR867x.WIN.4.4.0.17\firmware\assisted\unified\gordon_signed)
2.4)用BlueFlash.exe 将loader_signed.xdv、stack_signed.xdv烧录到板子上。
3)打开xIDE,打开sink工程,
3.1)在工程属性中firmware image位置填写上一步经过签名的stack存放的文件夹路径:
D:\ADK_CSR867x.WIN.4.4.0.17\firmware\assisted\unified\gordon_signed\stack_signed
3.2)可能需要改一下以下值,适用于CSR8670芯片
4) 将sink工程自带的default的psr文件
ADK_CSR867x.WIN.4.4.0.17\apps\sink\configurations\sink_system_csr8670.psr,复制到bin文件夹内。
将public key插入到sink_system_csr8670.psr文件中:
Dfukeyinsert.exe -v -o sink_system_csr8670_signed -ps sink_system_csr8670.psr -kakeys.public.key
会产生sink_system_csr8670_signed.psr文件,
然后用pstool软件,将这个sink_system_csr8670_signed.psr文件merge到板子上。
5)用xIDE将程序下载到开发板上。要先compile 确认没有Error,再Running.
6)设置板子触发进入Driverless DFU模式。
打开ADK configuration tool,添加以下事件:
保存后,将板子先放一边休息一下。
7) 接下去制作DFU文件。
将sink下面的image.fs拷贝到bin目录下,
这个文件就是要升级的程序文件,如果没有修改代码,则这个可以不用(这里其实没有修改,但是也假装修改了吧)。
制作需要修改的psr文件,内容如下:
以上第一条是把 device name 改成“CSR8671”,
然后第二条必须添加&f002 = 00000000 0000 1000
(1000 表示 CSR8670, 0200 表示 BC5MM)。
保存到bin下面,文件名为example_DFU_fw.psr。
将private key插入到example_DFU_fw.psr文件中:
Dfusign.exe -v -o dfu_fw_signed -ps example_DFU_fw.psr -ks keys.private.key
如果需要修改VM的psr,则需要将private key插入到vm的psr文件中,这里不升级,也就不需要执行下面的命令。
Dfusign.exe -v -o dfu_vm_signed -pa example_DFU_vm.psr -ka keys.private.key
将private key插入到image.fs文件中:
Dfusign.exe -v -o image_signed -h image.fs -ka keys.private.key
生成DFU文件,完整的命令如下:
dfubuild -v pedantic -f image.dfu -uv<USB VID> -up <USB PID> -s stack_signed.xpv -d stack_signed.xdv -himage_signed.fs -p3 . dfu_fw_signed.stack.psr dfu_vm_signed.app.psr
由于这里不升级example_DFU_vm.psr,故直接用.代替,最终命令:
dfubuild-v pedantic -f image.dfu -uv 0x0a12 -up 0xfffe -s stack_signed.xpv -dstack_signed.xdv -h image_signed.fs -p3 . dfu_fw_signed.stack.psr .
VID PID可以通过设备管理器查看:
用HidDfuCmd进行升级:
将开发板上电,用USB连接开发板,用之前配置的按键使其进入Driverless DFU mode。
用以下命令进行升级:
HidDfuCmd.exeupgrade 0a12 fffe 0 0 image.dfu
完成后,可以看到设备名称改为了“CSR8671”,算是成功了。
=======================
需要CSR8670/8675的学习板【淘宝店:科飞工作室】。
高通蓝牙技术交流群:713094735
科飞开发板支持群:763757182(淘宝订单号入群,可获更多的资源)
=======================