CSR8670的DFU功能

为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板【淘宝链接:思度科技CSR开发板】

技术交流QQ群号:743434463
开发板会员QQ群号:725398389(凭订单号入群,赠PPT、项目源码、视频教程)
——————————正文分割线———————————–

#1. DFU简介

  • DFU全称是Device Firmware Upgrade,是一种通过USB升级设备程序的机制,能用来升级以下软件组件:
    • 固件协议栈
    • VM应用程序
    • VM文件系统内的其它文件(语音提示音、额外语言包)
    • PS Keys
  • DFU协议被USB实施者论坛标准化为一个设备类规范。CSR兼容这个规范,且包含加密检查
    • 在制造时设备烧录的程序有RSA公钥
    • DFU文件用RSA私钥加密,确保只有为此产品定制的DFU文件能被终端用户使用

#2. DFU升级过程
这里写图片描述

  • Loader是出厂时烧录进芯片的
  • PS Keys存储了系统的配置
  • Firmware是固件协议栈
  • VM文件系统包含了VM app和语音提示音

##2.1. 详细执行过程
这个章节列出了在使用DFU机制时的选择和限制:

  • loader不能被升级
    • 这使得DFU升级过程是安全的,loader总是存在且原封不动,因此在升级失败后DFU过程仍可重复
  • 固件协议栈可以被升级(但不是必须的)
    • 固件协议栈可以不包含在DFU文件里,这种情况下固件不会被更新。
    • 如果默认boot模式没有主机接口,必须包含固件协议栈(否则产品只有协议栈,没有VM,没有主机接口,因此不能工作)
  • 任何DFU文件内的PS Keys都可以被修改
  • VM文件系统可以被升级(但不是必须的)
    • 如果VM文件系统存在于DFU文件内,VM文件系统被替换成新的
    • 不能单独升级VM文件系统内的文件,文件必须是连续的且没有间隙

##2.2. DFU升级工具
DFU升级工具有两种:

  • DFUWizard:需要用户安装CSR DFU驱动才能开始DFU过程
  • HidDfu:不需要用户安装驱动,使用USB HID接口执行DFU

##2.3. PS Keys
PS Keys的类型有很多种:

  • 未保护固件(FW)和虚拟机(VM)Keys:
    • 这些Keys不需要被签名,但签名也不会有任何问题
  • 被保护FW Keys
    • 这些Keys被保存在loader内的FW公钥认证
  • 被保护VM Keys
    • 这些Keys被保存在被保护FW Keys内的VM公钥认证
  • 虚拟Keys,有着专门用途
    这里写图片描述

##2.4. DFU事件序列
DFU事件序列如下:

  • 设备正常运行在独立模式
  • USB插入,设备被枚举成USB设备
  • 一个用户USB命令或按键序列切换到DFU模式(这导致用户在mode 0内reboot,用户接口在这个模式内必须可用)
  • DFUWizard命令设备切换到Loader模式,设备reboot且loader被激活(当使用HidDfu时不需要这个步骤)
  • DFU文件被下载到设备且由loader处理
  • 设备reboot回到mode 0(当使用HidDfu时不需要)
  • 设备reboot回到独立模式
  • 设备检测到到USB连接且枚举为一个USB设备

#3. 生成DFU文件
官方手册的步骤比较详细,但每次生成代码需要手动操作。我写了一个批处理文件,实现了编译、烧录、生成DFU、生成release文件一键操作。

##3.1. 设置CSR安装路径

:: set CSR install path
set dfutoolspath="C:\ADK4.0.0\tools\bin"
set adkpath="C:\ADK4.0.0"
set debugtransport=SPITRANS=USB SPIPORT=0
set adkversion=adk
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值