CN111352645A - 用于usb-pd充电器的固件更新方法和装置 - Google Patents
用于usb-pd充电器的固件更新方法和装置 Download PDFInfo
- Publication number
- CN111352645A CN111352645A CN202010240827.5A CN202010240827A CN111352645A CN 111352645 A CN111352645 A CN 111352645A CN 202010240827 A CN202010240827 A CN 202010240827A CN 111352645 A CN111352645 A CN 111352645A
- Authority
- CN
- China
- Prior art keywords
- usb
- charger
- message
- firmware update
- code space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及用于USB‑PD充电器的固件更新方法和装置。提供了一种由USB‑PD充电器执行的方法,包括:接收由USB‑PD主控装置基于从终端设备接收到的更新指令而发送的第一消息;在基于第一消息验证USB‑PD主控装置合法时,向USB‑PD主控装置发送第一确认消息,并且将USB‑PD充电器的USB‑PD IC模块用于执行程序的指针从用户程序代码空间跳转到在系统编程代码空间;接收由USB‑PD主控装置基于从终端设备接收到的固件更新数据而发送的第二消息,并且将第二消息中的固件更新数据写入用户程序代码空间;以及向USB‑PD主控装置发送第二确认消息,并且将USB‑PD充电器的USB‑PD IC模块用于执行程序的指针从在系统编程代码空间跳转到用户程序代码空间。
Description
技术领域
本公开涉及充电器领域,更具体地涉及一种用于USB-PD充电器的固件更新方法和装置。
背景技术
USB-PD(USB Power Delivery,USB功率传输)协议是USB-IF(USB ImplementersForum,USB开发者论坛)协会提出的一项快充协议,伴随USB-PD协议诞生的还有USB Type-C接口。通过USB-PD协议和USB Type-C接口,USB-IF协会希望统一所有厂家的快充规格,改变厂家各自为战的局面,实现一台充电器适配所有设备的远景。从2014年诞生以来,USB-PD充电器蓬勃发展,特别是随着Apple终于在iPhone11引入了对USB-PD协议的支持之后,整个USB-PD充电器市场迎来了大爆发。
随着USB-PD协议不断地被修改完善,一款USB-PD充电器生产出来,可能过一段时间就无法兼容最新的USB-PD协议。然而,对于充电器厂家来说,USB-PD IC(USB-PDIntegrated Circuit,USB-PD集成电路)相对于一般充电器IC在价格上较高,并且如果早期上市的USB-PD充电器有漏洞,则很可能导致召回及赔偿。因此,充电器厂家希望能够对USB-PD充电器进行固件更新。
传统的固件更新方法需要充电器额外提供专用的烧录引脚,典型的是一根时钟信号SCL,一根数据信号线SDA。然而,在USB-PD充电器中,对外只有Type-C的信号线,无法提供专用的烧录引脚。因此,需要一种用于USB-PD充电器的固件更新方法和装置。
发明内容
本公开的实施例提供了一种用于USB-PD充电器的固件更新方法和装置,能够利用USB Type-C接口根据USB-PD协议来更新USB-PD充电器的固件。
在第一方面中,本公开的实施例提供了一种由USB-PD充电器执行的方法,包括:接收由USB-PD主控装置基于从终端设备接收到的更新指令而发送的第一消息;在基于第一消息验证USB-PD主控装置合法时,向USB-PD主控装置发送第一确认消息,并且将USB-PD充电器的USB-PD IC模块用于执行程序的指针从用户程序代码空间跳转到在系统编程代码空间;接收由USB-PD主控装置基于从终端设备接收到的固件更新数据而发送的第二消息,并且将第二消息中的固件更新数据写入用户程序代码空间;以及向USB-PD主控装置发送第二确认消息,并且将USB-PD充电器的USB-PD IC模块用于执行程序的指针从在系统编程代码空间跳转到用户程序代码空间。
在第一方面的一种可能的实施方式中,第一消息包括加密信息,并且其中,基于第一消息验证USB-PD主控装置合法包括:对第一消息中的加密信息进行解密,并且基于解密的信息来验证USB-PD主控装置合法。
在第一方面的一种可能的实施方式中,在接收由USB-PD主控装置基于从终端设备接收到的固件更新数据而发送的第二消息之前,方法还包括:接收由USB-PD主控装置发送的第三消息,并且向USB-PD主控装置发送第三确认消息,并且其中,第三消息包括固件更新数据的数据块数量和USB-PD充电器的USB-PD IC模块的存储器的更新起始地址。
在第一方面的一种可能的实施方式中,接收由USB-PD主控装置基于从终端设备接收到的固件更新数据而发送的第二消息包括:依次接收与固件更新数据的数据块数量相对应的多个第二子消息。
在第一方面的一种可能的实施方式中,在向USB-PD主控装置发送第二确认消息之后,并且在将USB-PD充电器的USB-PD IC模块用于执行程序的指针从在系统编程代码空间跳转到用户程序代码空间之前,方法还包括:接收由USB-PD主控装置基于从终端设备接收到的校验指令而发送的请求消息;基于请求消息,从用户程序代码空间读取固件更新数据并且向USB-PD主控装置发送固件更新数据,以供USB-PD主控装置将固件更新数据发送至终端设备用于检测一致性;以及接收由USB-PD主控装置基于终端设备确认固件更新数据的一致性而发送的第四消息,并且向USB-PD主控装置发送第四确认消息。
在第一方面的一种可能的实施方式中,向USB-PD主控装置发送固件更新数据包括:依次发送固件更新数据的各个数据块。
在第一方面的一种可能的实施方式中,USB-PD充电器与USB-PD主控装置之间的通信是经由USB Type-C接口根据USB-PD协议进行的,并且USB-PD主控装置与终端设备之间的通信是经由UART接口进行的。
在第二方面中,本公开的实施例提供了一种由USB-PD主控装置执行的方法,包括:基于从终端设备接收到的更新指令而向USB-PD充电器发送第一消息;接收由USB-PD充电器在基于第一消息验证USB-PD主控装置合法时而发送的第一确认消息,以及使得USB-PD充电器的USB-PD IC模块用于执行程序的指针从用户程序代码空间跳转到在系统编程代码空间;基于从终端设备接收到的固件更新数据而向USB-PD充电器发送第二消息;以及接收由USB-PD充电器在将第二消息中的固件更新数据写入用户程序代码空间之后而发送的第二确认消息,以及使得USB-PD充电器的USB-PD IC模块用于执行程序的指针从在系统编程代码空间跳转到用户程序代码空间。
在第二方面的一种可能的实施方式中,第一消息包括加密信息。
在第二方面的一种可能的实施方式中,在基于从终端设备接收到的固件更新数据而向USB-PD充电器发送第二消息之前,方法还包括:向USB-PD充电器发送第三消息,并且接收由USB-PD充电器发送的第三确认消息;并且其中,第三消息包括固件更新数据的数据块数量和USB-PD充电器的USB-PD IC模块的存储器的更新起始地址。
在第二方面的一种可能的实施方式中,基于从终端设备接收到的固件更新数据而向USB-PD充电器发送第二消息包括:依次发送与固件更新数据的数据块数量相对应的多个第二子消息。
在第二方面的一种可能的实施方式中,在接收由USB-PD充电器在将第二消息中的固件更新数据写入用户程序代码空间之后而发送的第二确认消息之后,并且在使得USB-PD充电器的USB-PD IC模块用于执行程序的指针从在系统编程代码空间跳转到用户程序代码空间之前,方法还包括:基于从终端设备接收到的校验指令而向USB-PD充电器发送请求消息;接收由USB-PD充电器从用户程序代码空间读取并且发送的固件更新数据,并且将固件更新数据发送至终端设备用于检测一致性;以及基于终端设备确认固件更新数据的一致性而向USB-PD充电器发送第四消息,并且接收由USB-PD充电器发送的第四确认消息。
在第二方面的一种可能的实施方式中,接收由USB-PD充电器从用户程序代码空间读取并且发送的固件更新数据包括:依次接收固件更新数据的各个数据块。
在第二方面的一种可能的实施方式中,USB-PD充电器与USB-PD主控装置之间的通信是经由USB Type-C接口根据USB-PD协议进行的,并且USB-PD主控装置与终端设备之间的通信是经由UART接口进行的。
在第三方面中,本公开的实施例提供了一种USB-PD IC模块,包括:微控制器核心、可多次擦写存储器、USB-PD数据缓冲器、VBUS控制模块、USB-PD物理层接口电路、和UART/I2C接口电路,并且其中,微控制器核心分别与可多次擦写存储器、USB-PD协议发送接收数据缓冲器、VBUS控制模块、USB-PD物理层接口电路、和UART/I2C接口电路可通信地连接;可多次擦写存储器包括用户程序代码空间和在系统编程代码空间;USB-PD数据缓冲器用于缓冲根据USB-PD协议传输的数据;VBUS控制模块用于充电控制;USB-PD物理层接口电路用于经由USB Type-C接口根据USB-PD协议进行通信;UART/I2C接口电路用于经由UART接口进行通信。
在第四方面中,本公开的实施例提供了一种USB-PD充电器,包括根据第三方面的USB-PD IC模块,其中,该USB-PD IC模块中的UART/I2C接口电路被封装并且不与外部通信,并且其中,该USB-PD充电器用于执行根据第一方面的方法。
在第五方面中,本公开的实施例提供了一种USB-PD主控装置,包括根据第三方面的USB-PD IC模块,其中,该USB-PD主控装置用于执行根据第二方面的方法。
在第六方面中,本公开的实施例提供了一种系统,包括根据第四方面的USB-PD充电器、根据第五方面的USB-PD主控装置、以及终端设备。
如上所述,本公开的实施例通过终端设备和USB-PD主控装置来对USB-PD充电器进行固件更新。具体地,终端设备可以向USB-PD主控装置发送固件更新数据,并且USB-PD主控装置可以将固件更新数据转发给USB-PD充电器,使得仅需要通过USB Type-C接口根据USB-PD协议来更新USB-PD充电器的固件。此外,USB-PD充电器还可以将固件更新数据经由USB-PD主控装置发送回终端设备,使得由终端设备进行一致性检测以校验USB-PD充电器中的固件更新数据。通过以上方式,在不需要对USB-PD充电器进行拆分并且不需要提供专用烧录引脚的情况下,可以实现对USB-PD充电器进行固件更新,并且确保固件更新数据的一致性。
附图说明
从下面结合附图对本公开的具体实施方式的描述中,可以更好地理解本公开,其中:
图1是USB-PD充电器和移动设备的充电示意图。
图2示出了根据本公开的实施例的USB-PD充电器的固件更新示意图。
图3示出了图2中的USB-PD IC模块的示意图。
图4示出了根据本公开的实施例的由USB-PD充电器执行的方法400的流程图。
图5示出了根据本公开的实施例的由USB-PD主控装置执行的方法500的流程图。
图6示出了根据本公开的实施例的USB-PD充电器的固件更新时序图。
具体实施方式
下面将详细描述本公开各个方面的特征和示例性实施例。下面的描述涵盖了许多具体细节,以便提供对本公开的全面理解。但是,对于本领域技术人员来说显而易见的是,本公开可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本公开的示例来提供对本公开更清楚的理解。本公开绝不限于下面所提出的任何具体配置,而是在不脱离本发明的精神的前提下覆盖了相关元素或部件的任何修改、替换和改进。
图1是USB-PD充电器和移动设备的充电示意图。在图1中,USB-PD充电器的硬件接口可以是USB Type-C接口,该USB Type-C接口可以包括VBUS(供电线)、CC(CC1或CC2)(Channel Configuration,通道配置)和GND(接地线),其中,VBUS和GND可以提供充电回路,而CC可以用于传输源与接收点之间的协议信息。USB-PD充电器可以通过USB Type-C接口经由USB Type-C线缆与移动设备连接。
在本公开的实施例中,在不增加额外资源的情况下,充分利用USB-PD充电器的USBType-C接口以及USB-PD协议,提供了一种用于USB-PD充电器的固件更新方法和装置。具体地,定义了USB-PD IC模块,通过运行有USB-PD固件更新软件的终端设备,利用具有该USB-PD IC模块的USB-PD主控装置,来对具有该USB-PD IC模块的USB-PD充电器进行固件更新。因此,实现了通过USB Type-C接口直接对USB-PD充电器进行固件更新。
图2示出了根据本公开的实施例的USB-PD充电器的固件更新示意图。根据本公开的实施例,USB-PD充电器可以包括USB-PD IC模块,USB-PD主控装置可以包括USB-PD IC模块,并且终端设备可以运行有USB-PD固件更新软件。在实施例中,终端设备可以是主机PC。终端设备与USB-PD主控装置可以经由UART接口进行通信,并且USB-PD主控装置与USB-PD充电器可以经由USB Type-C接口进行通信。
图3示出了图2中的USB-PD IC模块的示意图。根据本公开的实施例,USB-PD IC模块可以包括MCU(微控制器)核心、可多次擦写存储器、USB-PD数据缓冲器、VBUS控制模块、USB-PD物理层接口电路、和UART/I2C接口电路。在实施例中,微控制器核心可以分别与可多次擦写存储器、USB-PD协议发送接收数据缓冲器、VBUS控制模块、USB-PD物理层接口电路、和UART/I2C接口电路可通信地连接。
根据本公开的实施例,可多次擦写存储器可以包括用户程序代码空间和在系统编程代码空间。在实施例中,用户程序代码空间可以用于存储用户程序数据,包括固件更新数据等等。在系统编程代码空间可以用于固件更新时的在系统编程。在实施例中,USB-PD数据缓冲器可以用于缓冲根据USB-PD协议发送的数据,例如,固件更新数据等等。在实施例中,VBUS控制模块可以用于充电控制。
根据本公开的实施例,USB-PD物理层接口电路可以用于经由USB Type-C接口根据USB-PD协议进行通信。例如,USB-PD物理层接口电路可以用于USB-PD充电器与USB-PD主控装置之间的通信。在实施例中,UART/I2C接口电路可以用于经由UART接口进行通信。例如,UART/I2C接口电路可以用于USB-PD主控装置与终端设备之间的通信。
在实施例中,USB-PD充电器中的USB-PD IC模块的UART/I2C接口电路可以被封装并且不与外部通信。此外,USB-PD充电器中的USB-PD IC模块的USB-PD物理层接口电路可以用于与外部设备进行通信,例如,由于USB-PD充电器的硬件接口仅为USB Type-C接口。在实施例中,USB-PD主控装置中的USB-PD IC模块的UART/I2C接口电路可以用于与终端设备进行通信,而USB-PD主控装置中的USB-PD IC模块的USB-PD物理层接口电路可以用于与USB-PD充电器进行通信。
图4示出了根据本公开的实施例的由USB-PD充电器执行的方法400的流程图。在实施例中,由USB-PD充电器执行的方法400可以包括以下步骤。在步骤S401中,接收由USB-PD主控装置基于从终端设备接收到的更新指令而发送的第一消息。在实施例中,第一消息可以是根据USB-PD协议定义的VDM(Vendor Define Message,供应商定义消息)1。例如,VDM 1可以具有以下消息格式。
字节0 | 消息报头0 |
字节1 | 消息报头1 |
字节2~字节27 | 26字节标识数据 |
字节28~字节31 | 32位CRC |
VDM 1消息格式
在步骤S402中,在基于第一消息验证USB-PD主控装置合法时,向USB-PD主控装置发送第一确认消息,并且将USB-PD充电器的USB-PD IC模块用于执行程序的指针从用户程序代码空间跳转到在系统编程代码空间。在实施例中,第一消息可以包括加密信息,例如,如上所述VDM 1中的26个字节的标识数据可以是加密信息。
在实施例中,基于第一消息验证USB-PD主控装置合法可以包括:对第一消息中的加密信息进行解密,并且基于解密的信息来验证USB-PD主控装置合法。在实施例中,通过对标识数据进行加密,可以保证USB-PD充电器能够识别合法的USB-PD主控装置。此外,在其他非法装置向USB-PD充电器发送消息并且试图篡改USB-PD充电器的USB-PD IC模块时,USB-PD充电器可以发送拒绝消息,并且阻止这些非法操作。
在步骤S403中,接收由USB-PD主控装置基于从终端设备接收到的固件更新数据而发送的第二消息,并且将第二消息中的固件更新数据写入用户程序代码空间。在实施例中,在接收由USB-PD主控装置基于从终端设备接收到的固件更新数据而发送的第二消息之前,方法400还可以包括:接收由USB-PD主控装置发送的第三消息,并且向USB-PD主控装置发送第三确认消息,并且其中,第三消息包括固件更新数据的数据块数量和USB-PD充电器的USB-PD IC模块的存储器的更新起始地址。
在实施例中,第三消息可以是根据USB-PD协议定义的VDM 2。例如,VDM 2可以具有以下消息格式。
字节0 | 消息报头0 |
字节1 | 消息报头1 |
字节2 | 总数据块数量 |
字节3 | 起始地址低字节 |
字节4 | 起始地址高字节 |
字节5~字节8 | 32位CRC |
VDM 2消息格式
在实施例中,一个数据块可以具有256个字节的数据。此外,当USB-PD充电器接收到第三消息之后,USB-PD充电器可以根据第三消息中的更新起始地址以及总数据块数量,对USB-PD充电器中的USB-PD IC模块的存储器进行设置,以便能够预留出相应的存储空间,从而接收固件更新数据。
在实施例中,接收由USB-PD主控装置基于从终端设备接收到的固件更新数据而发送的第二消息包括:依次接收与固件更新数据的数据块数量相对应的多个第二子消息。在实施例中,第二子消息可以是根据USB-PD协议定义的VDM 3。例如,VDM 3可以具有以下消息格式。
字节0 | 消息报头0 |
字节1 | 消息报头1 |
字节2 | 数据块编号N |
字节3~字节258 | 针对数据块N的256字节数据 |
字节28~字节31 | 32位CRC |
VDM 3消息格式
在实施例中,USB-PD充电器可以根据数据块编号来依次接收多个VDM 3,并且将VDM 3中的固件更新数据依次写入存储器的用户程序代码空间。在实施例中,通过将固件更新数据分数据块来进行发送,可以实现更有效并且更准确的数据传输。
在步骤S404中,向USB-PD主控装置发送第二确认消息,并且将USB-PD充电器的USB-PD IC模块用于执行程序的指针从在系统编程代码空间跳转到用户程序代码空间。在实施例中,当USB-PD充电器将所有固件更新数据写入存储器的用户程序代码空间之后,可以发送第二确认消息,并且可以将用于执行程序的指针从在系统编程代码空间跳转到用户程序代码空间。这样,USB-PD充电器可以完成更新,并且实现仅需要通过USB Type-C接口根据USB-PD协议来更新USB-PD充电器的固件。
在实施例中,在向USB-PD主控装置发送第二确认消息之后,并且在将USB-PD充电器的USB-PD IC模块用于执行程序的指针从在系统编程代码空间跳转到用户程序代码空间之前,方法400还可以包括:接收由USB-PD主控装置基于从终端设备接收到的校验指令而发送的请求消息;基于请求消息,从用户程序代码空间读取固件更新数据并且向USB-PD主控装置发送固件更新数据,以供USB-PD主控装置将固件更新数据发送至终端设备用于检测一致性;以及接收由USB-PD主控装置基于终端设备确认固件更新数据的一致性而发送的第四消息,并且向USB-PD主控装置发送第四确认消息。
在实施例中,通过将USB-PD充电器存储的固件更新数据发送回终端设备,并且由终端设备对固件更新数据进行一致性检测,来确保USB-PD充电器接收到的固件更新数据是正确的。在实施例中,向USB-PD主控装置发送固件更新数据包括:依次发送固件更新数据的各个数据块。例如,可以通过如上所述的VDM 3来将固件更新数据按照数据块编号依次发送至USB-PD主控装置并且再转发回终端设备。在实施例中,终端设备可以依次对固件更新数据的各个数据块进行一致性检测。例如,终端设备可以在相应数据块具有一致性时,继续接收和检测下一个数据块,并且可以在相应数据块不具有一致性时,报告错误。当固件更新数据的所有数据块都完成一致性检测时,可以验证USB-PD充电器接收到的固件更新数据是正确的。
在实施例中,USB-PD充电器与USB-PD主控装置之间的通信是经由USB Type-C接口根据USB-PD协议进行的,并且USB-PD主控装置与终端设备之间的通信是经由UART接口进行的。这样,可以实现仅需要通过USB Type-C接口根据USB-PD协议来更新USB-PD充电器的固件。
图5示出了根据本公开的实施例的由USB-PD主控装置执行的方法500的流程图。在实施例中,由USB-PD主控装置执行的方法500可以包括以下步骤。在步骤S501中,基于从终端设备接收到的更新指令而向USB-PD充电器发送第一消息。在实施例中,第一消息可以是如上所述的VDM 1,并且具有如上所述的消息格式。
在步骤S502中,接收由USB-PD充电器在基于第一消息验证USB-PD主控装置合法时而发送的第一确认消息,以及使得USB-PD充电器的USB-PD IC模块用于执行程序的指针从用户程序代码空间跳转到在系统编程代码空间。在实施例中,第一消息可以包括加密信息,例如,如上所述VDM 1中的26个字节的标识数据可以是加密信息。
在步骤S503中,基于从终端设备接收到的固件更新数据而向USB-PD充电器发送第二消息。在实施例中,在基于从终端设备接收到的固件更新数据而向USB-PD充电器发送第二消息之前,方法500还包括:向USB-PD充电器发送第三消息,并且接收由USB-PD充电器发送的第三确认消息;并且其中,第三消息包括固件更新数据的数据块数量和USB-PD充电器的USB-PD IC模块的存储器的更新起始地址。在实施例中,第三消息可以是如上所述的VDM2,并且可以具有如上所述的消息格式。在实施例中,USB-PD主控装置可以初始化数据块计数器N=0。
在实施例中,基于从终端设备接收到的固件更新数据而向USB-PD充电器发送第二消息包括:依次发送与固件更新数据的数据块数量相对应的多个第二子消息。在实施例中,第二子消息可以是如上所述的VDM 3,并且可以具有如上所述的消息格式。此外,USB-PD主控装置可以在发送一个第二子消息之后,对数据块计数器N进行递增操作,直到所有第二子消息发送完毕,并且数据块计数器N等于固件更新数据的数据块数量。
在步骤S504中,接收由USB-PD充电器在将第二消息中的固件更新数据写入用户程序代码空间之后而发送的第二确认消息,以及使得USB-PD充电器的USB-PD IC模块用于执行程序的指针从在系统编程代码空间跳转到用户程序代码空间。在实施例中,当USB-PD主控装置接收到第二确认消息之后,可以完成对USB-PD充电器的固件更新,并且因此,可以实现仅需要通过USB Type-C接口根据USB-PD协议来更新USB-PD充电器的固件。
在实施例中,在接收由USB-PD充电器在将第二消息中的固件更新数据写入用户程序代码空间之后而发送的第二确认消息之后,并且在使得USB-PD充电器的USB-PD IC模块用于执行程序的指针从在系统编程代码空间跳转到用户程序代码空间之前,方法500还包括:基于从终端设备接收到的校验指令而向USB-PD充电器发送请求消息;接收由USB-PD充电器从用户程序代码空间读取并且发送的固件更新数据,并且将固件更新数据发送至终端设备用于检测一致性;以及基于终端设备确认固件更新数据的一致性而向USB-PD充电器发送第四消息,并且接收由USB-PD充电器发送的第四确认消息。
在实施例中,通过将USB-PD充电器存储的固件更新数据发送回终端设备,并且由终端设备对固件更新数据进行一致性检测,来确保USB-PD充电器接收到的固件更新数据是正确的。在实施例中,接收由USB-PD充电器从用户程序代码空间读取并且发送的固件更新数据包括:依次接收固件更新数据的各个数据块。例如,USB-PD主控装置可以通过如上所述的VDM 3来按照数据块编号依次接收固件更新数据并且再转发回终端设备。在实施例中,终端设备可以依次对固件更新数据的各个数据块进行一致性检测。例如,终端设备可以在相应数据块具有一致性时,继续接收和检测下一个数据块,并且可以在相应数据块不具有一致性时,报告错误。当固件更新数据的所有数据块都完成一致性检测时,可以验证USB-PD充电器接收到的固件更新数据是正确的。
在实施例中,USB-PD充电器与USB-PD主控装置之间的通信是经由USB Type-C接口根据USB-PD协议进行的,并且USB-PD主控装置与终端设备之间的通信是经由UART接口进行的。这样,可以实现仅需要通过USB Type-C接口根据USB-PD协议来更新USB-PD充电器的固件。
图6示出了根据本公开的实施例的USB-PD充电器的固件更新时序图。根据本公开的实施例,在步骤1中,终端设备可以向USB-PD主控装置发送更新指令,以指示需要更新USB-PD充电器的固件。在步骤2中,USB-PD主控装置向USB-PD充电器发送VDM 1。在步骤3中,USB-PD充电器在基于VDM 1中的加密信息验证USB-PD主控装置合法时发送确认消息,并且将用于执行程序的指针从用户程序代码空间跳转到在系统编程代码空间。在步骤4中,USB-PD主控装置在接收到第一确认消息之后,向USB-PD充电器发送VDM 2。在步骤5中,USB-PD充电器接收VDM 2,并且向USB-PD主控装置发送确认消息。在步骤6中,USB-PD主控装置通知终端设备以开始发送固件更新数据。在步骤7中,终端设备向USB-PD主控装置发送固件更新数据。在步骤8中,USB-PD主控装置向USB-PD充电器发送VDM 3。在步骤9中,USB-PD充电器将固件更新数据写入用户程序代码空间,并且向USB-PD主控装置发送确认消息。此外,步骤7~9可以重复执行,直到所有固件更新数据都被发送至USB-PD充电器。在步骤10中,USB-PD主控装置通知终端设备所有固件更新数据已经发送完毕。
在实施例中,在步骤11中,终端设备向USB-PD主控装置发送校验指令,以指示要读取USB-PD充电器中存储的固件更新数据。在步骤12中,USB-PD主控装置向USB-PD充电器发送请求消息。在步骤13中,USB-PD充电器从用户程序代码空间读取固件更新数据,并且向USB-PD主控装置发送VDM 3。在步骤14中,USB-PD主控装置将固件更新数据发送回终端设备,并且终端设备检测固件更新数据是否具有一致性。此外,步骤11~14可以重复执行,直到所有固件更新数据都被验证。在步骤15中,终端设备向USB-PD主控装置发送更新完成指令,以指示更新结束。在步骤16中,USB-PD主控装置向USB-PD充电器发送VDM 4。在步骤17中,USB-PD充电器向USB-PD主控装置发送确认消息,并且将用于执行程序的指针从在系统编程代码空间跳转到用户程序代码空间。在步骤18中,USB-PD主控装置通知终端设备更新结束。
如上所述,本公开的实施例通过终端设备和USB-PD主控装置来对USB-PD充电器进行固件更新。具体地,终端设备可以向USB-PD主控装置发送固件更新数据,并且USB-PD主控装置可以将固件更新数据转发给USB-PD充电器,使得仅需要通过USB Type-C接口根据USB-PD协议来更新USB-PD充电器的固件。此外,USB-PD充电器还可以将固件更新数据经由USB-PD主控装置发送回终端设备,使得由终端设备进行一致性检测以校验USB-PD充电器中的固件更新数据。通过以上方式,在不需要对USB-PD充电器进行拆分并且不需要提供专用烧录引脚的情况下,可以实现对USB-PD充电器进行固件更新,并且确保固件更新数据的一致性。
虽然已经参考实施例对本公开进行了描述,但在不脱离本公开的范围的情况下,可以对其进行各种改进并且可以用等效物替换其中的部件。尤其是,只要不存在结构冲突,各个实施例中所提到的各项技术特征均可以任意方式组合起来。本公开并不局限于文中公开的特定实施例,而是包括落入权利要求的范围内的所有技术方案。
Claims (18)
1.一种由USB-PD充电器执行的方法,包括:
接收由USB-PD主控装置基于从终端设备接收到的更新指令而发送的第一消息;
在基于所述第一消息验证所述USB-PD主控装置合法时,向所述USB-PD主控装置发送第一确认消息,并且将所述USB-PD充电器的USB-PD IC模块用于执行程序的指针从用户程序代码空间跳转到在系统编程代码空间;
接收由所述USB-PD主控装置基于从所述终端设备接收到的固件更新数据而发送的第二消息,并且将所述第二消息中的固件更新数据写入所述用户程序代码空间;以及
向所述USB-PD主控装置发送第二确认消息,并且将所述USB-PD充电器的USB-PD IC模块用于执行程序的指针从所述在系统编程代码空间跳转到所述用户程序代码空间。
2.根据权利要求1所述的方法,其中,所述第一消息包括加密信息,并且其中,基于所述第一消息验证所述USB-PD主控装置合法包括:
对所述第一消息中的加密信息进行解密,并且基于解密的信息来验证所述USB-PD主控装置合法。
3.根据权利要求1所述的方法,其中,在接收由所述USB-PD主控装置基于从所述终端设备接收到的固件更新数据而发送的第二消息之前,所述方法还包括:
接收由所述USB-PD主控装置发送的第三消息,并且向所述USB-PD主控装置发送第三确认消息,并且
其中,所述第三消息包括所述固件更新数据的数据块数量和所述USB-PD充电器的USB-PD IC模块的存储器的更新起始地址。
4.根据权利要求3所述的方法,其中,接收由所述USB-PD主控装置基于从所述终端设备接收到的固件更新数据而发送的第二消息包括:
依次接收与所述固件更新数据的数据块数量相对应的多个第二子消息。
5.根据权利要求1所述的方法,其中,在向所述USB-PD主控装置发送第二确认消息之后,并且在将所述USB-PD充电器的USB-PD IC模块用于执行程序的指针从所述在系统编程代码空间跳转到所述用户程序代码空间之前,所述方法还包括:
接收由所述USB-PD主控装置基于从所述终端设备接收到的校验指令而发送的请求消息;
基于所述请求消息,从所述用户程序代码空间读取所述固件更新数据并且向所述USB-PD主控装置发送所述固件更新数据,以供所述USB-PD主控装置将所述固件更新数据发送至所述终端设备用于检测一致性;以及
接收由所述USB-PD主控装置基于所述终端设备确认所述固件更新数据的一致性而发送的第四消息,并且向所述USB-PD主控装置发送第四确认消息。
6.根据权利要求5所述的方法,其中,向所述USB-PD主控装置发送所述固件更新数据包括:
依次发送所述固件更新数据的各个数据块。
7.根据权利要求1所述的方法,其中,所述USB-PD充电器与所述USB-PD主控装置之间的通信是经由USB Type-C接口根据USB-PD协议进行的,并且所述USB-PD主控装置与所述终端设备之间的通信是经由UART接口进行的。
8.一种由USB-PD主控装置执行的方法,包括:
基于从终端设备接收到的更新指令而向USB-PD充电器发送第一消息;
接收由所述USB-PD充电器在基于所述第一消息验证所述USB-PD主控装置合法时而发送的第一确认消息,以及使得所述USB-PD充电器的USB-PD IC模块用于执行程序的指针从用户程序代码空间跳转到在系统编程代码空间;
基于从所述终端设备接收到的固件更新数据而向所述USB-PD充电器发送第二消息;以及
接收由所述USB-PD充电器在将所述第二消息中的固件更新数据写入所述用户程序代码空间之后而发送的第二确认消息,以及使得所述USB-PD充电器的USB-PD IC模块用于执行程序的指针从所述在系统编程代码空间跳转到所述用户程序代码空间。
9.根据权利要求8所述的方法,其中,所述第一消息包括加密信息。
10.根据权利要求8所述的方法,其中,在基于从所述终端设备接收到的固件更新数据而向所述USB-PD充电器发送第二消息之前,所述方法还包括:
向所述USB-PD充电器发送第三消息,并且接收由所述USB-PD充电器发送的第三确认消息;并且
其中,所述第三消息包括所述固件更新数据的数据块数量和所述USB-PD充电器的USB-PD IC模块的存储器的更新起始地址。
11.根据权利要求10所述的方法,其中,基于从所述终端设备接收到的固件更新数据而向所述USB-PD充电器发送第二消息包括:
依次发送与所述固件更新数据的数据块数量相对应的多个第二子消息。
12.根据权利要求7所述的方法,其中,在接收由所述USB-PD充电器在将所述第二消息中的固件更新数据写入所述用户程序代码空间之后而发送的第二确认消息之后,并且在使得所述USB-PD充电器的USB-PD IC模块用于执行程序的指针从所述在系统编程代码空间跳转到所述用户程序代码空间之前,所述方法还包括:
基于从所述终端设备接收到的校验指令而向所述USB-PD充电器发送请求消息;
接收由所述USB-PD充电器从所述用户程序代码空间读取并且发送的所述固件更新数据,并且将所述固件更新数据发送至所述终端设备用于检测一致性;以及
基于所述终端设备确认所述固件更新数据的一致性而向所述USB-PD充电器发送第四消息,并且接收由所述USB-PD充电器发送的第四确认消息。
13.根据权利要求12所述的方法,其中,接收由所述USB-PD充电器从所述用户程序代码空间读取并且发送的所述固件更新数据包括:
依次接收所述固件更新数据的各个数据块。
14.根据权利要求8所述的方法,其中,所述USB-PD充电器与所述USB-PD主控装置之间的通信是经由USB Type-C接口根据USB-PD协议进行的,并且所述USB-PD主控装置与所述终端设备之间的通信是经由UART接口进行的。
15.一种USB-PD IC模块,包括:
微控制器核心、可多次擦写存储器、USB-PD数据缓冲器、VBUS控制模块、USB-PD物理层接口电路、和UART/I2C接口电路,并且
其中,所述微控制器核心分别与所述可多次擦写存储器、所述USB-PD协议发送接收数据缓冲器、所述VBUS控制模块、所述USB-PD物理层接口电路、和所述UART/I2C接口电路可通信地连接;
所述可多次擦写存储器包括用户程序代码空间和在系统编程代码空间;
所述USB-PD数据缓冲器用于缓冲根据USB-PD协议传输的数据;
所述VBUS控制模块用于充电控制;
所述USB-PD物理层接口电路用于经由USB Type-C接口根据USB-PD协议进行通信;
所述UART/I2C接口电路用于经由UART接口进行通信。
16.一种USB-PD充电器,包括根据权利要求15所述的USB-PD IC模块,其中,所述USB-PDIC模块中的所述UART/I2C接口电路被封装并且不与外部通信,并且
其中,所述USB-PD充电器用于执行根据权利要求1-7中任一项所述的方法。
17.一种USB-PD主控装置,包括根据权利要求15所述的USB-PD IC模块,其中,所述USB-PD主控装置用于执行根据权利要求8-14中任一项所述的方法。
18.一种系统,包括根据权利要求16所述的USB-PD充电器、根据权利要求17所述的USB-PD主控装置、以及终端设备。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010240827.5A CN111352645B (zh) | 2020-03-31 | 2020-03-31 | 用于usb-pd充电器的固件更新方法和装置 |
TW109114609A TWI765257B (zh) | 2020-03-31 | 2020-04-30 | 用於usb-pd充電器的韌體更新方法和裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010240827.5A CN111352645B (zh) | 2020-03-31 | 2020-03-31 | 用于usb-pd充电器的固件更新方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352645A true CN111352645A (zh) | 2020-06-30 |
CN111352645B CN111352645B (zh) | 2023-08-22 |
Family
ID=71197504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010240827.5A Active CN111352645B (zh) | 2020-03-31 | 2020-03-31 | 用于usb-pd充电器的固件更新方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111352645B (zh) |
TW (1) | TWI765257B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113328505A (zh) * | 2021-08-03 | 2021-08-31 | 深圳英集芯科技股份有限公司 | 充电需求适配方法、电子设备及相关产品 |
CN113326057A (zh) * | 2021-06-30 | 2021-08-31 | 安克创新科技股份有限公司 | 主控程序升级方法、装置、系统和电子设备 |
CN117667141A (zh) * | 2023-12-04 | 2024-03-08 | 珠海智融科技股份有限公司 | 充电协议软件系统和多方协同处理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116561A (zh) * | 2011-11-17 | 2013-05-22 | 凹凸电子(武汉)有限公司 | 数字信号收发装置和方法以及电动车系统 |
US9431831B1 (en) * | 2014-07-25 | 2016-08-30 | Google Inc. | Updating firmware for charging device |
US20160306616A1 (en) * | 2015-04-20 | 2016-10-20 | Microsoft Technology Licensing, Llc | Firmware update by usb cc |
CN106716389A (zh) * | 2014-08-05 | 2017-05-24 | 德州仪器公司 | 用于快速usb充电的方法、电子装置及充电器设备 |
CN110457055A (zh) * | 2019-07-29 | 2019-11-15 | 珠海市一微半导体有限公司 | 一种面向快充协议的固件升级控制方法、系统及控制终端 |
CN110489137A (zh) * | 2018-05-15 | 2019-11-22 | 恩智浦美国有限公司 | 用于更新无线充电器中的固件的系统和方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1540497A (zh) * | 2003-04-21 | 2004-10-27 | 矽成积体电路股份有限公司 | Usb装置韧体程式可更新的方法 |
CN101963910A (zh) * | 2010-09-21 | 2011-02-02 | 深圳市元征软件开发有限公司 | 基于通用usb总线的设备固件升级方法 |
US11101673B2 (en) * | 2018-03-13 | 2021-08-24 | Cypress Semiconductor Corporation | Programmable gate driver control in USB power delivery |
-
2020
- 2020-03-31 CN CN202010240827.5A patent/CN111352645B/zh active Active
- 2020-04-30 TW TW109114609A patent/TWI765257B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116561A (zh) * | 2011-11-17 | 2013-05-22 | 凹凸电子(武汉)有限公司 | 数字信号收发装置和方法以及电动车系统 |
US9431831B1 (en) * | 2014-07-25 | 2016-08-30 | Google Inc. | Updating firmware for charging device |
CN106716389A (zh) * | 2014-08-05 | 2017-05-24 | 德州仪器公司 | 用于快速usb充电的方法、电子装置及充电器设备 |
US20160306616A1 (en) * | 2015-04-20 | 2016-10-20 | Microsoft Technology Licensing, Llc | Firmware update by usb cc |
CN110489137A (zh) * | 2018-05-15 | 2019-11-22 | 恩智浦美国有限公司 | 用于更新无线充电器中的固件的系统和方法 |
CN110457055A (zh) * | 2019-07-29 | 2019-11-15 | 珠海市一微半导体有限公司 | 一种面向快充协议的固件升级控制方法、系统及控制终端 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113326057A (zh) * | 2021-06-30 | 2021-08-31 | 安克创新科技股份有限公司 | 主控程序升级方法、装置、系统和电子设备 |
CN113328505A (zh) * | 2021-08-03 | 2021-08-31 | 深圳英集芯科技股份有限公司 | 充电需求适配方法、电子设备及相关产品 |
CN113328505B (zh) * | 2021-08-03 | 2021-10-29 | 深圳英集芯科技股份有限公司 | 充电需求适配方法、电子设备及相关产品 |
CN117667141A (zh) * | 2023-12-04 | 2024-03-08 | 珠海智融科技股份有限公司 | 充电协议软件系统和多方协同处理方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202139021A (zh) | 2021-10-16 |
TWI765257B (zh) | 2022-05-21 |
CN111352645B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111352645B (zh) | 用于usb-pd充电器的固件更新方法和装置 | |
US8417864B2 (en) | Cascade-able serial bus device with clock and management and cascade methods using the same | |
US20070143530A1 (en) | Method and apparatus for multi-block updates with secure flash memory | |
CN109976767B (zh) | 软件烧录方法和装置 | |
US8601464B2 (en) | Memory online update system and method | |
US9846578B2 (en) | Electronic device and method for firmware updating thereof | |
US8904094B2 (en) | Memory system in which extended function can easily be set | |
US9858366B2 (en) | Simulator and simulating method for flash memory background | |
KR101976908B1 (ko) | 멀티-커넥터를 갖는 전자 디바이스 및 그 방법 | |
CN104333401A (zh) | 蓝牙数据发送方法、接收方法、装置及系统 | |
US9052836B2 (en) | Memory system in which extension function can easily be set | |
CN112181460B (zh) | 程序固件升级方法、装置、电子设备及存储介质 | |
US20180342302A1 (en) | Memory device and method for operating the same | |
US20080270816A1 (en) | Portable data storage apparatus and synchronization method for the same | |
US8930613B2 (en) | Memory system in which extended function can easily be set | |
TWI547952B (zh) | 控制裝置、受控裝置及操作方法 | |
CN111381838B (zh) | 数据写入方法、烧录系统、数据更新方法以及储存装置 | |
CN111142919B (zh) | 一种适用于多组mcu单元程序同时升级的方法 | |
KR100801884B1 (ko) | 플래시 메모리, 플래시 메모리의 제어 방법 및 직렬인터페이스 장치 | |
CN115599407B (zh) | 固件烧录方法、固件烧录系统及存储器存储装置 | |
CN113064621B (zh) | 一种智能设备安卓系统对密码键盘系统固件升级的方法 | |
TWI783514B (zh) | 訊號處理系統與訊號傳輸裝置的識別與配對方法 | |
CN118295686B (zh) | 一种处理器固件升级方法 | |
CN118151977B (zh) | 控制器芯片的固件升级方法及系统 | |
CN102739292A (zh) | 无线数据传输 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |