USB设备固件升级标准研究-v0.1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

为什么要升级固件
在早期,升级固件主要是为了解决一些Bug及兼容性问题.但随后发现, 厂商的设计很难全面的满足客户需求,因而更多的厂商通过升级固件来 提供更多更新的功能做为附加值给用户
3
2010-6-25
www.potevio.com
UPGRADE综述 USB DEVICE FIRMWARE UPGRADE综述
4
2010-6-25
www.potevio.com
UPGRADE综述 USB DEVICE FIRMWARE UPGRADE综述
5
2010-6-25
www.potevio.com
UPGRADE综述 USB DEVICE FIRMWARE UPGRADE综述
DFU类规范请求 DFU类规范请求
6
2010-6-25
www.potevio.com
列举阶段
USB设备的两种运行模式及其两套不同并且相互独立的 USB设备的两种运行模式及其两套不同并且相互独立的 描述符:
正常运行模式 正常运行描述符) (正常运行描述符) DFU类接口描述符 DFU类接口描述符 功能描述符
DFU模式 DFU模式 设备固件升级模式 DFU模式描述符 ( DFU模式描述符 )
Status列表- Status列表-传输阶段 列表
19
2010-6-25
www.potevio.com
State列表- State列表-传输阶段 列表
20
2010-6-25
www.potevio.com
传输阶段
DFU_CLRSTATUS请求 请求
一旦设备检测到错误,在回应DFU_GETSTATUS请求时向主机 一旦设备检测到错误,在回应DFU_GETSTATUS请求时向主机 DFU_GETSTATUS 报告错误,指出其错误原因,进入dfuERROR dfuERROR状态 报告错误,指出其错误原因,进入dfuERROR状态 设备在报告错误状态后一直到再接收到DFU_CLRSTATUS DFU_CLRSTATUS请求 设备在报告错误状态后一直到再接收到DFU_CLRSTATUS请求 前不能从dfuERROR dfuERROR状态转变到其他状态 前不能从dfuERROR状态转变到其他状态 当接收到DFU_CLRSTATUS请求后,设备设置为ok应答, DFU_CLRSTATUS请求后 ok应答 当接收到DFU_CLRSTATUS请求后,设备设置为ok应答,并且 切换到dfuIDLE dfuIDLE状态 切换到dfuIDLE状态
22
2010-6-25
www.potevio.com
传输阶段
DFU_GETSTATE请求 请求
由主机向设备发出获得设备的现有状态的请求. 由主机向设备发出获得设备的现有状态的请求.其格式如下:
设备使用包含以下内容的数据包来回应DFU_GETSTATE请求. 设备使用包含以下内容的数据包来回应DFU_GETSTATE请求. DFU_GETSTATE请求
运行DFU功能描述符 功能描述符 运行
9
2010-6-25
www.potevio.com
正常运行模式下-列举阶段
DFU模式下设备描述符 模式下设备描述符 模式下
10
2010-6-25
www.potevio.com
正常运行模式下-列举阶段
DFU模式下接口描述符 模式下接口描述符 模式下
11
2010-6-25
2
2010-6-25
www.potevio.com
UPGRADE简介 USB DEVICE FIRMWARE UPGRADE简介
Firmware 固件
固件到底是什么
固件的解释是具有软件功能的硬件,在早期这种器件一般都是存有软件 的EROM或EPROM等,并且通常这些硬件内所保存的程序是无法被用 户直接读出或修改的,在我们现在的理解,固件指的是软件.但并不是 所有软件都能叫做固件的,一般来说,担任着一个系统最基础,最底层 工作的软件才可以称之为固件,比如我们常说的计算机主板上的BIOS.
www.potevio.com
重配置阶段
重配置流程
操作者向应用程序指明设备和固 即下载"哪个"固件到" 件,即下载"哪个"固件到"哪 个"设备 流程为: 流程为: 主机通过控制端点EP0发 主机通过控制端点 发 请求. 出DFU_DETACH请求. 请求 主机向设备发出USB重置 主机向设备发出 重置 请求. 请求. 设备列举出DFU模式下的 设备列举出 模式下的 描述符,如前所述. 描述符,如前所述.
固件升级包括了4 固件升级包括了4个阶段 列举:USB设备告知主机其具备这种能力 列举:USB设备告知主机其具备这种能力 重新配置: 重新配置:主机和设备达成一致发起固件升级 传输: 传输:主机传输固件映像文件到设备 显示:设备通知主机已完成重新编译操作, 显示:设备通知主机已完成重新编译操作,设备重新 列举并执行升级了的固件
DFU设备描述符 DFU设备描述符 单独的配置描述符 单独的接口描述符 单独的功能描述符
7
2010-6-25
www.potevio.com
正常运行模式下-列举阶段
运行模式下DFU类接口描述符 运行模式下DFU类接口描述符 DFU
8Fra Baidu bibliotek
2010-6-25
www.potevio.com
正常运行模式下-列举阶段
16
2010-6-25
www.potevio.com
传输阶段
DFU_DNLOAD请求示例图 DFU_DNLOAD请求示例图
17
2010-6-25
www.potevio.com
传输阶段
DFU_GETSTATUS请求 DFU_GETSTATUS请求
18
2010-6-25
www.potevio.com
USB DEVICE FIRMWARE UPGRADE 标准研究 -中期报告
终端项目 部门
中国普天信息产业股份有限公司
China Potevio Co., Ltd. www.potevio.com www.potevio.com
1
2010-6-25
目录 USB 设备固件升级简介 USB USB 设备固件升级综述 USB USB 设备固件升级流程 USB 固件升级接口状态概要 固件升级接口状态概要 补充扩展 补充扩展
关键词: 关键词: DFU_GETSTATUS
15
DFU_GETSTATE
DFU_DNLOAD
2010-6-25
www.potevio.com
传输阶段
DFU_DNLOAD请求 DFU_DNLOAD请求
wBlockNum域记录的是块数字,当传输完一块后,wBlockNum增加1 wBlockNum域记录的是块数字,当传输完一块后,wBlockNum增加1 域记录的是块数字 增加 范围是从0 65, 范围是从0到65,535 设备在功能描述符的wTransferSize wTransferSize域规定了每次传输的最大字节 设备在功能描述符的wTransferSize域规定了每次传输的最大字节 wLength为本次传输的字节数 为本次传输的字节数, 数,wLength为本次传输的字节数,需要小于最大字节数 在每次下载一个块大小后,主机通过发出DFU_GETSTATUS DFU_GETSTATUS请求查看 在每次下载一个块大小后,主机通过发出DFU_GETSTATUS请求查看 设备状态 在最后一个块传送给设备并且设备进行状态检查后, 在最后一个块传送给设备并且设备进行状态检查后,主机发送一 DFU_DNLOAD请求 这个请求的wLength域清除为0 请求, wLength域清除为 个DFU_DNLOAD请求,这个请求的wLength域清除为0,然后重新再 检查一次状态.如果状态为ok ok, 检查一次状态.如果状态为ok,传输阶段完成
24
2010-6-25
www.potevio.com
显示阶段
长度DFU_DNLOAD请求中止传输阶段后, DFU_DNLOAD请求中止传输阶段后 在0长度DFU_DNLOAD请求中止传输阶段后,设备准备好执行新 的固件.设备进入dfuMANIFEST SYNC状态 dfuMANIFEST状态, 的固件.设备进入dfuMANIFEST-SYNC状态,等待主机发出查 看状态的请求.当接收到DFU_GETSTATUS DFU_GETSTATUS后 看状态的请求.当接收到DFU_GETSTATUS后,设备进入 dfuMANIFEST状态 这个时候设备完成了整个重新编程的操作. 状态, dfuMANIFEST状态,这个时候设备完成了整个重新编程的操作. 当成功完成一次重新编程后, 当成功完成一次重新编程后,设备进入下面两个状态中的一 个: dfuMANIFESTdfuMANIFEST-SYNC dfuMANIFEST-WAITdfuMANIFEST-WAIT-RESET
21
2010-6-25
www.potevio.com
传输阶段
DFU_ABORT请求 请求
DFU_ABORT请求使得主机能够从某些状态中退出, DFU_ABORT请求使得主机能够从某些状态中退出,返回到 请求使得主机能够从某些状态中退出 DFU_IDLE状态 设备在接收到这个请求后返回OK 状态. OK应答 DFU_IDLE状态.设备在接收到这个请求后返回OK应答
23
2010-6-25
www.potevio.com
传输阶段
上传
传的目的是提供找回备份的可能并且获得一个设备的固件. 传的目的是提供找回备份的可能并且获得一个设备的固件. 上传固件的定义是同下载相反的, 上传固件的定义是同下载相反的,意思就是上传的映像必须对 于随后的下载而言是可行的. 于随后的下载而言是可行的. 主机发送DFU_UPLOAD请求直到它以一个短小的帧作为EOF DFU_UPLOAD请求直到它以一个短小的帧作为EOF指示来 主机发送DFU_UPLOAD请求直到它以一个短小的帧作为EOF指示来 回应.设备负责选择地址范围来上传合适的固件映像. 回应.设备负责选择地址范围来上传合适的固件映像. 主机需要附加对于上传映像的DFU后缀. DFU后缀 主机需要附加对于上传映像的DFU后缀.如果主机出于某些原因 希望中止传输,它可以通过发送DFU_ABORT DFU_ABORT请求来执行 希望中止传输,它可以通过发送DFU_ABORT请求来执行
12
Host
DFU_DETACH
Device
USB Reset
Enumerate
2010-6-25
www.potevio.com
重配置阶段
DFU_DETACH请求 DFU_DETACH请求
当设备接收到主机发出的DFU_DETACH请求后,如果DFU功能描述符 当设备接收到主机发出的DFU_DETACH请求后,如果DFU功能描述符 DFU_DETACH请求后 DFU 域的Bit3设定为1 将产生一个detach Bit3设定为 detach- 中bmAttributes 域的Bit3设定为1,将产生一个detach-attach 序列,此时主机不能发出USB重置的请求. USB重置的请求 序列,此时主机不能发出USB重置的请求. 否则,设备启动一个定时器开始计时,以毫秒为单位. 否则,设备启动一个定时器开始计时,以毫秒为单位.如果设备 在定时器运行的时候检测到一个USB重置的请求,就切换到DFU USB重置的请求 DFU操 在定时器运行的时候检测到一个USB重置的请求,就切换到DFU操 作模式
13
2010-6-25
www.potevio.com
重配置阶段
DFU_DETACH 请求示例图
14
2010-6-25
www.potevio.com
传输阶段
下载
设备从主机接收固件下载有三种机制: 设备从主机接收固件下载有三种机制: 第一种机制接收整个映像文件放到一块内存中, 第一种机制接收整个映像文件放到一块内存中,并在显示阶段 执行实际的程序. 执行实际的程序. 第二种机制是累积一个块大小的固件数据, 第二种机制是累积一个块大小的固件数据,擦除一块相同大小 的块内存,将固件数据向擦除内存中写入. 的块内存,将固件数据向擦除内存中写入. 第三种机制是第二种机制的变化形式.在第三种方法中, 第三种机制是第二种机制的变化形式.在第三种方法中,一块 大的内存被擦除, 大的内存被擦除,小块的固件被一次一块的写入到擦除的内存 当需要更新的文件大小大于可能的缓冲池大小时, 中.当需要更新的文件大小大于可能的缓冲池大小时,采用这 种方法. 种方法.
相关文档
最新文档