一、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.key
和
my_stack_key.publict.key 2
个
key
文件。详情
参考:
\CSR\DFUTools\DOCs\dfukeygenerate.html
1.2
插入
public_key
到
unsignedloader.
在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的 软体