3 软件设计

3.1 主控计算机的软件设计

主控制计算机的软件运行状态应该分为两种:一是平时的查询控制状态,用来查询和控制系统中各个节点的工作状态;二是系统的升级状态,用来执行对各个子节点的升级控制。如图4所示,这两种状态是可以相互转换的。

以大容量FPGA为基础的多节点系统远程升级实现方法介绍

图4 主控计算机主要状态

软件的查询控制状态,是由系统所要实现的主要功能决定的,不属于本文所讨论的范畴。在系统的升级状态,主控计算机先要通过以太网获得系统各个节点的远程升级数据,待全部升级数据接收完成后,向系统的一个节点发送升级指令。节点响应并建立起通信连接后,将该节点的升级数据全部发送到该节点。接下来,主控计算机判断上一个节点是否为最后一个需要升级的节点,如果不是,则继续进行下一个节点升级数据的传输。系统所有的节点升级完成后,等待外部输入的控制命令。例如,让整个系统重新启动,加载新的数据;或暂时不重新启动而返回查询控制状态。软件流程如图5所示。

以大容量FPGA为基础的多节点系统远程升级实现方法介绍

图5 系统升级状态流程

3.2 子节点的软件设计

对于子节点的软件设计,与主控计算机一样,也分为平时的查询控制状态和系统升级状态,并且它们之间也能够与主控计算机一起相互转换;但 ATmega64单片机还要承担对FPGA的加载任务。开机运行后,ATmega64单片机先加载子节点FPGA,使子节点能够正常工作。子节点正常工作后,监视RS485总线并判断有无对本节点的通信。当主控计算机要求与本节点建立通信连接时,发送反馈信息,与其建立通信连接。子节点根据主控计算机发送的命令,进入查询控制模式或者远程升级模式。进入远程升级模式后,子节点接收主控计算机发来的远程升级数据,升级数据经过校验后写入Flash。升级完成后继续等待主控计算机的命令,重新启动或继续运行。其具体的软件设计流程如图6所示。

以大容量FPGA为基础的多节点系统远程升级实现方法介绍

图6 子节点软件流程