固件更新方法以及固件架构的制作方法

文档序号:6461804阅读:205来源:国知局
专利名称:固件更新方法以及固件架构的制作方法
技术领域
本发明有关于通用串行总线(universal serial bus, USB)接口,尤有关于 一种具USB接口的人性化接口装置(human interface device, HID)的固件 Cfirmware)更新方法以及固件架构。
背景技术
传统上,计算机主机(host)若要对一USBHID进行固件更新有二种实 施方式第一种方式是,必须先将操作系统(operatingsystem)所提供的标准驱 动程序卸载(uninstall),操作系统再扫描该欲更新固件的USB HID,以执 行一次总线列举(enumeration);接着,安装一个烧录用的驱动程序,最后, 透过该烧录用驱动程序对该USB HID进行所有烧录动作。利用此种方式的好 处是,该烧录用驱动程序可以完全掌控该USB HID,并通过控制型传输 (control transfer)、中断型传输(interrupt transfer)或巨量型传输(bulk transfer) 来传递烧录的读写指令。然而,在部分实作与应用上,该烧录用驱动程序与 个人计算机(或操作系统)间会有兼容性的问题产生。
第二种方式主要是利用操作系统所提供的标准USB HID驱动程序来进 行烧录动作,此种方式虽然可避免兼容性的问题,但如果该连接的USBHID 是鼠标或键盘的话,则用来控制该USB HID的控制处置器(control handler) 会被某些操作系统(例如Windows XP以及Windows Vista等)给阻挡。此时, 程序开发者只能宣告(declare)另一个不属于鼠标及键盘的接口 ,而这也意 谓着有至少一个端点(endpoint)被消耗掉了。
另一方面,对一般USB HID的固件流程而言,从普通工作模式(general working mode)切换至lj烧录模式(in system programming mode)时,必须再重作 一次总线列举,理由如下。第一固件运作在烧录模式时,连接的主机需要安装另一个USB驱动程序来进行烧录动作。第二烧录模式所使用的传输管
线(tmnsferpipe)无法和普通工作模式所使用的传输管线并存。由于执行一 次总线列举大约需费时几百个毫秒(milliseccmd),无形中拉长了整个烧录固件 的总时间,若量产时仍采用此方式来更新固件,则总线列举时间就会占据整 个更新固件时间中很大的比重,大幅增加时间成本。为解决上述问题,因此 提出本发明。

发明内容
有鉴于上述问题,本发明的目的之一是提供一种固件更新方法,能够透 过标准USB HID驱动程序来存取一 USB HID装置,更可以将该USB HID装 置从普通工作模式切换至烧录模式,而无须作软件或硬件的重置。
为达成上述目的,本发明的固件更新方法,应用于一计算机主机(host) 与一人性化接口装置之间,该计算机主机具有一应用程序并透过一通用序列 总线接口连接至该人性化接口装置,该人性化接口装置具有一第一固件,该
方法包含以下步骤 一启动步骤,经由该应用程序呼叫一写入报告请求
(Set—Report),以传递一输出特征报告(feature report)给该第一固件;一 决定步骤,根据该第一固件接收到的该特征输出报告内容,决定是否要从一 普通工作模式切换至一烧录模式;以及, 一烧录步骤,当该第一固件切换至 该烧录模式后,该应用程序呼叫该写入报告请求,用以通过该输出特征报告 的装载,对该人性化接口装置进行烧录。
本发明还提供一种固件更新方法,应用于一计算机主机,所述的计算丰几 主机具有一应用程序,所述的方法包含以下步骤透过一通用序列总线接口 将所述的计算机主机连接至一人性化接口装置,所述的人性化接口装置具有 一第一固件;执行一烧录模式总线列举;以及进行烧录,通过所述的应用程 序呼叫一写入报告请求,利用一输出特征报告的装载,对所述的人性化接口 装置进行烧录。
本发明另一目的是提供一种USB装置的固件架构,包含 一烧录模块,
7具有一第一USB传输功能,并利用一USB接口实现一烧录功能,其中,当 接收到一写入报告请求(Set—Report)时,根据该写入报告请求的一第一报告 的内容进行烧录; 一普通工作模块,具有一第二USB传输功能,并利用该第 二USB传输功能实现一特定产品特性,其中,当接收到一报告内容等于一默 认值时,该普通工作模块保存一 USB状态并禁能所有与USB无关的中断, 并切换至该烧录模块;以及, 一模式判断模块,用以根据一模式旗标,决定 启动该普通工作模块或该烧录模块。
兹配合下列图示、实施例的详细说明及权利要求范围,将上述及本发明 的其它目的与优点详述于后。


图1显示一计算机主机与一HID之间的数据流。
图2为本发明固件更新方法的第一实施例的流程图。
图3A与图3B为本发明HID的固件流程图。
图4为本发明固件更新方法的第二实施例的流程图。
图5A与图5B为本发明USB装置的固件流程图。
图6为本发明固件架构的一实施例的架构示意图。
附图标号
110计算机主机 lll应用程序 112标准USB HID驱动程序 120人性化接口装置 121 USB引擎 122固件 130 USB接口
600固件架构 610模式判断模块
620烧录模块 630普通工作模块
具体实施方式
本说明书中的操作系统系以windows XP作为范例说明,唯本发明的固 件更新方法亦可应用于其它操作系统,只要能支持或符合USB的规范即可。
图1显示一计算机主机与一HID之间的数据流。参考图l,有关计算机 主机110与HID120之间的通信架构,在计算机主机110内分为二层应用 程序111与标准USBHID驱动程序112,在HID120内亦区分为二层USB 引擎121与固件122。其中,USB通信的实际执行者是驱动程序112与USB 引擎121,它们负责建立传输封包、解封包及检验通讯协议。
在现有USB的规范中,Set—Report与Get—Report皆属于类别特定请求 (class-specific request)指令,应用程序111呼叫Set—Report指令之后,被 允许传递一报告给HID 120。而当应用程序111呼叫Get—Report指令之后, HID 120被允许通过控制型管线(control pipe)传递一报告给主机110。其中 的报告共有三种型态输入(input)报告、输出(output)报告与特征(feature)报 告。
本发明的特色是利用标准USB HID驱动程序所提供或支持的请求 Set—Report(Feature)以及Get—Report(Feature),用以在主机110与HID 120之 间传递固件更新所需的烧录程序与数据,如图1所示。换言之,本发明利用 上述二个请求作为一组输出/输入管道,将下载的程序与数据伪装成特征报 告,以进行HID的固件更新动作,即可成功地回避WindowsXP以及Windows Vista等操作系统的拦截,而无须再安装额外的驱动程序,大大增加了固件更 新的便利性。
为方便稍后应用程序111能顺利利用Set—Report(Feature)以及 Get一Report(Feature)所传递的特征报告来装载程序与相关信息,以进行后续的 烧录动作,对HID120而言,为符合USB的规范与协议,有一些相关的信息 (如特征报告的长度等),必须事先宣告于报告描述元(report descriptor)内的报 告尺寸(ReportSize)项目(item)与报告计数值(ReportCount)项目,例如假 设特征报告的长度等于8字节(bytes),则报告尺寸项目内的数据与报告计数值项目内的数据必须宣告为8,也就是Report Size(8), Report Count(8)。依 此,在稍后HID120连上主机110所执行的总线列举中,主机110就可以取 得HID 120的属性与运作方式,且稍后应用程序111就能顺利呼叫 Set—Report(Feature)以及Get—Report(Feature)。为避免混淆,应用程序111呼 叫Set—Report(feature)时由主机110传递至HID 120的特征报告,以下称之为 输出特征报告。而应用程序111呼叫Get一Report(feature)时由HID 120回传至 主机110的特征报告,以下称之为输入特征报告,如图1所示。在应用上, 输出特征报告与输入特征报告的长度不一定要相同,当然也必须在HID报告 描述元中分开宣告以兹分辨。
图2为本发明固件更新方法的第一实施例的流程图。图3A与图3B为本 发明HID的固件流程图。
在本发明第一实施例开始进行之前,首先介绍目前HID 120所处的状态。 假设HID120的为一支鼠标,已连接上主机110并在正常使用(即在普通工 作模式)中,故目前是处于执行普通工作模式USB程序的状态(步骤S322, 图3A)。当然,在进入步骤S322之前,HID 120的微控器(图未示)已执行过 模式旗标判断(步骤S310,模式旗标MF的初始值为普通工作模式)、普通 工作模式初始化(步骤S320)与普通工作模式总线列举(步骤S321)的工 作。而步骤S322中普通工作模式USB程序具有USB传输功能,并且能利用 该USB传输功能实现鼠标的所有特性,同时,也会响应应用程序111呼叫的 牛示准i青求(standardrequest)与类另U特定i青求。
以下,以图2为主,图3A与图3B为辅,说明本发明固件更新方法。 步骤S210:应用程序111呼叫Set—Report(feature),以传递特定内容的输 出特征报告(假设长度为8个字节),来启动整个固件更新程序。操作系统 收到此请求后,会透过USB EOD驱动程序112检查HID 120是否有输出特 征报告的宣告以及其宣告的长度是否正确。若成功,由于输出特征报告是透 过控制型传输(Control Transfer)来传送,操作系统再透过下层的USB HID驱动程序112,将此请求在设定阶段(SetupStage)传送至USB接口 130,接着, 再将8个字节的默认值作为输出特征报告的内容,在数据阶段(Data Stage)传 送至USB接口 130。
步骤S220: HID 120接收前述请求与输出特征报告。
步骤S230: HID 120决定是否切换至烧录模式。对照图3A来看,此时 HID 120的微控器(图未示)会连续判断是否有接收到Set—Report(feature)请求
(步骤S323),以及接收到的输出特征报告内容是否正确(步骤S324)。 若都正确的话,则跳到步骤S240,否则,回到步骤S220。
步骤S240:切换至烧录模式。对照图3A来看,从普通工作模式进入烧 录模式之前,微控器会进行USB的状态初始化(步骤S325),其内容包含 保存进入烧录模式之前的USB状态以及禁能(disable)所有与USB无关的中断 (interrupt)。其中,需保存的USB状态包含输出特征报告的长度、输入特 征报告的长度、特征报告识别码(report ID)存在于否、每一端点(endpoint) 的致能状态与暂停(halt)状态、USB地址以及组态状态(configured state) 等等。
本发明通过保存上述的USB状态,HID 120的微控器可以在主机110不 知情的状况下顺利地从普通工作模式进入烧录模式,大约只需花几个微秒 (microsecond)的时间,相较于传统作法还须重新执行烧录模式初始化(步骤 S330)以及烧录模式总线列举(步骤S340),大大縮减了整个固件更新的总 时间。
步骤S250:进行烧录动作。这里的烧录动作包含有关进行固件更新的所 有烧录命令,例如"取得固件版本"、"比较密码"、"切换工作模式"、 "清除闪存(flash erase)"、"区段清除(sector erase)"、"程序化(program) 闪存"、"读取闪存"等等烧录命令。由于输出特征报告的8个字节内容由 接收的USB引擎121负责解译(也就是制造商自行定义),因此,每一输 出特征报告的内容可以视需要由应用软件111置入一烧录命令或相关数据。应用程序111根据一待更新固件的长度与输出特征报告的长度(在此假设是
8字节),可重复呼叫Set一Report(feature),通过该输出特征报告的装载,将 该待更新固件载入到HID 120的非易失性内存(图未示)中。反之,若要读取 HID 120的相关数据或状态时,则应用程序111呼叫Get一Report(feature),通 过输入特征报告的装载,将数据或状态回传到主机110中。
对照图3B来看,从普通工作模式进入烧录模式之后,微控器开始执行 烧录模式USB程序(步骤S350),而该烧录模式USB程序也具有USB传 输功能,并可利用USB接口 130来实现固件更新功能。当微控器收到 Set一Report(feature)请求后(步骤S360),会去撷取输出特征报告的烧录命令, 判断是否要程序化固件(步骤S362),若是的话,跳到步骤S364,以进行 程序化动作;否则,跳到步骤S366,以处理烧录命令。当微控器收到 Get一Report(feature)请求后(步骤S370),会去判断是否要读取本身的数据或 状态(步骤S372),若是的话,跳到步骤S374,以进行数据或状态读取; 否则,跳到步骤S376,以回应请求。在烧录过程中,微控器会判断是否固件 更新程序已结束(步骤S380),若是的话,跳到步骤S382,以进行USB卸 载(步骤S382);否则,回到步骤S350,继续进行烧录。上述步骤S382所 进行的USB卸载,主要是将HID 120的硬件USB功能禁能,让主机110以 为HID 120已断线。之后,微控器再将硬件USB功能致能(enable),让主机 110以为HID 120已重新连接,微控器就可回到普通工作模式,重新执行一 次普通工作模式初始化(步骤S320)与普通工作模式总线列举(步骤S321), 同时,也完成整个固件更新程序,使用者即能享受最新更新的固件功能。
从上述整个固件更新过程可以看到本发明的二大优点第一个优点是省 时,本发明通过直接从普通工作模式切换到烧录模式,可以大幅节省硬件的 重置与插拔、以及软件的初始化与总线列举的时间。第二个优点是使用的便 利性,无须额外安装驱动程序,就可一次安装完成。
另一方面,本发明固件更新方法不但可应用于HID 120已连接至主机IIO且已进入普通工作模式的情况,也同样可应用在HID 120与主机110尚未连 接的情况。
图4为本发明固件更新方法的第二实施例的流程图。以下参考图4说明
本发明第二实施例的所有步骤。
步骤S410:将HID 120连接至主机110。
步骤S420:固件进入烧录模式。对照图3B, HID 120开机之后会判断模 式旗标MF是否为烧录模式(步骤S310)。若是,跳到步骤S320,固件进 入烧录模式并进行烧录模式初始化工作。例如在量产阶段,上述模式旗摞 MF可预设等于烧录模式,以方便载入固件。
步骤S430:执行烧录模式总线列举。如上所述,此时,HID120必须将 输出特征报告与输入特征报告的长度,宣告于报告描述元(report descriptor) 内的报告尺寸(ReportSize)项目(item)与报告计数值(ReportCount)项目中, 主机110就可以取得HID 120的属性与运作方式。
步骤S440:进行烧录动作。根据一待更新固件的长度与输出特征报告的 长度,应用程序lll可重复呼叫Set—Report(feature),以通过该输出特征报告 的装载,将烧录命令或相关数据传入HID120, USB引擎121再负责解译并 执行之。当然,若要读取HID 120的数据或状态时,应用程序111呼叫 Get—Report(feature),通过输入特征报告的装载,将数据或状态回传到主机110 中。详细状况已在上述步骤S250中讨论,这里不再赘述。
如上所述,利用图3A与图3B的固件架构,主机110与HID120之间进 行烧录动作时,透过Get—Report(feature)与Set—Report(feature)二个管道来上 传与下传数据,就可避免控制HID 120的控制处置器被Windows XP给阻挡。 请注意,当图3A与图3B的固件架构应用在一般的USB装置时,就没有操 作系统阻挡的问题。因此,在主机110与一般的USB装置(非鼠标与非键盘) 之间进行烧录动作时,除了可以透过Get—Report(feature)与Set—Report(feature) 的这一组管道之外,也可以透过另一组管道艮卩Get—Report(IN)与
13Set—Report(OUT)来上传与下传数据,如图5A的步骤S523、 S524与图5B 的步骤S560、 S570所示。
图6为本发明固件架构的一实施例的架构示意图。参考图6,本发明固 件架构600适用于所有USB装置,包含 一烧录模块620、 一普通工作模块 630以及一模式判断模块610。
USB装置开机之后,模式判断模块610会判断模式旗标MF的初始值, 来决定启动普通工作模块630或烧录模块620;假设MI^W时,模式判断模 块610启动普通工作模块630;而MF4时,模式判断模块610启动烧录模 块620。烧录模块620具有一第一USB传输功能,用以利用一USB接口实 现一烧录功能。在烧录模块620被启动后,当接收到一 Set—Report(feature) 请求或一 Set—Report(OUT)请求时,即根据相对应的输出特征报告或输出报告 的内容进行烧录;当接收到一 GeLReport(feature)请求或一 Get—Report(IN)请 求时,则通过输入特征报告或输入报告的装载,将数据或状态回传到主机110 中。图6中的虚线表示,烧录动作完成后并不一定要切换回普通工作模块630, 完全视状况或需求而定。例如,在量产阶段,就不必切回普通工作模块630; 而若是供使用者在线更新固件时,则需切回普通工作模块630,使用上会更 加便利。
普通工作模块630具有一第二 USB传输功能,用以利用该第二 USB传 输功能实现一特定产品特性(例如鼠标或打印机)。在普通工作模块630被 启动后,当接收到一Set—Report(feature)请求或一Set—Report(OUT)请求,而 且输出特征报告或输出报告的内容等于一默认值时,普通工作模块630随即 保存目前USB状态并禁能所有与USB无关的中断,以切换至烧录模块620。
在较佳实施例的详细说明中所提出的具体实施例仅用以方便说明本发明 的技术内容,而非将本发明狭义地限制于上述实施例,在不超出本发明的精 神及权利要求范围的情况,所做的种种变化实施,皆属于本发明的范围。
权利要求
1.一种固件更新方法,应用于一计算机主机与一人性化接口装置之间,所述的计算机主机具有一应用程序并透过一通用序列总线接口连接至所述的人性化接口装置,所述的人性化接口装置具有一第一固件,所述的方法包含以下步骤一启动步骤,经由所述的应用程序呼叫一写入报告请求,以传递一输出特征报告给所述的第一固件;一决定步骤,根据所述的第一固件接收到的所述的特征输出报告内容,决定是否要从一普通工作模式切换至一烧录模式;以及一烧录步骤,当所述的第一固件切换至所述的烧录模式后,所述的应用程序呼叫所述的写入报告请求,用以通过所述的输出特征报告的装载,对所述的人性化接口装置进行烧录。
2. 如权利要求1所述的固件更新方法,其中所述的烧录步骤更包含 根据一第二固件的长度与所述的输出特征报告的长度,所述的应用程序以一相对应的次数呼叫所述的写入报告请求,用以通过所述的输出特征报告 的装载,将所述的第二固件载入所述的人性化接口装置中。
3. 如权利要求1所述的固件更新方法,其中所述的烧录步骤更包含 所述的应用程序透过呼叫一读取报告请求,用以通过所述的读取报告请求的一输入特征报告的装载,以回传所述的人性化接口装置的状态或数据。
4. 如权利要求3所述的固件更新方法,其中所述的输入特征报告的内容 为数据。
5.执行一普通工作模式总线列举,用以在一 HID报告描述元中宣告所述的 输入特征报告的长度。
6. 如权利要求5所述的固件更新方法,其中所述的执行步骤更包含根据所述的输入特征报告的长度,宣告所述的HID报告描述元的一输入特征报告尺寸项目与一输入特征报告计数值项目。
7. 如权利要求1所述的固件更新方法,其中在所述的启动步骤之前更包含以下步骤执行一普通工作模式总线列举,用以在一HID报告描述元中宣告所述的输出特征报告的长度。
8. 如权利要求7所述的固件更新方法,其中所述的执行步骤更包含 根据所述的输出特征报告的长度,宣告所述的HID报告描述元的一输出特征报告尺寸项目与一输出特征报告计数值项目。
9. 如权利要求1所述的固件更新方法,其中所述的决定步骤还包含在进入所述的烧录模式之前,所述的第一固件保存一USB状态。
10. 如权利要求9所述的固件更新方法,其中所述的USB状态包含所述 的输出特征报告的长度、所述的输入特征报告的长度、 一特征J艮告识别码存 在于否、每一端点的致能状态与暂停状态、USB地址以及组态状态其中之一 或其组合。
11. 如权利要求1所述的固件更新方法,其中所述的决定步骤还包含 在进入所述的烧录模式之前,所述的第一固件禁能所有与USB无关的中断。
12. 如权利要求1所述的固件更新方法,其中所述的输出特征报告的内容 包含一烧录命令以及一数据其中之一或其组合,且所述的烧录命令为制造商 定义。
13. —种固件更新方法,应用于一计算机主机,所述的计算机主机具有一 应用程序,所述的方法包含以下步骤透过一通用序列总线接口将所述的计算机主机连接至一人性化接口装 置,所述的人性化接口装置具有一第一固件;执行一烧录模式总线列举;以及进行烧录,通过所述的应用程序呼叫一写入报告请求,利用一输出特征 报告的装载,对所述的人性化接口装置进行烧录。
14. 如权利要求13所述的固件更新方法,其中所述的烧录步骤更包含 根据一第二固件的长度与所述的输出特征报告的长度,所述的应用程序以一相对应的次数呼叫所述的写入报告请求,用以通过所述的输出特征报告 的装载,将所述的第二固件载入所述的人性化接口装置中。
15. 如权利要求13所述的固件更新方法,其中所述的烧录步骤更包含所述的应用程序透过呼叫一读取报告请求,利用所述的读取报告请求的 一输入特征报告的装载,以回传所述的人性化接口装置的状态或数据。
16. 如权利要求15所述的固件更新方法,其中所述的输入特征报告的内 容为数据。
17. 如权利要求15所述的固件更新方法,其中所述的执行所述的烧录模式总线列举步骤包含在一HID报告描述元中,宣告所述的输入特征报告的长度。
18. 如权利要求17所述的固件更新方法,其中所述的宣告步骤更包含 根据所述的输入特征报告的长度,宣告所述的HID报告描述元的一输入特征报告尺寸项目与一输入特征报告计数值项目。
19. 如权利要求13所述的固件更新方法,其中所述的执行所述的烧录模 式总线列举步骤包含在一HID报告描述元中,宣告所述的输出特征报告的长度。
20. 如权利要求19所述的固件更新方法,其中所述的宣告步骤更包含 根据所述的输出特征报告的长度,宣告所述的HID报告描述元的一输出特征报告尺寸项目与一输出特征报告计数值项目。
21. 如权利要求13所述的固件更新方法,其中所述的输出特征报告的内 容包含一烧录命令以及一数据其中之一或其组合,且所述的烧录命令为制造商定义。
22. —种USB装置的固件架构,其特征在于,所述的USB装置的固件架 构包含一烧录模块,具有一第一USB传输功能,用以利用一USB接口实现一 烧录功能,其中,当接收到一写入报告请求时,所述的烧录模块根据所述的 写入报告请求的一第一报告的内容进行烧录;一普通工作模块,具有一第二USB传输功能,用以利用所述的第二USB 传输功能实现一特定产品特性,其中,当接收到一报告内容等于一默认值时, 所述的普通工作模块保存一 USB状态并禁能所有与USB无关的中断,并切 换至所述的烧录模块;以及一模式判断模块,用以根据一模式旗标,决定启动所述的普通工作模块 或所述的烧录模块。
23. 如权利要求22所述的USB装置的固件架构,其特征在于,所述的烧 录模块更包含当接收到一读取报告请求时,通过所述的读取报告请求的一第二报告的 装载,以回传所述的USB装置的状态或数据。
24. 如权利要求23所述的USB装置的固件架构,其特征在于,所述的第 二报告为一输入特征报告或一输入报告,且所述的第二报告的内容为数据。
25. 如权利要求23所述的USB装置的固件架构,其特征在于,所述的 USB状态包含所述的第一报告的长度、所述的第二报告的长度、 一特征报告 识别码存在于否、每一端点的致能状态与暂停状态、USB地址以及组态状态 其中之一或其组合。
26. 如权利要求22所述的USB装置的固件架构,其特征在于,所述的第 一报告为一输出特征报告或一输出报告,且所述的第一报告的内容包含一烧 录命令以及一数据其中之一或其组合。
27. 如权利要求22所述的USB装置的固件架构,其特征在于,所述的烧 录模块完成所有烧录动作后,会切换至所述的普通工作模块。
全文摘要
本发明提供一种固件更新方法以及固件架构,通过应用程序呼叫一写入报告请求与一读取报告请求,透过特征报告的装载,和一人性化接口装置之间来进行命令或数据的传递,以完成固件更新程序。
文档编号G06F13/14GK101539862SQ20081008674
公开日2009年9月23日 申请日期2008年3月20日 优先权日2008年3月20日
发明者蔡昌德, 陈兴伦 申请人:松翰科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1