记录一下CSR蓝牙做DFU的流程

一、DFU flow chart

详情 参考:61_AN092b_DFUOverview.pdf。


二、flow chart 解释

1. 产生 .DFU文件 :

DFU文件由多个private key files;pskey files;firemware files;app files组成.一个DFU文件可为不同型号的BC做 DFU。PC端的 DFU SERVER 程式会自动选择 正确的 BC做 软体升级。以下是生成 .DFU文件的步骤

 1.1生成 private publickey files:

在MS DOS 模式下输入

dfukeygenerate -v -o my_stack_key-r /dev/random

得到my_stack_key.private.keymy_stack_key.publict.key 2key文件。详情

参考:\CSR\DFUTools\DOCs\dfukeygenerate.html

1.2插入public_keyunsignedloader.

在MS DOS 模式下输入

dfukeyinsert -v -o loader_with_key-l loader_unsigned.xdv -ks my_stack_key.public.key

也插入public_key需要保护的PSKEY文件。

详情参考:\CSR\DFU Tools\DOCs\dfukeyinsert.html

1.3 Signing Stack Software

在MS DOS 模式下输入

dfusign -v-o stack_signed -s stack_unsigned.xpv-ks my_stack_key.private.key

详情参考:\CSR\DFU Tools\DOCs\ dfusign.html

1.4 BUILD DFU FILE

在MS DOS 模式下输入

dfubuild-v -pedantic -t 3 -f spp8v2.dfu -uv 0xa12 -up 1 -ui "SPP8 V2.0" -s stack_signed.xpv –a spp8v2.app

其中stack_signed.xpv 是需要升级的 stack软体,spp8v2.app是需要升级的应用软体。执行后得到可以做DFU的文件:spp8v2.dfu

如果需要修改pskey的话,那么就加上-p3选项,这个选项需要带三个参数,第一个表示受保护的pskey,第二个表示stack的pskey,第三个表示app的pskey。如果需要更改,就填写对应的pskey文件名,不需要的话用"."代替,例如我现在需要更新stack和app中的pskey,那么就使用如下格式

  -p3 . stack.psr app.psr

但是我们一般都放在stack.psr里面,它的权限比较高,可以确保我们的pskey能够被更新到。

详情参考:\CSR\DFU Tools\DOCs\ dfubuild.html


2. BC连接 PC:

选择BC的USB或者UART连接到 PC的USB或者 UART,同时只有其中一个host interface有用. 


 3. 设置BC,HOST INTERFACE 为 USB或则 UART:

设置bootmode0 为 DFU 模式.open uart or usb host interface

设置bootmode1为 default启动模式.以下是透过USB做DFU的相关PSKEY设置项

&F000-

&F002=00000000 0000 0040

// boot_mode_list0

&4b0 = 1f9

//boot_mode_table0 USB HOST INTERFACE

&4b8 = 2

// boot_mode_list1

&4b1 = 1f9

//boot_mode_table1

&4f8 = 4

// boot_mode_list2

//&4b2 = 1f9

//boot_mode_table2

//&538 = 2

 

4.BC进入 DFU 模式:

在应用软体中让BC从bootmode0重新启动。

 

5.DFU处理

启动DFUWIZARD程式(或者自己制作的DFU SERVER),选择DFU INTERFACE:usb or uart.如果是透过UART做DFU需要在startdfuwizard 前关闭与dfuwizard使用同一UART的程式。另外,目前toshiba的DRIVER与CSR

USB DRIVER有冲突。所以如果透过USB做DFU需要 uninstall Toshiba的DRIVER。选择好 DFU INTERFACE后一路 “NEXT” 即可。如果 DFU成功 。

DFUWIZARD最后会出现 “DFU SUCCESSFUL”的 提示讯息。


6.DFU完成 

如果DFUWIZARD 提示“DFU SUCCESSFUL”。BC将会重新以正常模式启动,并运行upgrade的 软体

你可能感兴趣的:(记录一下CSR蓝牙做DFU的流程)