CN117055910A - 基于linux系统的USB设备固件烧录方法和装置 - Google Patents

基于linux系统的USB设备固件烧录方法和装置 Download PDF

Info

Publication number
CN117055910A
CN117055910A CN202311062531.9A CN202311062531A CN117055910A CN 117055910 A CN117055910 A CN 117055910A CN 202311062531 A CN202311062531 A CN 202311062531A CN 117055910 A CN117055910 A CN 117055910A
Authority
CN
China
Prior art keywords
usb
burning
firmware
linux system
vid
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.)
Pending
Application number
CN202311062531.9A
Other languages
English (en)
Inventor
李华赛
程曼
臧鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Yilian Information System Co Ltd
Original Assignee
Suzhou Yilian Information System Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Yilian Information System Co Ltd filed Critical Suzhou Yilian Information System Co Ltd
Priority to CN202311062531.9A priority Critical patent/CN117055910A/zh
Publication of CN117055910A publication Critical patent/CN117055910A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种基于linux系统的USB设备固件烧录方法、装置、计算机设备和存储介质,其中该方法包括:在linux系统开发板上安装libusb库;在进行USB固件烧录程序的开发时调用所述libusb库所提供的应用接口;通过USB控制器驱动访问USB设备,获取所有USB设备的PID和VID;当获取到的PID和VID与预期值一致时,按照固件烧录协议对USB设备进行烧录。本发明在libusb库基础上开发的USB固件烧录工具具有移植性好、支持所有USB协议等优点,节约了开发周期,通用性较强。

Description

基于linux系统的USB设备固件烧录方法和装置
技术领域
本发明涉及固件烧录技术领域,特别是涉及一种基于linux系统的USB设备固件烧录方法、装置、计算机设备和存储介质。
背景技术
芯片烧录是将特定的数据或者程序写入芯片的过程,以使芯片能够完成特定的功能。在工程技术中,往往会在linux开发板上进行USB设备烧录程序的开发。
目前,对于linux内核的大部分设备,如带USB接口的HID设备,linux本身已经自带了相关的驱动,只需操作设备文件便可以完成对设备大部分的操作。然而,对于另外一些设备,例如自己设计的硬件产品,这些驱动就需要驱动工程师开发出相关的驱动了,会导致在驱动基础上的烧录程序开发周期较长,且用户自己开发的USB驱动会受到linux内核版本的限制,烧录程序移植性差、不通用。
发明内容
基于此,有必要针对上述技术问题,提供一种基于linux系统的USB设备固件烧录方法、装置、计算机设备和存储介质。
一种基于linux系统的USB设备固件烧录方法,所述方法包括:
在linux系统开发板上安装libusb库;
在进行USB固件烧录程序的开发时调用所述libusb库所提供的应用接口;
通过USB控制器驱动访问USB设备,获取所有USB设备的PID和VID;
当获取到的PID和VID与预期值一致时,按照固件烧录协议对USB设备进行烧录。
在其中一个实施例中,所述在linux系统开发板上安装libusb库的步骤还包括:
linux系统开发板上电,插入待烧录固件的USB设备;
运行USB固件烧录程序遍历所述linux系统开发板上的USB设备,获取所有USB设备的PID和VID。
在其中一个实施例中,所述当获取到的PID和VID与预期值一致时,按照固件烧录协议对USB设备进行烧录的步骤还包括:
判断获取到的PID和VID与固件烧录程序内的预期值是否一致;
若获取到的PID和VID与固件烧录程序内的预期值一致,则获取USB设备句柄并填充到句柄队列中;
依次获取句柄队列中USB句柄,对USB句柄对应的USB设备按照固件烧录协议进行烧录。
在其中一个实施例中,所述判断获取到的PID和VID与固件烧录程序内的预期值是否一致的步骤之后还包括:
若获取到的PID和VID与固件烧录程序内的预期值不一致,则表示没有待烧录固件的USB设备。
一种基于linux系统的USB设备固件烧录装置,所述装置包括:
安装模块,所述安装模块用于在linux系统开发板上安装libusb库;
接口调用模块,所述接口调用模块用于在进行USB固件烧录程序的开发时调用所述libusb库所提供的应用接口;
获取模块,所述获取模块用于通过USB控制器驱动访问USB设备,获取所有USB设备的PID和VID;
烧录模块,所述烧录模块用于当获取到的PID和VID与预期值一致时,按照固件烧录协议对USB设备进行烧录。
在其中一个实施例中,所述安装模块还用于:
linux系统开发板上电,插入待烧录固件的USB设备;
运行USB固件烧录程序遍历所述linux系统开发板上的USB设备,获取所有USB设备的PID和VID。
在其中一个实施例中,所述装置还包括判断模块,所述判断模块用于:
判断获取到的PID和VID与固件烧录程序内的预期值是否一致;
若获取到的PID和VID与固件烧录程序内的预期值一致,则获取USB设备句柄并填充到句柄队列中;
依次获取句柄队列中USB句柄,对USB句柄对应的USB设备按照固件烧录协议进行烧录。
在其中一个实施例中,所述判断模块还用于:
若获取到的PID和VID与固件烧录程序内的预期值不一致,则表示没有待烧录固件的USB设备。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
上述基于linux系统的USB设备固件烧录方法、装置、计算机设备和存储介质,在linux系统上先安装libusb库,在libusb库的基础上开发USB固件烧录工具。由于libusb库提供了USB设备的通用访问方法,USB固件烧录工具可以通过它方便地访问USB设备,无需编写USB设备驱动程序。因此,本方案在libusb库基础上开发的USB固件烧录工具具有移植性好、支持所有USB协议等优点,节约了开发周期,通用性较强。
附图说明
图1为linux系统USB主机驱动框架的示意图;
图2为常用的linux系统用户开发的USB驱动框架的示意图;
图3为一个实施例中基于linux系统的USB设备固件烧录方法的流程示意图;
图4为基于libusb库的linux系统下开发USB驱动框架的示意图;
图5为另一个实施例中基于linux系统的USB设备固件烧录方法的流程示意图;
图6为一个实施例中基于linux系统的USB设备固件烧录装置的结构框图;
图7为另一个实施例中基于linux系统的USB设备固件烧录装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为linux系统USB主机驱动框架的示意图,对于linux内核的大部分设备,如带USB接口的HID设备,linux本身已经自带了相关的驱动,只需操作设备文件便可以完成对设备大部分的操作。但对于另外一些设备,如自己设计的硬件产品,linux内核中没有对应的USB设备类驱动,这就需要驱动工程师开发出相关的驱动了。如图2所示的常用的linux系统用户开发的USB驱动框架的示意图,用户需要在内核中开发出支持自己硬件产品的USB设备类驱动,开发量大、开发周期较长,且用户自己开发的USB驱动受到linux内核版本的限制,会导致烧录工具移植性差、不通用。
基于此,本发明提出一种基于linux系统的USB设备固件烧录方法,旨在可以提高烧录工具的通用性和可移植性。
在一个实施例中,如图3所示,提供了一种基于linux系统的USB设备固件烧录方法,该方法包括:
步骤302,在linux系统开发板上安装libusb库;
步骤304,在进行USB固件烧录程序的开发时调用所述libusb库所提供的应用接口;
步骤306,通过USB控制器驱动访问USB设备,获取所有USB设备的PID和VID;
步骤308,当获取到的PID和VID与预期值一致时,按照固件烧录协议对USB设备进行烧录。
在本实施例中,提出了一种提高USB设备固件烧录效率的方法,该方法在linux系统上先安装libusb库,在libusb库的基础上开发USB固件烧录工具。libusb库提供了USB设备的通用访问方法,USB固件烧录工具可以通过它方便地访问USB设备,无需编写USB设备驱动程序。
具体地,可参考图4所示的基于libusb库的linux系统下开发USB驱动框架的示意图。linux系统中安装libusb库后,用户只需在libusb库基础上进行USB固件烧录工具的开发。由于libusb库具有可移植性、用户模式访问、支持所有USB协议等优点,在其基础上开发的USB固件烧录工具具有较强的通用性。
在本实施例中,在linux系统上先安装libusb库,在libusb库的基础上开发USB固件烧录工具。由于libusb库提供了USB设备的通用访问方法,USB固件烧录工具可以通过它方便地访问USB设备,无需编写USB设备驱动程序。因此,本方案在libusb库基础上开发的USB固件烧录工具具有移植性好、支持所有USB协议等优点,节约了开发周期,通用性较强。
在一个实施例中,提供了一种基于linux系统的USB设备固件烧录方法,该方法包括:
linux系统开发板上电,插入待烧录固件的USB设备;
运行USB固件烧录程序遍历所述linux系统开发板上的USB设备,获取所有USB设备的PID和VID;
判断获取到的PID和VID与固件烧录程序内的预期值是否一致;
若获取到的PID和VID与固件烧录程序内的预期值不一致,则表示没有待烧录固件的USB设备;
若获取到的PID和VID与固件烧录程序内的预期值一致,则获取USB设备句柄并填充到句柄队列中;
依次获取句柄队列中USB句柄,对USB句柄对应的USB设备按照固件烧录协议进行烧录。
具体地,可参考图5所示的基于linux系统的USB设备固件烧录方法的示意图。在本实施例中,固件烧录工具会获取USB设备的PID和VID,当PID和VID与预期值一致时,按照固件烧录协议对USB设备进行固件烧录。
首先,linux系统开发板上电,插入待烧录固件的USB设备;运行USB固件烧录程序遍历所述linux系统开发板上的USB设备,获取所有USB设备的PID和VID。
接着,判断获取到的PID和VID与固件烧录程序内的预期值是否一致;若获取到的PID和VID与固件烧录程序内的预期值不一致,则表示没有待烧录固件的USB设备。
若获取到的PID和VID与固件烧录程序内的预期值一致,则获取USB设备句柄并填充到句柄队列中;依次获取句柄队列中USB句柄,对USB句柄对应的USB设备按照固件烧录协议进行烧录。
在本实施例中,固件烧录工具在运行过程调用libusb库提供的应用接口获取到符合预期的USB设备句柄,按照固件烧录协议对该句柄对应的USB设备进行烧录。
应该理解的是,虽然图1-图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-图5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种基于linux系统的USB设备固件烧录装置600,该装置包括:
安装模块601,所述安装模块用于在linux系统开发板上安装libusb库;
接口调用模块602,所述接口调用模块用于在进行USB固件烧录程序的开发时调用所述libusb库所提供的应用接口;
获取模块603,所述获取模块用于通过USB控制器驱动访问USB设备,获取所有USB设备的PID和VID;
烧录模块604,所述烧录模块用于当获取到的PID和VID与预期值一致时,按照固件烧录协议对USB设备进行烧录。
在一个实施例中,安装模块601还用于:
linux系统开发板上电,插入待烧录固件的USB设备;
运行USB固件烧录程序遍历所述linux系统开发板上的USB设备,获取所有USB设备的PID和VID。
在一个实施例中,如图7所示,提供了一种基于linux系统的USB设备固件烧录装置600,该装置还包括判断模块605,所述判断模块用于:
判断获取到的PID和VID与固件烧录程序内的预期值是否一致;
若获取到的PID和VID与固件烧录程序内的预期值一致,则获取USB设备句柄并填充到句柄队列中;
依次获取句柄队列中USB句柄,对USB句柄对应的USB设备按照固件烧录协议进行烧录。
在一个实施例中,判断模块605还用于:
若获取到的PID和VID与固件烧录程序内的预期值不一致,则表示没有待烧录固件的USB设备。
关于基于linux系统的USB设备固件烧录装置的具体限定可以参见上文中对于基于linux系统的USB设备固件烧录方法的限定,在此不再赘述。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图8所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于linux系统的USB设备固件烧录方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一种非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种基于linux系统的USB设备固件烧录方法,所述方法包括:
在linux系统开发板上安装libusb库;
在进行USB固件烧录程序的开发时调用所述libusb库所提供的应用接口;
通过USB控制器驱动访问USB设备,获取所有USB设备的PID和VID;
当获取到的PID和VID与预期值一致时,按照固件烧录协议对USB设备进行烧录。
2.根据权利要求1所述的基于linux系统的USB设备固件烧录方法,其特征在于,所述在linux系统开发板上安装libusb库的步骤还包括:
linux系统开发板上电,插入待烧录固件的USB设备;
运行USB固件烧录程序遍历所述linux系统开发板上的USB设备,获取所有USB设备的PID和VID。
3.根据权利要求2所述的基于linux系统的USB设备固件烧录方法,其特征在于,所述当获取到的PID和VID与预期值一致时,按照固件烧录协议对USB设备进行烧录的步骤还包括:
判断获取到的PID和VID与固件烧录程序内的预期值是否一致;
若获取到的PID和VID与固件烧录程序内的预期值一致,则获取USB设备句柄并填充到句柄队列中;
依次获取句柄队列中USB句柄,对USB句柄对应的USB设备按照固件烧录协议进行烧录。
4.根据权利要求3所述的基于linux系统的USB设备固件烧录方法,其特征在于,所述判断获取到的PID和VID与固件烧录程序内的预期值是否一致的步骤之后还包括:
若获取到的PID和VID与固件烧录程序内的预期值不一致,则表示没有待烧录固件的USB设备。
5.一种基于linux系统的USB设备固件烧录装置,其特征在于,所述装置包括:
安装模块,所述安装模块用于在linux系统开发板上安装libusb库;
接口调用模块,所述接口调用模块用于在进行USB固件烧录程序的开发时调用所述libusb库所提供的应用接口;
获取模块,所述获取模块用于通过USB控制器驱动访问USB设备,获取所有USB设备的PID和VID;
烧录模块,所述烧录模块用于当获取到的PID和VID与预期值一致时,按照固件烧录协议对USB设备进行烧录。
6.根据权利要求5所述的基于linux系统的USB设备固件烧录装置,其特征在于,所述安装模块还用于:
linux系统开发板上电,插入待烧录固件的USB设备;
运行USB固件烧录程序遍历所述linux系统开发板上的USB设备,获取所有USB设备的PID和VID。
7.根据权利要求6所述的基于linux系统的USB设备固件烧录装置,其特征在于,所述装置还包括判断模块,所述判断模块用于:
判断获取到的PID和VID与固件烧录程序内的预期值是否一致;
若获取到的PID和VID与固件烧录程序内的预期值一致,则获取USB设备句柄并填充到句柄队列中;
依次获取句柄队列中USB句柄,对USB句柄对应的USB设备按照固件烧录协议进行烧录。
8.根据权利要求7所述的基于linux系统的USB设备固件烧录装置,其特征在于,所述判断模块还用于:
若获取到的PID和VID与固件烧录程序内的预期值不一致,则表示没有待烧录固件的USB设备。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
CN202311062531.9A 2023-08-22 2023-08-22 基于linux系统的USB设备固件烧录方法和装置 Pending CN117055910A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311062531.9A CN117055910A (zh) 2023-08-22 2023-08-22 基于linux系统的USB设备固件烧录方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311062531.9A CN117055910A (zh) 2023-08-22 2023-08-22 基于linux系统的USB设备固件烧录方法和装置

Publications (1)

Publication Number Publication Date
CN117055910A true CN117055910A (zh) 2023-11-14

Family

ID=88664227

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311062531.9A Pending CN117055910A (zh) 2023-08-22 2023-08-22 基于linux系统的USB设备固件烧录方法和装置

Country Status (1)

Country Link
CN (1) CN117055910A (zh)

Similar Documents

Publication Publication Date Title
JP4960364B2 (ja) ハードウェア支援されたデバイス設定検出
US8730490B2 (en) Printer driver, information processing apparatus, and computer program product
CN107678948B (zh) 测试用例生成方法、终端及存储介质
CN110109628B (zh) 分布式存储系统的数据重建方法、装置、设备及存储介质
US20150154029A1 (en) Electronic apparatus and operational method thereof
JP2014157521A5 (zh)
CN117055910A (zh) 基于linux系统的USB设备固件烧录方法和装置
CN107798244B (zh) 一种检测远程代码执行漏洞的方法及装置
CN110134546B (zh) 批量重启windows系统方法、电子装置及存储介质
CN109445698B (zh) 查询多片flash状态的方法、装置及计算机可读存储介质
CN116312730A (zh) 基于mt6891平台的ufs存储设备单体测试驱动方法和装置
CN110673930B (zh) 虚拟机迁移方法、虚拟化设备、存储介质及装置
CN114625584A (zh) 固态硬盘数据传输速率动态转换的测试验证方法和装置
CN107704279B (zh) 一种数据加载方法以及装置
CN116048600A (zh) 小程序功能开发方法、装置、计算机设备和存储介质
CN114253618B (zh) 基于不同厂商的bios修改方法、装置、计算机设备及存储介质
JP6369338B2 (ja) 情報処理装置
CN112579106B (zh) 基于联想驱动库的微软驱动布署方法及装置
CN111625184A (zh) 闪存数据烧录方法及系统
US20100205598A1 (en) Method for installing operating system in computer
CN113672526B (zh) 固态硬盘掉电保护触发次数的获取方法、装置及计算机设备
CN113961404A (zh) 存储器的rdt方法、装置、终端设备以及存储介质
TWI511148B (zh) 電腦系統及控制方法
JP2007219893A (ja) ファームウェア評価システムおよびファームウェア評価方法
CN111309560A (zh) 系统宕机时ssd信息的快速收集方法和装置

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