一种基于FPGA的嵌入式设备的在线配置方法及系统与流程

文档序号:11690907阅读:236来源:国知局
一种基于FPGA的嵌入式设备的在线配置方法及系统与流程

本发明涉及软件领域,特别涉及一种基于fpga的嵌入式设备的在线配置方法及系统。



背景技术:

fpga(field-programmablegatearray),即现场可编程门阵列,它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

fpga的开发相对于传统pc、单片机的开发有很大不同。fpga以并行运算为主,以硬件描述语言来实现;相比于pc或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别,也造成了fpga开发入门较难。目前国内有专业的fpga外协开发厂家,如[北京中科鼎桥zkdq-tech]等。fpga开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。

fpga具有逻辑可编程的特点,具有丰富的接口和大量的逻辑单元,大量的使用于灵活度要求高、缺少专用asic芯片的嵌入式设备中。但是由于fpga技术专业性强,固件更新维护需要专业人员现场操作,为设备的升级和维护带来了不便。



技术实现要素:

有鉴于此,本发明实施例提供了一种基于fpga的嵌入式设备的在线配置方法及系统。

第一方面,本发明提供一种嵌入式设备的在线配置系统,所述系统包括:

上位机;

与所述上位机通信连接的至少一个嵌入式设备,所述嵌入式设备包括微控制器,与所述微控制器通信连接的一个现场可编程门阵列fpga,与所述微控制器数据连接的存储芯片;

在非更新模式下,所述微控制器上电工作,载入fatfs文件系统,并在所述存储芯片中的指定目录中查找是否存在指定固件文件,若有,则读取所述指定固件文件并把所述指定固件文件的内容写入到fpga中;

在更新模式下,系统上电后,与所述上位机直接连接的所述嵌入式设备中的微控制器在所述上位机的控制下,对所述至少一个嵌入式设备进行扫描,并建立目录结构。

在一些实施例中,所述指定目录包括目录firmware、目录program或目录bin,所述指定固件文件包括文件code.bit、文件program.bit或文件firmware.bit;进一步优选地,所述指定目录为目录firmware,所述指定固件文件为文件code.bit。

在一些实施例中,所述微控制器包括stm32f103控制芯片、stm32f767控制芯片或其它具有usb控制器的微控制器,所述存储芯片包括w25q512fv存储芯片、w25q64存储芯片或其他可通过微控制器读写的flash存储芯片;进一步优选地,所述微控制器为stm32f103控制芯片,所述存储芯片为w25q512fv存储芯片。

具体地,所述微控制器包括usb接口,所述微控制器通过与所述usb接口以massusbstorage方式连接到所述上位机。

具体地,所述至少一个嵌入式设备包括两个或两个以上的嵌入式设备时,至少被定义为第一嵌入式设备及第二嵌入式设备,所述第一嵌入式设备与所述上位机连接,所述第二嵌入式设备串连在所述第一嵌入式设备上。

具体地,所述第一嵌入式设备设有第一usb接口、用于接收的第一can接口和用于输出的第二can接口,所述第二嵌入式设备设有第二usb接口、用于接收的第三can接口和用于输出的第四can接口,所述第一usb接口与所述上位机连接,所述第二can接口与所述第三can接口连接以使得所述第一嵌入式设备和所述第二嵌入式设备串联。

第二方面,本发明提供一种基于fpga的嵌入式设备的在线配置方法,应用于上述的嵌入式设备的在线配置系统,所述方法包括:

在更新模式下,连接上位机的第一个嵌入式设备中的微控制器在所述上位机的控制下,对串联设备进行扫描,并建立目录结构,所述串联设备为至少一个嵌入式设备;

在存储芯片的根目录下建立对设备数量对应个目录,向上位机反馈总线扫描已经结束;

所述上位机接收到扫描结束的反馈后向所述存储芯片的根目录下的所述对应个目录进行固件程序的写入,待所有固件程序写入完成之后通知嵌入式设备将所述固件程序写入fpga;

与所述上位机连接的第一个嵌入式设备在符合预置条件时将所述对应个目录中固件程序分别发送给相应的嵌入式设备;

所述相应的嵌入式设备将接收到所述固件程序替换原有文件以完成固件注入任务;

第一个嵌入式设备在所述存储芯片到达预设条件时,向所有串联设备发送固件重新载入命令,载入所需文件到所述fpga以完成固件的更新。

具体地,所述在存储芯片的根目录下建立对设备数量对应个目录,向上位机反馈总线扫描已经结束,包括:

在所述存储芯片的根目录下建立device目录,在device目录下建立设备数量个目录,目录名从0开始,删除scanstart文件,向所述上位机表示总线扫描已经结束;

所述上位机接收到扫描结束的反馈后向所述存储芯片的根目录下的所述对应个目录进行固件程序的写入,待所有固件程序写入完成之后通知嵌入式设备将所述固件程序写入fpga,包括:

所述上位机在发现所述scanstart文件已经被删除后,向所述存储芯片的device目录下的从0开始命名的各子目录内写入要注入的固件程序,所述固件程序名为code.bit,所有固件程序写入完成后,在所述存储芯片中建立programstart文件,通知嵌入式设备开始写入程序到fpga;

所述与所述上位机连接的第一个嵌入式设备在符合预置条件时将所述对应个目录中固件程序分别发送给相应的嵌入式设备,包括:

第一个嵌入式设备在所述存储芯片中发现所述programstart文件后,将device目录下的每一个子目录下的固件发送给相应的串联设备,并把子目录0下的固件复制到firmware目录下,当所有操作都完成后,删除programstart文件;

所述相应的嵌入式设备将接收到所述固件程序替换原有文件以完成固件注入任务,包括:

其它嵌入式设备在接收到固件程序后直接把固件存储到firmware目录下,替换原有文件,所述上位机在发现所述programstart文件已经被删除后,再次建立programend文件,并完成固件注入任务;

所述第一个嵌入式设备在所述存储芯片到达预设条件时,向所有串联设备发送固件重新载入命令,载入所需文件到所述fpga以完成固件的更新,包括:

所述第一个嵌入式设备在所述存储芯片中发现所述programend文件后,向所有串联设备发送固件重新载入命令,然后删除programend文件,并从自身的firmware目录下的code.bit载入到fpga完成固件的更新。

具体地,所述方法还包括:

非更新模式下,微控制器加电开始工作后,载入fatfs文件系统,并在所述存储芯片中查找是否在目录firmware下有文件code.bit,如果有,则表示存在配置文件,读取该文件并把该文件的内容写入到fpga中。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明提出的基于fpga的嵌入式设备的在线配置方法及系统适应性强,上位机可以使用计算机、机顶盒等设备,支持window、linux、andriod等多种操作系统;实现快速便捷,不需要开发上位机上的驱动和控制程序;支持多个串联在一起的嵌入式设备进行固件的更新,且每个设备可以更新成不同版本的程序;所有嵌入式设备在线动态更新固件,不影响正在进行的工作;可以实现远程固件更新,不需要技术人员到达现场;可通过编写脚本的方式控制远程固件更新过程,进一步提高效率。

附图说明

图1a是本发明实施例中提供的嵌入式设备的在线配置系统的连接框图;

图1b是本发明实施例中提供的嵌入式设备的在线配置系统中的微控制器控制fpga配置连接示意图;

图2是本发明实施例中提供的基于fpga的嵌入式设备的在线配置方法中的嵌入式设备的固件更新部件示意图;

图3是本发明实施例中提供的基于fpga的嵌入式设备的在线配置方法中的多个嵌入式设备串联示意图;

图4是本发明实施例中提供的基于fpga的嵌入式设备的在线配置方法中的嵌入式设备加电配置过程流程图;

图5是本发明实施例中提供的基于fpga的嵌入式设备的在线配置方法中的第一个嵌入式设备总线扫描流程图;

图6是本发明实施例中提供的基于fpga的嵌入式设备的在线配置方法中的其它嵌入式设备总线扫描作流程图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

结合图1a所示,本发明实施例中提供一种嵌入式设备的在线配置系统,所述系统包括:

上位机;

与所述上位机通信连接的至少一个嵌入式设备,所述嵌入式设备包括微控制器,与所述微控制器通信连接的一个现场可编程门阵列fpga,与所述微控制器数据连接的存储芯片;

在非更新模式下,所述微控制器上电工作,载入fatfs文件系统,并在所述存储芯片中的指定目录中查找是否存在指定固件文件,若有,则读取所述指定固件文件并把所述指定固件文件的内容写入到fpga中;

在更新模式下,系统上电后,与所述上位机直接连接的所述嵌入式设备中的微控制器在所述上位机的控制下,对所述至少一个嵌入式设备进行扫描,并建立目录结构。

具体地,所述指定目录为目录firmware,所述指定固件文件为文件code.bit。

具体地,所述微控制器为stm32f103控制芯片,所述存储芯片为w25q512fv存储芯片。

具体地,所述微控制器包括usb接口,所述微控制器通过与所述usb接口以massusbstorage方式连接到所述上位机。

具体地,所述至少一个嵌入式设备包括两个或两个以上的嵌入式设备时,至少被定义为第一嵌入式设备及第二嵌入式设备,所述第一嵌入式设备与所述上位机连接,所述第二嵌入式设备串连在所述第一嵌入式设备上。

具体地,所述第一嵌入式设备设有第一usb接口、用于接收的第一can接口和用于输出的第二can接口,所述第二嵌入式设备设有第二usb接口、用于接收的第三can接口和用于输出的第四can接口,所述第一usb接口与所述上位机连接,所述第二can接口与所述第三can接口连接以使得所述第一嵌入式设备和所述第二嵌入式设备串联。

本发明提出的基于fpga的嵌入式设备的在线配置方法及系统适应性强,上位机可以使用计算机、机顶盒等设备,支持window、linux、andriod等多种操作系统;实现快速便捷,不需要开发上位机上的驱动和控制程序;支持多个串联在一起的嵌入式设备进行固件的更新,且每个设备可以更新成不同版本的程序;所有嵌入式设备在线动态更新固件,不影响正在进行的工作;可以实现远程固件更新,不需要技术人员到达现场;可通过编写脚本的方式控制远程固件更新过程,进一步提高效率。

对应地,本发明实施例中提供一种基于fpga的嵌入式设备的在线配置方法,应用于上面所述的嵌入式设备的在线配置系统,所述方法包括:

在更新模式下,连接上位机的第一个嵌入式设备中的微控制器在所述上位机的控制下,对串联设备进行扫描,并建立目录结构,所述串联设备为至少一个嵌入式设备;

在存储芯片的根目录下建立对设备数量对应个目录,向上位机反馈总线扫描已经结束;

所述上位机接收到扫描结束的反馈后向所述存储芯片的根目录下的所述对应个目录进行固件程序的写入,待所有固件程序写入完成之后通知嵌入式设备将所述固件程序写入fpga;

与所述上位机连接的第一个嵌入式设备在符合预置条件时将所述对应个目录中固件程序分别发送给相应的嵌入式设备;

所述相应的嵌入式设备将接收到所述固件程序替换原有文件以完成固件注入任务;

第一个嵌入式设备在所述存储芯片到达预设条件时,向所有串联设备发送固件重新载入命令,载入所需文件到所述fpga以完成固件的更新。

具体地,所述在存储芯片的根目录下建立对设备数量对应个目录,向上位机反馈总线扫描已经结束,包括:

在所述存储芯片的根目录下建立device目录,在device目录下建立设备数量个目录,目录名从0开始,删除scanstart文件,向所述上位机表示总线扫描已经结束;

所述上位机接收到扫描结束的反馈后向所述存储芯片的根目录下的所述对应个目录进行固件程序的写入,待所有固件程序写入完成之后通知嵌入式设备将所述固件程序写入fpga,包括:

所述上位机在发现所述scanstart文件已经被删除后,向所述存储芯片的device目录下的从0开始命名的各子目录内写入要注入的固件程序,所述固件程序名为code.bit,所有固件程序写入完成后,在所述存储芯片中建立programstart文件,通知嵌入式设备开始写入程序到fpga;

所述与所述上位机连接的第一个嵌入式设备在符合预置条件时将所述对应个目录中固件程序分别发送给相应的嵌入式设备,包括:

第一个嵌入式设备在所述存储芯片中发现所述programstart文件后,将device目录下的每一个子目录下的固件发送给相应的串联设备,并把子目录0下的固件复制到firmware目录下,当所有操作都完成后,删除programstart文件;

所述相应的嵌入式设备将接收到所述固件程序替换原有文件以完成固件注入任务,包括:

其它嵌入式设备在接收到固件程序后直接把固件存储到firmware目录下,替换原有文件,所述上位机在发现所述programstart文件已经被删除后,再次建立programend文件,并完成固件注入任务;

所述第一个嵌入式设备在所述存储芯片到达预设条件时,向所有串联设备发送固件重新载入命令,载入所需文件到所述fpga以完成固件的更新,包括:

所述第一个嵌入式设备在所述存储芯片中发现所述programend文件后,向所有串联设备发送固件重新载入命令,然后删除programend文件,并从自身的firmware目录下的code.bit载入到fpga完成固件的更新。

具体地,所述方法还包括:

非更新模式下,微控制器加电开始工作后,载入fatfs文件系统,并在所述存储芯片中查找是否在目录firmware下有文件code.bit,如果有,则表示存在配置文件,读取该文件并把该文件的内容写入到fpga中。

具体地,为了能够对基于fpga的嵌入式设备进行远程更新维护,实现对多个串联设备配置为不同的固件程序的功能,本发明提出了一种通过usb接口的fpga配置连接方法,该方法实现如下:

通过微控制器stm32f103连接fpga,并用于fpga的配置控制;

使用高速串行总线(can、rs422总线)实现多板间串行连接;

存储芯片使用大容量spinandflash芯片存储fpga配置文件;

通过微控制器上的usb接口以massusbstorage方式连接fpga代码重注控制设备;

通过微控制器stm32f103扫描串联的fpga设备,并通过控制策略与上位机进行交互,控制fpga固件重注过程。

本发明的发明构思可以总结为:

通过使用微控制器配置fpga,提高fpga的固件程序版本控制的灵活性;

通过usb接口连接fpga代码重注控制设备,提高该方法的灵活性和易用性;

通过使用massusbstorage协议,使得该方法不需要在fpga代码重注控制设备上开发任何驱动程序和控制程序,且能够连接使用window、linux、andriod等多种操作系统fpga代码重注控制设备;

使用高速串行总线连接需要配置的多个fpga嵌入式设备,实现多个fpga嵌入式设备的信息收集和固件的传输;

通过微控制器上执行的固件交互控制策略,控制fpga固件更新、重注过程。

本发明提出的多个fpga嵌入式设备的串联在线配置方法的实现包括以下步骤:

1)使用微控制器配置fpga,电路设计中使用微控制配置连接方式,连接如附图1b所示。

2)用于控制fpga配置的芯片和接口如附图2所示

微控制器采用stm32f103,用于控制fpga的配置和固件的更新过程,存储芯片选择w25q512fv,用于存储fpga固件程序。usb接口用于连接上位机(仅用多个串联嵌入式设备中的第一个与上位机连接),can-i用于接收上一级串联嵌入式设备的数据,can-o用于向下一级串联嵌入式设备发送数据。

3)多个使用fpga的嵌入式设备串联的结构图如附图3所示

多个使用fpga的嵌入式设备串联在一起,第一个嵌入式设备通过usb接口与上位机连接,第一个嵌入式设备的can-i空闲,然后通过can-o连接下一个嵌入式设备的can-i,直到最后一个嵌入式设备,除第一个嵌入式设备外,其它第一个嵌入式设备的usb接口空闲。当第一个嵌入式设备通过usb接口与上位机连接后,在上位机端显示为一个具有32mb容量的usb存储设备,上位机通过向该usb存储设备写入特定的文件和固件程序与嵌入式设备中的微控制器交互。

4)非更新模式下的系统上电后微控制器工作过程如附图4所示

微控制器加电开始工作后,载入fatfs文件系统,并在存储芯片中查找是否在目录firmware下有文件code.bit,如果有,则表示存在配置文件,读取该文件并把该文件的内容写入到fpga中;否则直接退出,等待其它操作。

5)更新模式下的系统上电后,连接上位机的第一个嵌入式设备中的微控制器首先在上位机的控制下,对串联设备进行扫描,并建立目录结构,工作过程如附图5所示。

微控制器加电开始工作后,载入fatfs文件系统,并在正常工作后不断查找存储芯片根目录下是否存在scanstart文件,如果存在,则表示上位机已经开始进行设备扫描,这是设置设备个数变量为0,同时通过串行总线向下一串联设备发送设备扫描命令,如果在10ms内没有数据返回,则表示总线上没有串联其它设备;如果有数据返回,则把设备数量变量加上返回的设备数量值。

完成上述工作后,在存储芯片根目录下建立device目录,在device目录下建立设备数量变量个数个目录,目录名从0开始,然后删除scanstart文件,向上位机表示总线扫描已经结束。

除第一个嵌入式设备外的其它嵌入式设备的扫描流程如附图6所示。

6)上位机在发现scanstart文件已经被删除后,向usb存储设备中的device目录下的从0开始命名的各子目录内写入要注入的固件程序,固件程序文件名为code.bit。所有固件程序写入完成后,在usb存储设备中建立programstart文件,通知嵌入式设备开始写入程序到fpga。

7)第一个嵌入式设备在存储芯片中发现programstart文件后,把device目录下的每一个子目录下的固件发送给相应的串联嵌入式设备,并把子目录0下的固件复制到firmware目录下,当所有操作都完成后,删除programstart文件,其它嵌入式设备在接收到固件程序后直接把固件存储到firmware目录下,替换原有文件。

8)上位机在发现programstart文件已经被删除后,再次建立programend文件,并完成固件注入任务。

第一个嵌入式设备在存储芯片中发现programend文件后,向所有串联设备发送固件重新载入命令,然后删除programend文件,并从自身的firmware目录下的code.bit载入到fpga完成固件的更新。

本发明提出的基于fpga的嵌入式设备的在线配置方法及系统适应性强,上位机可以使用计算机、机顶盒等设备,支持window、linux、andriod等多种操作系统;实现快速便捷,不需要开发上位机上的驱动和控制程序;支持多个串联在一起的嵌入式设备进行固件的更新,且每个设备可以更新成不同版本的程序;所有嵌入式设备在线动态更新固件,不影响正在进行的工作;可以实现远程固件更新,不需要技术人员到达现场;可通过编写脚本的方式控制远程固件更新过程,进一步提高效率。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁盘或光盘等。

以上对本发明所提供的一种基于fpga的嵌入式设备的在线配置方法及系统进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1