固件的烧写方法、装置及系统的制作方法
【技术领域】
[0001] 本公开涉及集成电路技术领域,尤其涉及固件的烧写方法、装置及系统。
【背景技术】
[0002] 传统的固件烧写方法利用烧写工具例如JLINK来实现,JLINK是一种MCU芯片调 试和烧写工具,在烧写时,将JLINK -端连接到电脑USB接口上,另一端连接到MCU烧写接 口,用户在PC机的客户端软件上指定待下载固件,发送烧写指令就可以开始固件烧写了。
[0003] 传统的一拖一烧写方案,每次只能完成对一个待烧写芯片的固件录入,效率不高。
【发明内容】
[0004] 本公开实施例提供一种固件的烧写方法、装置及系统,所述技术方案如下:
[0005] 根据本公开实施例的第一方面,提供一种固件的烧写方法,用于固件烧写客户端, 包括:
[0006] 对是否接收到烧写固件的指令进行监测;所述烧写固件的指令用于指示对至少两 个芯片并行地执行烧写固件的操作;
[0007] 当接收到所述烧写固件的指令时,从预设的各固件的下载地址下载待烧写的各个 固件;
[0008] 通过预先建立的与各烧写工具关联的各进程,将每个芯片对应的固件及烧写固件 的指令发送至所关联的烧写工具,以便各烧写工具并行地将对应的固件烧写至所连接的芯 片中。
[0009] 在上述实施例中,与多个芯片连接的多个烧写工具可以实现并行地将对应的固件 烧写至所连接的芯片中,从而实现并行地对多个芯片进行固件烧写的操作,提高了固件烧 写的整体效率。
[0010] 在一个实施例中,各烧写工具对应的各进程,通过下述方式预先建立:
[0011] 为每个烧写工具创建对应的进程,每个进程对应一个或多个烧写工具;
[0012] 将所述进程的标识与所述烧写工具的进程的标识关联保存。
[0013] 在上述实施例中,为多个烧写工具分别创建对应的进程,可以实现烧写客户端通 过多个进程对烧写工具控制,使烧写工具并行地执行烧写的操作,为本公开提供了方便实 施的具体实施方案。
[0014] 在一个实施例中,所述为每个烧写工具创建对应的进程,包括:
[0015] 当每个进程对应一个烧写工具时,创建η个进程,η为烧写工具的数量;
[0016] 当存在一个进程关联多个烧写工具时,创建m个进程,m<n,n为烧写工具的数量, 并预设关联同一个进程的多个烧写工具串行完成烧写固件的操作。
[0017] 在上述实施例中,可以为一个烧写工具创建一个对应的进程,也可以创建一个进 程,为多个烧写工具服务,但是整体上看,还是多个进程为各烧写工具服务,以便烧写客户 端将待烧写的固件发给各烧写工具,并行地执行烧写操作,上述实施例为本公开提供了丰 富、灵活的具体实施方案。
[0018] 在一个实施例中,当存在一个进程关联多个烧写工具时,针对关联有多个烧写工 具的进程,通过预先建立的与各烧写工具关联的进程,将芯片对应的固件及烧写固件的指 令发送至所关联的烧写工具的步骤,包括:
[0019] 通过所述关联有多个烧写工具的进程,每次发送一个烧写工具对应的固件及烧写 固件的指令给所述烧写工具;并判断是否接收到所述烧写工具反馈的烧写完成的响应;
[0020] 当接收到述烧写工具反馈的烧写完成的响应时,通过所述关联有多个烧写工具的 进程,将所关联的下一个烧写工具对应的固件及烧写固件的指令给所述下一个烧写工具, 直至所述关联有多个烧写工具的进程所关联的所有烧写工具均完成了烧写固件的操作。
[0021] 在一个进程为多个烧写工具服务的情形下,为多个烧写工具服务的过程可以是串 行的,从多个烧写工具整体来看,由多个进程进行控制,实现了并行处理,提高了烧写的效 率。
[0022] 在一个实施例中,为每个烧写工具创建对应的进程之后,还包括:
[0023] 控制所创建的每个进程载入对应的各烧写工具的驱动库,所述驱动库中包括烧写 工具的驱动程序。
[0024] 上述实施例提供了通过创建的进程如何来控制烧写工具的【具体实施方式】。
[0025] 根据本公开实施例的第二方面,提供一种固件的烧写方法,用于至少两个烧写工 具,包括:
[0026] 所述至少两个烧写工具,分别从预先建立的与所述烧写工具关联的至少两个进 程,接收固件烧写客户端发送的所述烧写工具对应的固件及烧写固件的指令;所述烧写固 件的指令用于对所述至少两个芯片并行地执行烧写固件的操作;
[0027] 所述至少两个烧写工具,分别按照所述烧写固件的指令,并行地将对应的固件烧 写至所连接的芯片中。
[0028] 在上述实施例中,从多个烧写工具的角度来说,可以实现并行地将对应的固件烧 写至所连接的芯片中,从而实现并行地对多个芯片进行固件烧写的操作,提高了固件烧写 的整体效率。
[0029] 在一个实施例中,将对应的固件烧写至所连接的芯片中,包括:
[0030] 通过驱动所连接的芯片中的CPU或总线,将固件烧写客户端发送的固件写入所述 芯片中的预设的存储空间;或者
[0031] 向所述芯片载入预设的执行烧写操作的固件,所述执行烧写操作的固件用于将所 述固件烧写客户端发送的固件写入所述芯片中的预设的存储空间。
[0032] 上述实施例为每个烧写工具如何将固件写入芯片中提供了可便捷实施的技术方 案。
[0033] 根据本公开实施例的第三方面,提供一种固件的烧写装置,包括:
[0034] 监测模块,用于对是否接收到烧写固件的指令进行监测;所述烧写固件的指令用 于对至少两个芯片并行地执行烧写固件的操作;
[0035] 固件下载模块,用于当接收到用户发起的烧写固件的指令时,根据所述指令中携 带的待烧写的各固件的标识,从预设的各固件的下载地址下载待烧写的各个固件;
[0036] 发送模块,用于通过预先建立的与各烧写工具关联的各进程,将每个芯片对应的 固件及烧写固件的指令发送至所关联的烧写工具,以便各烧写工具并行地将对应的固件烧 写至所连接的芯片中。
[0037] 在一个实施例中,上述固件的烧写装置,还包括:
[0038] 进程创建模块,用于为每个烧写工具创建对应的进程,每个进程对应一个或多个 烧写工具;
[0039] 存储模块,用于将所述进程的标识与所述烧写工具的进程的标识关联保存。
[0040] 在一个实施例中,所述进程创建模块,包括:
[0041] 第一创建子模块,用于当每个进程对应一个烧写工具时,创建η个进程,η为烧写 工具的数量;
[0042] 第二创建子模块,用于当存在一个进程关联多个烧写工具时,创建m个进程,m < η,η为烧写工具的数量,并预设关联同一个进程的多个烧写工具串行完成烧写固件的操 作。
[0043] 在一个实施例中,当存在一个进程关联多个烧写工具时,所述发送模块,包括:
[0044] 发送子模块,用于通过所述关联有多个烧写工具的进程,每次发送一个烧写工具 对应的固件及烧写固件的指令给所述烧写工具;以及当接收到述烧写工具反馈的烧写完成 的响应时,通过所述关联有多个烧写工具的进程,将所关联的下一个烧写工具对应的固件 及烧写固件的指令给所述下一个烧写工具,直至所述关联有多个烧写工具的进程所关联的 所有烧写工具均完成了烧写固件的操作;
[0045] 判断子模块,用于判断接收子模块是否接收到所述烧写工具反馈的烧写完成的响 应;
[0046] 接收子模块,用于接收所述烧写工具反馈的烧写完成的响应。
[0047] 本公开实施例提供的固件的烧写装置,还包括:
[0048] 控制模块,用于在进程创建模块为每个烧写工具创建对应的进程之后,控制所创 建的每个进程载入对应的各烧写工具的驱动库,所述驱动库中包括烧写工具的驱动程序。
[0049] 根据本公开实施例的第四方面,提供一种固件的烧写系统,包括:固件烧写客户端 和至少两个烧写工具;
[0050] 所述固件烧写客户端,用于对用户发起的烧写固件的指令进行监测;所述烧写固 件的指令用于对至少两个芯片并行地执行烧写固件的操作;当接收到用户发起的烧写固件 的指令时,根据预