CN105094877A - 一种固件升级的方法和主机端装置及系统 - Google Patents
一种固件升级的方法和主机端装置及系统 Download PDFInfo
- Publication number
- CN105094877A CN105094877A CN201410216498.5A CN201410216498A CN105094877A CN 105094877 A CN105094877 A CN 105094877A CN 201410216498 A CN201410216498 A CN 201410216498A CN 105094877 A CN105094877 A CN 105094877A
- Authority
- CN
- China
- Prior art keywords
- firmware
- client
- usb
- firmware upgrade
- application program
- 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
Landscapes
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种固件升级的方法和主机端装置及系统,该方法包括:主机端通过USB主机控制器驱动操作USB主机控制器检测本地USB接口是否有待升级的客户端插入;若检测到有待升级的客户端插入,主机端通过固件升级应用程序将初始化程序和固件升级程序下载到客户端,初始化程序用于初始化客户端内存,固件升级程序被下载到初始化后的内存中,用于解析并执行从主机端接收的各种命令;主机端通过固件升级应用程序向客户端发送固件烧写命令及固件数据,由客户端收到固件烧写命令及固件数据后,通过客户端上的固件升级程序根据固件烧写命令将固件数据写入存储介质。本发明可以有效地减低生产成本,并大大提高同一时间的量产数目,提高了生产效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种固件升级的方法和主机端装置及系统。
背景技术
目前的平板电脑量产后进行升级的过程中,通常会采用如下方式进行固件升级:
1)利用一台WindowsPC对多台平板电脑进行固件烧写升级
采用WindowsPC对平板电脑进行升级,通过向平板电脑发送命令和传送固件升级程序,可以与平板电脑交互获取升级的进度和是否成功信息。
但此方式需要装载有Windows系统的PC来参与,因此在工厂的产线上面对成千上万台生产出来的平板电脑的时候,装载有Windows系统的PC数量的多少会限制量产的速度,且配置多台PC的成本也较高。
2)利用卡进行固件烧写升级
将存储卡插入平板电脑,通过读取和运行存储卡内的固件升级程序进行固件升级,此方式的弊端在于不能实时反映量产的进度和是否成功的信息,量产如果失败无法方便地反馈给生产人员失败的原因等信息。
3)利用网络下载固件烧写升级
此方式要求被升级的平板电脑必须已经有系统的运行,否则无法连接网络,这对于刚刚生产出来还不带系统固件的平板来说无法做到。且这种方式同样存在升级的过程中无法方便地在另一方的平台工具上显示量产进度信息等问题。
发明内容
本发明提供一种固件升级的方法和主机端装置及系统,可以提高固件升级的效率。
本发明提供一种固件升级的方法,包括:
主机端通过USB主机控制器驱动操作USB主机控制器检测本地USB接口是否有待升级的客户端插入;
若检测到有待升级的客户端插入,主机端通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端,所述初始化程序用于初始化客户端内存,所述固件升级程序被下载到初始化后的内存中,用于解析并执行从所述主机端接收的各种命令;
主机端通过固件升级应用程序向客户端发送固件烧写命令及固件数据,由所述客户端接收到固件烧写命令及固件数据后,通过所述客户端上的固件升级程序根据固件烧写命令将固件数据写入存储介质。
优选地,所述主机端通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端之后,通过固件升级应用程序向客户端发送固件烧写命令及固件数据之前,该方法还包括:
主机端通过固件升级应用程序向客户端发送检测扫描命令,由所述客户端接收到所述检测扫描命令后,通过所述客户端上的固件升级程序根据检测扫描命令扫描获得硬件信息并反馈给主机端。
优选地,主机端检测到有待升级的客户端插入,具体包括:
若USB主机控制器检测到有新设备插入时,通过USB主机控制器驱动通知USB内核,由USB内核通过USB主机控制器驱动操作USB主机控制器获取新设备的设备信息,并与USB量产设备驱动程序所存储的设备信息相匹配,若匹配成功,则确定本地USB接口有待升级的客户端插入;
所述USB内核通知USB量产设备驱动程序有待升级的客户端插入,USB量产设备驱动程序通知Linux用户层,由Linux用户层通知Java层的固件升级应用程序。
优选地,主机端通过固件升级应用程序将初始化程序和固件升级程序下载到客户端上,具体包括:
Java层的固件升级应用程序通过JNI接口向Linux用户层的固件升级应用程序发送下载命令、初始化程序和固件升级程序;
Linux用户层的固件升级应用程序向USB量产设备驱动程序发送下载命令、初始化程序和固件升级程序,所述USB量产设备驱动程序对下载命令进行解析后,通知USB内核通过USB主机控制器驱动操作USB主机控制器将初始化程序和固件升级程序发送到待升级的客户端。
优选地,主机端通过固件升级应用程序向客户端发送固件烧写命令及固件数据,具体包括:
Java层的固件升级应用程序通过JNI接口向Linux用户层的固件升级应用程序发送固件烧写命令及固件数据;
Linux用户层的固件升级应用程序向USB量产设备驱动程序发送固件烧写命令及固件数据,所述USB量产设备驱动程序对固件烧写命令进行解析后,通知USB内核通过USB主机控制器驱动操作USB主机控制器将固件烧写命令及固件数据发送到待升级的客户端。
优选地,主机端通过固件升级应用程序向客户端发送固件烧写命令及固件数据之后,还包括:
所述主机端通过固件升级应用程序接收所述客户端在烧写完成后返回的是否烧写成功的反馈信息,并将所述反馈信息进行显示。
本发明提供一种固件升级的主机端装置,包括:
检测单元,用于通过USB主机控制器驱动操作USB主机控制器检测本地USB接口是否有待升级的客户端插入;
下载单元,用于若检测到有待升级的客户端插入,通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端,所述初始化程序用于初始化客户端内存,所述固件升级程序被下载到初始化后的内存中,用于解析并执行从所述主机端接收的各种命令;
升级单元,用于通过固件升级应用程序向客户端发送固件烧写命令及固件数据,由所述客户端接收到固件烧写命令及固件数据后,通过所述客户端上的固件升级程序根据固件烧写命令将固件数据写入存储介质。
优选地,该主机端装置还包括:
命令单元,用于在下载单元通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端之后,在升级单元通过固件升级应用程序向客户端发送固件烧写命令及固件数据之前,通过固件升级应用程序向客户端发送检测扫描命令,由所述客户端接收到所述检测扫描命令后,通过所述客户端上的固件升级程序根据检测扫描命令扫描获得硬件信息并反馈给主机端。
优选地,检测单元检测到有待升级的客户端插入,具体包括:
若由USB主机控制器检测到有新设备插入时,通过USB主机控制器驱动通知USB内核,由USB内核通过USB主机控制器驱动操作USB主机控制器获取新设备的设备信息,并与USB量产设备驱动程序所存储的设备信息相匹配,若匹配成功,则确定本地USB接口有待升级的客户端插入;
由所述USB内核通知USB量产设备驱动程序有待升级的客户端插入,USB量产设备驱动程序通知Linux用户层,由Linux用户层通知Java层的固件升级应用程序。
优选地,下载单元通过固件升级应用程序将初始化程序和固件升级程序下载到客户端上,具体包括:
由Java层的固件升级应用程序通过JNI接口向Linux用户层的固件升级应用程序发送下载命令、初始化程序和固件升级程序;
由Linux用户层的固件升级应用程序向USB量产设备驱动程序发送下载命令、初始化程序和固件升级程序,所述USB量产设备驱动程序对下载命令进行解析后,通知USB内核通过USB主机控制器驱动操作USB主机控制器将初始化程序和固件升级程序发送到待升级的客户端。
优选地,升级单元通过固件升级应用程序向客户端发送固件烧写命令及固件数据,具体包括:
由Java层的固件升级应用程序通过JNI接口向Linux用户层的固件升级应用程序发送固件烧写命令及固件数据;
由Linux用户层的固件升级应用程序向USB量产设备驱动程序发送固件烧写命令及固件数据,所述USB量产设备驱动程序对固件烧写命令进行解析后,通知USB内核通过USB主机控制器驱动操作USB主机控制器将固件烧写命令及固件数据发送到待升级的客户端。
本发明还提供一种固件升级的系统,包括:
主机端,通过USB数据线连接客户端,用于通过USB主机控制器驱动操作USB主机控制器检测本地USB接口是否有待升级的客户端插入;若检测到有待升级的客户端插入,主机端通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端,所述初始化程序用于初始化客户端内存,所述固件升级程序被下载到初始化后的内存中,用于解析并执行从所述主机端接收的各种命令;主机端通过固件升级应用程序向客户端发送固件烧写命令及固件数据;
客户端,用于接收所述主机端发送的固件升级应用程序将初始化程序和固件升级程序,通过所述初始化程序初始化客户端内存,接收所述主机端发送的固件烧写命令及固件数据,通过所述客户端上的固件升级程序根据固件烧写命令将固件数据写入存储介质。
利用本发明提供的固件升级的方法和主机端装置及系统,具有以下有益效果:在Android系统上的主机端可对客户端如平板电脑进行量产升级,可以不依赖于PC或卡等生产设备,只要有安装了Android系统并具有USB主机(USBHost)功能的设备,都可以用来进行量产升级,这样如果已经生产了N台Android平板电脑,就可以充分利用这N台平板电脑来量产下一批平板电脑,可以有效地减低生产成本,并大大提高同一时间的量产数目,提高了生产效率。
附图说明
图1为主机端平板电脑A和客户端平板电脑B的连接示意图;
图2为本发明提供的进行固件升级的方法流程图;
图3为从平板电脑A下载程序到平板电脑B实现升级的示意图;
图4为实现平板电脑A上固件升级应用程序的量产升级工具架构图;
图5为Bulk传输的命令封装和收发处理示意图;
图6为本发明实施例提供的固件升级的主机端装置结构图。
具体实施方式
下面结合附图和实施例对本发明提供的固件升级的方法和主机端装置及系统进行更详细地说明。
因为目前的平板电脑有相当多是运行Android系统,因此如果能够在Android系统下实现对平板电脑进行固件升级,则可以无需Windows系统的PC参与,直接利用主机端平板电脑A对客户端平板电脑B进行量产升级。
如图1所示,运行Android系统的平板电脑A做USBHost,平板电脑B作为USB设备客户端等待烧写固件。
基于以上连接,如图2所示,本发明实施例提供的装载有Android系统的主机端对客户端进行固件升级的方法,包括以下步骤:
步骤201,主机端通过USB主机控制器驱动操作USB主机控制器检测本地USB接口是否有待升级的客户端插入;
主机端平板电脑A连接USBOTG线,作为USBHost,包括有一个USB主机控制器。在Linux内核中,也应该具有此对应的USB主机控制器的驱动,并向内核的USBCore注册该驱动,这一部分是Linux内核的标准实现方式。准备好用于升级的固件文件,这些固件文件包括需要写入到平板电脑上的固件数据,并在主机端平板电脑A上运行固件升级应用程序(USB_Update_Firmware应用程序),通过USB主机控制器驱动操作USB主机控制器检测是否有待升级的客户端平板电脑B插入。
对于客户端平板电脑B,连接USB线,使客户端平板电脑B上电启动后进入USB待升级模式。
步骤202,若检测到有待升级的客户端插入,主机端通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端,所述初始化程序用于初始化客户端内存,所述固件升级程序被下载到初始化后的内存中,用于解析并执行从所述主机端接收的各种命令;
步骤203,主机端通过固件升级应用程序向客户端发送固件烧写命令及固件数据,由所述客户端接收到固件烧写命令及固件数据后,通过所述客户端上的固件升级程序根据固件烧写命令将固件数据写入存储介质。
本发明实施例提供的方法,通过在主机端上运行固件升级应用程序,实现待升级客户端如平板电脑的检测,并将相应的升级程序和升级所需的文件下载到平板电脑上,由于主机端可以向平板电脑发送相应的命令,因此可以控制平板电脑进行固件升级,还可以控制待升级的平板电脑反馈各种信息。
优选地,主机端通过固件升级应用程序向客户端发送固件烧写命令及固件数据之后,还包括:
所述主机端通过固件升级应用程序接收所述客户端在烧写完成后返回的是否烧写成功的反馈信息,并将所述反馈信息进行显示。
本发明实施例中主机端平板电脑A运行固件升级应用程序时,检测到客户端平板电脑B连接上,开始把可执行升级动作的程序下载到客户端B上运行,其中,如图3所示,可执行升级动作的程序包括update.bin和new_update.bin,update.bin用于初始化待升级平板电脑内存,new_update.bin主要用于解析并执行从主机端平板电脑A接收的各种命令,从而执行升级动作,还可以反馈各种信息。
具体地,可以通过如下过程实现将程序从主机端平板电脑A下载到客户端平板电脑B:
步骤1,客户端平板电脑B上电后执行内部ROM中的程序,进入等待接收从主机端平板电脑A接收数据的状态;
步骤2,主机端平板电脑A通过通过USB主机控制器驱动操作USB主机控制器检测检测到客户端平板电脑B,将update.bin下载到客户端平板电脑B的内存,即内部RAM中;
步骤3,主机端平板电脑A通过固件升级应用程序向客户端平板电脑B发送命令,让客户端平板电脑B跳转到update.bin执行该程序;
步骤4,客户端平板电脑B接收到命令后跳转到RAM开始执行update.bin,完成DDR内存的初始化,从而为后面的固件程序烧写作为准备;
步骤5,主机端平板电脑A通过固件升级应用程序将new_update.bin下载到客户端平板电脑B完成初始化的DDR内存中;
步骤6,主机端平板电脑A通过固件升级应用程序向客户端平板电脑B发送命令,让客户端平板电脑B跳转到new_update.bin执行该程序;
步骤7,客户端平板电脑B接收到命令后,转到DDR执行new_update.bin进行初始化;
步骤8,客户端平板电脑B执行该程序的过程中,主机端平板电脑A通过固件升级应用程序向客户端平板电脑B发送固件烧写命令;
步骤9,客户端平板电脑B执行该程序的过程中,主机端平板电脑A通过固件升级应用程序向客户端平板电脑B发送固件数据;
步骤10,客户端平板电脑B通过执行new_update.bin程序实现对固件烧写命令的解析,并将固件数据写入相应的存储介质;
具体实施时,可能多次通过多次发送固件烧写命令和固件数据完成固件程序的烧写。
步骤11,烧写完成后,客户端平板电脑B向主机端平板电脑A反馈烧写完成信息。
进一步优选地,主机端通过固件升级应用程序将初始化程序和固件升级程序下载到客户端之后,通过固件升级应用程序向客户端发送固件烧写命令及固件数据之前,还包括:主机端平板电脑A还通过固件升级应用程序向平板电脑发送检测扫描命令,由客户端平板电脑上B的固件升级程序根据检测扫描命令扫描获得硬件信息并反馈给主机端。如主机端平板电脑A可以控制客户端平板电脑B检测扫描内存,存储介质等硬件信息,并实时反馈到主机端平板电脑A的升级应用程序的界面上。硬件扫描正确后,主机端平板电脑A向客户端平板电脑B向客户端发送固件烧写命令及固件数据上,并最终写入到客户端平板电脑B的存储介质。
当然,主机端平板电脑A还可以向客户端平板电脑B发送其它命令,由平板电脑B解析并执行相应的命令。
由于主机端平板电脑A和客户端平板电脑B可以进行交互,因此在烧写完成后,主机端平板电脑A在升级应用程序的界面上显示成功信息,并视情况控制客户端平板电脑B重新启动,看固件是否能够在客户端平板电脑B上成功运行;如果烧写失败,主机端平板电脑A在升级应用程序的界面上也显示失败信息,并提示生产人员是在哪个步骤失败,具体的原因等信息。
本发明实施例中主机端平板电脑A具有做USBHost的功能,在硬件上需要有一个USB主机控制器。在软件上需要在AndroidJava层、Linux用户层、Linux内核层开发相应的代码,AndroidJava层主要实现和用户UI界面的交互,Linux用户层实现传输协议的封装和解析,向下调用Linux内核层传输相应的命令,向上向AndroidJava层反馈信息,Linux内核层向下通过主机控制器与客户端平板电脑B通信,向上向Linux用户层反馈信息。
如图4所示,在平板电脑A上支持运行固件升级应用程序需要如下的架构:
1)AndroidJava层
AndroidJava层的USB_Update_Firmware应用程序,是Android系统上的普通应用程序,可以和本地库等一起打包成APK文件在Android平台上进行安装。
该应用程序负责量产过程中和用户进行UI界面的交互,处理用户的设置信息,以及把量产过程中的进度信息,硬件扫描检测信息等实时反馈到界面上。
优选地,AndroidJava层还包括USB_UpdateServer,USB_UpdateServer作为一个Server进程存在,并向Android系统注册USB_Update服务。Client端(如USB_Update_Firmware.apk)可向Android系统获取此服务,并调用相应接口来完成固件烧写的工作。
USB_Update_Firmware应用程序向下最终会调用已注册的USB_Update服务,以及USB_UpdateFirmware.so本地库来实现用户的量产需求。
USB_UpdateServer会对固件的量产工作进行任务分解,并通过调用USB_Update_JNI.so中所提供的接口最终实现固件的烧写工作。
USB_UpdateServer不是必须的,如果需要考虑简化模块层次,也可以考虑把工作全部下放到USB_UpdateFirmware.so的代码中去实现,上层应用只调用JNI接口就好了。
2)Linux用户层
USB_Update_JNI.so实现AndroidJava层的USB_Update_Firmware和Linux用户层的接口功能。
USB_UpdateFirmware.so是Android下的一个本地库,这个库向下主要用来封装调用“USB量产设备驱动”的操作,作部分量产传输协议的封装和解析工作,同时可读写文件,完成量产过程中上层应用所提交的各项任务。它的函数接口最终在USB_Update_JNI.so中以JNI接口的方式提供给到Java层调用使用。
3)Linux内核层
在Linux内核中,需要另外实现一个USB协议层驱动,这是开源的Linux内核代码中所没有的,需要另外开发。本实施例把此驱动暂命名为“USB量产设备驱动”,该驱动也向USBCore注册,等待与需要量产的USB设备匹配。该驱动主要是用来实现量产升级过程中所需要的协议命令的封装和解析,向下它会调用USB主机控制器驱动接口来实现数据收发,向上它会向Linux内核注册一个字符设备,提供ioctl之类的系统调用接口,给到Linux用户层调用。
通过USB量产设备驱动可以识别出哪些所连接的设备是否为待升级的平板电脑,具体可以在USB量产设备驱动程序中存储待升级平板电脑的设备信息等。
其中,Linux内核层作为平板电脑主机与待升级平板电脑通信的桥梁,USBCore作为内核层的控制中心。
在Linux内核中,具有USB主机控制器的驱动,并向内核的USBCore注册该驱动。
4)硬件层
实现检测是否有新设备插入,并与待升级平板电脑间进行数据收发。
基于上述架构,在主机端通过固件升级应用程序检测是否有待升级的平板电脑插入,具体采用如下方式实现:
通过USB主机控制器驱动操作USB主机控制器检测是否有待升级的平板电脑插入;
检测到有待升级的平板电脑插入,具体采用如下方式实现:
若USB主机控制器检测到有新设备插入时,首先会由USB主机控制器检测到并触发相应中断,通知到内核的USB驱动层,通过USB主机控制器驱动通知USB内核,由USB内核通过USB主机控制器驱动操作USB主机控制器获取新设备的设备信息,此时USBCore会主导完成USB设备(待升级平板电脑)的枚举工作,获取USB设备的设备类型,VID(VendorID)和PID(ProductID)等信息。其中,VID是指待升级平板电脑芯片的厂商号,PID是指待升级平板电脑的产品号。
本实施例把待升级的USB设备的设备类型定义为0xFF(厂商自定义类),VID和PID也固定为平板主控芯片出品时定义的VID和PID。当插入到Android平板USB口上的USB设备的设备类型刚好为0xFF,且PID和VID也都符合量产设备的要求时,USBCore就会把该设备和“USB量产设备驱动”程序中存储的设备信息对应匹配。
若匹配成功,则确定有待升级的平板电脑插入;USB内核通知USB量产设备驱动程序有待升级的平板电脑插入,“USB量产设备驱动”开始初始化,并开启一个内核线程来处理上下层的发送请求和协议处理工作(这部分工作流程和U盘的MassStorage驱动很类似,只不过上层协议不一样)。USB量产设备驱动程序通过发送消息通知Linux用户层,由Linux用户层最终通知Java层的固件升级应用程序,从而开始执行固件烧写流程。
优选地,本发明实施例通过固件升级应用程序将初始化程序和固件升级程序下载到客户端上,具体采用如下方式:
Java层的固件升级应用程序通过JNI接口向Linux用户层的固件升级应用程序发送下载命令、初始化程序和固件升级程序;
Linux用户层的固件升级应用程序向USB量产设备驱动程序发送下载命令、初始化程序和固件升级程序,所述USB量产设备驱动程序对下载命令进行解析后,通知USB内核通过USB主机控制器驱动操作USB主机控制器将初始化程序和固件升级程序发送到待升级的客户端。
优选地,本发明实施例通过固件升级应用程序向客户端发送固件烧写命令及固件数据,具体采用如下方式:
Java层的固件升级应用程序通过JNI接口向Linux用户层的固件升级应用程序发送固件烧写命令及固件数据;
Linux用户层的固件升级应用程序向USB量产设备驱动程序发送固件烧写命令及固件数据,所述USB量产设备驱动程序对固件烧写命令进行解析后,通知USB内核通过USB主机控制器驱动操作USB主机控制器将固件烧写命令及固件数据发送到待升级的客户端。
在如上量产的过程中,需要使用USBBulk传输进行命令和数据的传输,需要制定一系列协议命令来实现USBHost和Device端的通讯,告知Device所需要执行的动作,例如如下命令:
读写数据到Device上指定ram地址的命令
读写存储介质指定物理块地址的命令
读写存储介质指定逻辑块地址的命令
写入完成命令
查询设备状态的命令
…………
如图5所示,传输采用和MassStorageClassBulk-OnlyTransport类似的方式,先发送CBW(CommandBlockWrapper)封装的命令,接着是数据阶段,再后是CSW(CommandStatusWrapper)反馈命令。本发明实施例如上Bulk传输的命令封装和收发处理主要交由“USB量产设备驱动”来完成。
本发明实施例设计了一种新的在Android系统上可对平板电脑进行量产升级的工具,有了该工具,就可以不依赖于PC或卡等生产设备,只要有安装了Android系统并具有USBHost功能的设备,都可以用来进行量产升级。这样理论上如果已经生产了N台Android平板电脑,就可以充分利用这N台平板电脑来量产下一批平板电脑,可以有效地减低生产成本,并大大提高同一时间的量产数目,提高生产效率。
基于同一发明构思,本发明实施例中还提供了一种固件升级的主机端装置,由于该主机端装置解决问题的原理与一种固件升级的方法相似,因此该主机端装置的实施可以参见方法的实施,重复之处不再赘述。
一种固件升级的主机端装置,如图6所示,包括:
检测单元601,用于通过USB主机控制器驱动操作USB主机控制器检测本地USB接口是否有待升级的客户端插入;
下载单元602,用于若检测到有待升级的客户端插入,通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端,所述初始化程序用于初始化客户端内存,所述固件升级程序被下载到初始化后的内存中,用于解析并执行从所述主机端接收的各种命令;
升级单元603,用于通过固件升级应用程序向客户端发送固件烧写命令及固件数据,由所述客户端接收到固件烧写命令及固件数据后,通过所述客户端上的固件升级程序根据固件烧写命令将固件数据写入存储介质。
优选地,该主机端装置还包括:
命令单元,用于在下载单元通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端之后,在升级单元通过固件升级应用程序向客户端发送固件烧写命令及固件数据之前,通过固件升级应用程序向客户端发送检测扫描命令,由所述客户端接收到所述检测扫描命令后,通过所述客户端上的固件升级程序根据检测扫描命令扫描获得硬件信息并反馈给主机端。
优选地,检测单元检测到有待升级的客户端插入,具体包括:
若由USB主机控制器检测到有新设备插入时,通过USB主机控制器驱动通知USB内核,由USB内核通过USB主机控制器驱动操作USB主机控制器获取新设备的设备信息,并与USB量产设备驱动程序所存储的设备信息相匹配,若匹配成功,则确定本地USB接口有待升级的客户端插入;
由所述USB内核通知USB量产设备驱动程序有待升级的客户端插入,USB量产设备驱动程序通知Linux用户层,由Linux用户层通知Java层的固件升级应用程序。
优选地,下载单元通过固件升级应用程序将初始化程序和固件升级程序下载到客户端上,具体包括:
由Java层的固件升级应用程序通过JNI接口向Linux用户层的固件升级应用程序发送下载命令、初始化程序和固件升级程序;
由Linux用户层的固件升级应用程序向USB量产设备驱动程序发送下载命令、初始化程序和固件升级程序,所述USB量产设备驱动程序对下载命令进行解析后,通知USB内核通过USB主机控制器驱动操作USB主机控制器将初始化程序和固件升级程序发送到待升级的客户端。
优选地,升级单元通过固件升级应用程序向客户端发送固件烧写命令及固件数据,具体包括:
由Java层的固件升级应用程序通过JNI接口向Linux用户层的固件升级应用程序发送固件烧写命令及固件数据;
由Linux用户层的固件升级应用程序向USB量产设备驱动程序发送固件烧写命令及固件数据,所述USB量产设备驱动程序对固件烧写命令进行解析后,通知USB内核通过USB主机控制器驱动操作USB主机控制器将固件烧写命令及固件数据发送到待升级的客户端。
本发明实施例还提供一种固件升级的系统,包括:
主机端,通过USB数据线连接客户端,用于通过USB主机控制器驱动操作USB主机控制器检测本地USB接口是否有待升级的客户端插入;若检测到有待升级的客户端插入,主机端通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端,所述初始化程序用于初始化客户端内存,所述固件升级程序被下载到初始化后的内存中,用于解析并执行从所述主机端接收的各种命令;主机端通过固件升级应用程序向客户端发送固件烧写命令及固件数据;
客户端,用于接收所述主机端发送的固件升级应用程序将初始化程序和固件升级程序,通过所述初始化程序初始化客户端内存,接收所述主机端发送的固件烧写命令及固件数据,通过所述客户端上的固件升级程序根据固件烧写命令将固件数据写入存储介质。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种固件升级的方法,其特征在于,包括:
主机端通过USB主机控制器驱动操作USB主机控制器检测本地USB接口是否有待升级的客户端插入;
若检测到有待升级的客户端插入,主机端通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端,所述初始化程序用于初始化客户端内存,所述固件升级程序被下载到初始化后的内存中,用于解析并执行从所述主机端接收的各种命令;
主机端通过固件升级应用程序向客户端发送固件烧写命令及固件数据,由所述客户端接收到固件烧写命令及固件数据后,通过所述客户端上的固件升级程序根据固件烧写命令将固件数据写入存储介质。
2.如权利要求1所述的方法,其特征在于,所述主机端通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端之后,通过固件升级应用程序向客户端发送固件烧写命令及固件数据之前,还包括:
主机端通过固件升级应用程序向客户端发送检测扫描命令,由所述客户端接收到所述检测扫描命令后,通过所述客户端上的固件升级程序根据检测扫描命令扫描获得硬件信息并反馈给主机端。
3.如权利要求1所述的方法,其特征在于,所述检测到有待升级的客户端插入,具体包括:
若USB主机控制器检测到有新设备插入时,通过USB主机控制器驱动通知USB内核,由USB内核通过USB主机控制器驱动操作USB主机控制器获取新设备的设备信息,并与USB量产设备驱动程序所存储的设备信息相匹配,若匹配成功,则确定本地USB接口有待升级的客户端插入;
所述USB内核通知USB量产设备驱动程序有待升级的客户端插入,USB量产设备驱动程序通知Linux用户层,由Linux用户层通知Java层的固件升级应用程序。
4.如权利要求1所述的方法,其特征在于,所述主机端通过固件升级应用程序将初始化程序和固件升级程序下载到客户端上,具体包括:
Java层的固件升级应用程序通过JNI接口向Linux用户层的固件升级应用程序发送下载命令、初始化程序和固件升级程序;
Linux用户层的固件升级应用程序向USB量产设备驱动程序发送下载命令、初始化程序和固件升级程序,所述USB量产设备驱动程序对下载命令进行解析后,通知USB内核通过USB主机控制器驱动操作USB主机控制器将初始化程序和固件升级程序发送到待升级的客户端。
5.如权利要求1所述的方法,其特征在于,所述主机端通过固件升级应用程序向客户端发送固件烧写命令及固件数据,具体包括:
Java层的固件升级应用程序通过JNI接口向Linux用户层的固件升级应用程序发送固件烧写命令及固件数据;
Linux用户层的固件升级应用程序向USB量产设备驱动程序发送固件烧写命令及固件数据,所述USB量产设备驱动程序对固件烧写命令进行解析后,通知USB内核通过USB主机控制器驱动操作USB主机控制器将固件烧写命令及固件数据发送到待升级的客户端。
6.如权利要求1所述的方法,其特征在于,所述主机端通过固件升级应用程序向客户端发送固件烧写命令及固件数据之后,还包括:
所述主机端通过固件升级应用程序接收所述客户端在烧写完成后返回的是否烧写成功的反馈信息,并将所述反馈信息进行显示。
7.一种固件升级的主机端装置,其特征在于,包括:
检测单元,用于通过USB主机控制器驱动操作USB主机控制器检测本地USB接口是否有待升级的客户端插入;
下载单元,用于若检测到有待升级的客户端插入,通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端,所述初始化程序用于初始化客户端内存,所述固件升级程序被下载到初始化后的内存中,用于解析并执行从所述主机端接收的各种命令;
升级单元,用于通过固件升级应用程序向客户端发送固件烧写命令及固件数据,由所述客户端接收到固件烧写命令及固件数据后,通过所述客户端上的固件升级程序根据固件烧写命令将固件数据写入存储介质。
8.如权利要求7所述的主机端装置,其特征在于,还包括:
命令单元,用于在下载单元通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端之后,在升级单元通过固件升级应用程序向客户端发送固件烧写命令及固件数据之前,通过固件升级应用程序向客户端发送检测扫描命令,由所述客户端接收到所述检测扫描命令后,通过所述客户端上的固件升级程序根据检测扫描命令扫描获得硬件信息并反馈给主机端。
9.如权利要求7所述的主机端装置,其特征在于,所述检测单元检测到有待升级的客户端插入,具体包括:
若由USB主机控制器检测到有新设备插入时,通过USB主机控制器驱动通知USB内核,由USB内核通过USB主机控制器驱动操作USB主机控制器获取新设备的设备信息,并与USB量产设备驱动程序所存储的设备信息相匹配,若匹配成功,则确定本地USB接口有待升级的客户端插入;
由所述USB内核通知USB量产设备驱动程序有待升级的客户端插入,USB量产设备驱动程序通知Linux用户层,由Linux用户层通知Java层的固件升级应用程序。
10.如权利要求7所述的主机端装置,其特征在于,所述下载单元通过固件升级应用程序将初始化程序和固件升级程序下载到客户端上,具体包括:
由Java层的固件升级应用程序通过JNI接口向Linux用户层的固件升级应用程序发送下载命令、初始化程序和固件升级程序;
由Linux用户层的固件升级应用程序向USB量产设备驱动程序发送下载命令、初始化程序和固件升级程序,所述USB量产设备驱动程序对下载命令进行解析后,通知USB内核通过USB主机控制器驱动操作USB主机控制器将初始化程序和固件升级程序发送到待升级的客户端。
11.如权利要求7所述的主机端装置,其特征在于,所述升级单元通过固件升级应用程序向客户端发送固件烧写命令及固件数据,具体包括:
由Java层的固件升级应用程序通过JNI接口向Linux用户层的固件升级应用程序发送固件烧写命令及固件数据;
由Linux用户层的固件升级应用程序向USB量产设备驱动程序发送固件烧写命令及固件数据,所述USB量产设备驱动程序对固件烧写命令进行解析后,通知USB内核通过USB主机控制器驱动操作USB主机控制器将固件烧写命令及固件数据发送到待升级的客户端。
12.一种固件升级的系统,其特征在于,包括:
主机端,通过USB数据线连接客户端,用于通过USB主机控制器驱动操作USB主机控制器检测本地USB接口是否有待升级的客户端插入;若检测到有待升级的客户端插入,主机端通过固件升级应用程序将初始化程序和固件升级程序下载到所述客户端,所述初始化程序用于初始化客户端内存,所述固件升级程序被下载到初始化后的内存中,用于解析并执行从所述主机端接收的各种命令;主机端通过固件升级应用程序向客户端发送固件烧写命令及固件数据;
客户端,用于接收所述主机端发送的固件升级应用程序将初始化程序和固件升级程序,通过所述初始化程序初始化客户端内存,接收所述主机端发送的固件烧写命令及固件数据,通过所述客户端上的固件升级程序根据固件烧写命令将固件数据写入存储介质。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410216498.5A CN105094877B (zh) | 2014-05-21 | 2014-05-21 | 一种固件升级的方法和主机端装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410216498.5A CN105094877B (zh) | 2014-05-21 | 2014-05-21 | 一种固件升级的方法和主机端装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105094877A true CN105094877A (zh) | 2015-11-25 |
CN105094877B CN105094877B (zh) | 2018-09-25 |
Family
ID=54575397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410216498.5A Active CN105094877B (zh) | 2014-05-21 | 2014-05-21 | 一种固件升级的方法和主机端装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105094877B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106990990A (zh) * | 2017-04-06 | 2017-07-28 | 上海烟草集团有限责任公司 | 基于资源配置驱动库的资源动态维护系统 |
CN107231244A (zh) * | 2016-03-23 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 初始化加密机的系统、方法和装置 |
CN107291484A (zh) * | 2016-04-11 | 2017-10-24 | 龙芯中科技术有限公司 | 烧写裸板的方法及装置 |
CN108614717A (zh) * | 2018-04-11 | 2018-10-02 | 厦门亿联网络技术股份有限公司 | 一种基于usb的系统引导方法 |
CN108762797A (zh) * | 2018-05-30 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种ssd固件在线更新方法、系统及ssd |
CN112363418A (zh) * | 2019-07-23 | 2021-02-12 | 西安和其光电科技股份有限公司 | 荧光光纤温控仪及其控温方法 |
WO2021077285A1 (zh) * | 2019-10-22 | 2021-04-29 | 深圳市大疆创新科技有限公司 | 电池管理装置、电子装置、电量管理装置、系统及方法 |
CN112835607A (zh) * | 2021-03-20 | 2021-05-25 | 南京物联传感技术有限公司 | 一种嵌入式子设备功能固件在线烧录的系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464386A (zh) * | 2002-06-25 | 2003-12-31 | 联想(北京)有限公司 | 嵌入式系统中固件程序在线升级的实现方法 |
CN1991761A (zh) * | 2005-12-30 | 2007-07-04 | 北京华旗资讯数码科技有限公司 | 一种固件程序在线升级的方法及硬件设备 |
EP1760599B1 (en) * | 2005-08-15 | 2008-05-14 | Research In Motion Limited | Universal Peripheral Connector |
CN103092648A (zh) * | 2013-01-07 | 2013-05-08 | 华为终端有限公司 | 一种镜像升级方法、系统及用户设备和个人计算机 |
-
2014
- 2014-05-21 CN CN201410216498.5A patent/CN105094877B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1464386A (zh) * | 2002-06-25 | 2003-12-31 | 联想(北京)有限公司 | 嵌入式系统中固件程序在线升级的实现方法 |
EP1760599B1 (en) * | 2005-08-15 | 2008-05-14 | Research In Motion Limited | Universal Peripheral Connector |
CN1991761A (zh) * | 2005-12-30 | 2007-07-04 | 北京华旗资讯数码科技有限公司 | 一种固件程序在线升级的方法及硬件设备 |
CN103092648A (zh) * | 2013-01-07 | 2013-05-08 | 华为终端有限公司 | 一种镜像升级方法、系统及用户设备和个人计算机 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107231244A (zh) * | 2016-03-23 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 初始化加密机的系统、方法和装置 |
CN107231244B (zh) * | 2016-03-23 | 2021-05-18 | 阿里巴巴集团控股有限公司 | 初始化加密机的系统、方法和装置 |
CN107291484A (zh) * | 2016-04-11 | 2017-10-24 | 龙芯中科技术有限公司 | 烧写裸板的方法及装置 |
CN107291484B (zh) * | 2016-04-11 | 2021-05-25 | 龙芯中科技术股份有限公司 | 烧写裸板的方法及装置 |
CN106990990A (zh) * | 2017-04-06 | 2017-07-28 | 上海烟草集团有限责任公司 | 基于资源配置驱动库的资源动态维护系统 |
CN108614717A (zh) * | 2018-04-11 | 2018-10-02 | 厦门亿联网络技术股份有限公司 | 一种基于usb的系统引导方法 |
CN108762797A (zh) * | 2018-05-30 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种ssd固件在线更新方法、系统及ssd |
CN112363418A (zh) * | 2019-07-23 | 2021-02-12 | 西安和其光电科技股份有限公司 | 荧光光纤温控仪及其控温方法 |
WO2021077285A1 (zh) * | 2019-10-22 | 2021-04-29 | 深圳市大疆创新科技有限公司 | 电池管理装置、电子装置、电量管理装置、系统及方法 |
CN112835607A (zh) * | 2021-03-20 | 2021-05-25 | 南京物联传感技术有限公司 | 一种嵌入式子设备功能固件在线烧录的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105094877B (zh) | 2018-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105094877A (zh) | 一种固件升级的方法和主机端装置及系统 | |
US7010624B1 (en) | System and method of software/firmware uploading and upgrading for peripheral devices | |
US6581157B1 (en) | System and method for detecting and updating non-volatile memory on an electronic adapter board installed in a computing system | |
CN104579719B (zh) | 一种固件的升级方法和系统、上位机和光模块 | |
EP1369779A2 (en) | System and method for custom installation of an operating system on a remote client | |
CN107678949B (zh) | 实现嵌入式设备不同通信方式的自动化测试方法 | |
CN109451472B (zh) | Android智能设备上多蓝牙芯片的动态管理方法 | |
CN101853173A (zh) | 一种分布式系统的可编程逻辑器件的软件升级方法和设备 | |
CN103744695A (zh) | 基于pxe的操作系统远程安装方法和系统 | |
CN111240238B (zh) | 一种芯片控制系统 | |
CN106201563A (zh) | 启动参数的配置方法和装置、主板启动的方法和装置 | |
CN102880488A (zh) | 驱动程序修复方法、设备和系统 | |
US8073997B2 (en) | Software install automation | |
WO2015062217A1 (zh) | 虚拟桌面系统中外设的接入处理方法及装置 | |
KR20110076432A (ko) | Can 통신을 이용한 다중 프로그램 업데이트 시스템 및 방법 | |
CN104111844A (zh) | 在移动终端内安装应用程序的方法及系统 | |
CN102567268A (zh) | 一种usb转虚拟串口/modem的检测方法 | |
CN104519105A (zh) | 一种获取与终端相匹配的应用的方法及装置 | |
CN114201197A (zh) | 固件升级方法、装置、电子设备及可读存储介质 | |
CN103092648A (zh) | 一种镜像升级方法、系统及用户设备和个人计算机 | |
CN103003033A (zh) | 机器人系统的控制方法和装置 | |
CN110737444A (zh) | 基于固件的操作系统远程自适应动态部署方法及系统 | |
CN107659621B (zh) | 一种raid控制卡配置方法及装置 | |
CN106484442A (zh) | 服务器系统及更新开机映像档的方法 | |
CN109933353B (zh) | 一种基于嵌入式Web的控制器固件升级方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 519085 High-tech Zone, Tangjiawan Town, Zhuhai City, Guangdong Province Patentee after: ACTIONS TECHNOLOGY Co.,Ltd. Address before: 519085 High-tech Zone, Tangjiawan Town, Zhuhai City, Guangdong Province Patentee before: ACTIONS (ZHUHAI) TECHNOLOGY Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |