本发明涉及一种基于千兆网的工业相机固件系统及实现方法,属于工业相机技术领域。
背景技术:
工业摄像机是一种适用于智能交通、治安卡口、高清电子警察系统、工业检测、半导体检测、印制板检测、食品饮料检测等众多领域应用的高分辨率彩色数字摄像机。它具传输速度快,色彩还原性好,成像清晰等特点。不但能够方便拍摄显微图像,而且能够测量拍摄物体的长度、角度、面积等系列参数,还可打印图文报告,是目前各种现代化检测的利器。
microblaze嵌入式软核是一个被xilinx公司优化过的可以嵌入在fpga中的risc处理器软核,具有运行速度快、占用资源少、可配置性强等优点,广泛应用于通信、军事、高端消费市场等领域。
技术实现要素:
本发明目的是提供了一种基于千兆网的工业相机固件系统及实现方法。
本发明为实现上述目的,通过以下技术方案实现:
一种基于千兆网的工业相机固件系统,包括主循环模块、中断服务模块和驱动模块;主循环模块包括初始化模块、超时处理模块和图像处理模块,中断服务模块包括事件处理模块和网络模块;
初始化模块用于主循环模块、中断服务模块、事件处理模块和驱动模块进行初始化,并且启动主循环模块;
事件处理模块,为中断服务模块调用,便于对事件进行快速处理;
超时处理模块和图像处理模块设置在主循环模块内,减少中断处理时间;网络模块,为中断服务模块和初始化模块所调用;
中断服务模块,用于在cpu发生中断时,响应该中断而执行中断服务例程,并且在中断处理完成后,控制回到主循环的中断处继续执行主循环;
驱动模块作为其他模块与寄存器、存储单元之间的接口。
一种基于千兆网的工业相机固件系统实现方法,包括以下步骤:
初始化步骤:用于主循环模块、中断服务模块、事件处理模块和驱动模块进行初始化,并且启动主循环模块;
事件处理步骤:为中断服务模块调用,便于对事件进行快速处理;
超时处理和图像处理步骤:减少中断处理时间;
中断服务步骤:用于在cpu发生中断时,响应该中断而执行中断服务例程,并且在中断处理完成后,控制回到主循环的中断处继续执行主循环。
上述基于千兆网的工业相机固件系统实现方法基础上,初始化步骤包含以下内容:
1)flash驱动的初始化;
2)sensor传感器的初始化;
3)加载出厂参数:从flash指定地址读取对应长度的数据,赋值给相应的参数结构体;而对于sensor或fpga寄存器初始化相关参数时,需要将对应参数加载到对应的sensor/fpga地址中;
4)加载出厂/用户参数组:涉及sensor和fpga寄存器的参数需要加载对应值到sensor和fpga寄存器中;
5)如果加载出厂参数或出厂/用户参数组失败,则相机跳转进入出厂程序运行;
6)dna校验:从flash中读取dna字段,与fpga的dna寄存器值经运算后进行比较,如果一致则校验通过;如果dna校验未通过,相机打开设备时会提示dna校验的错误码,无法打开设备。
上述基于千兆网的工业相机固件系统实现方法基础上,中断服务步骤包含以下中断处理:
1)看门狗超时中断:看门狗超时中断不进行其他任何操作,直接清除中断;
2)linkdown中断:相机拔掉网线时发生掉线中断,如果发生掉线中断,则需要设置相机为掉线状态,并清除心跳,执行停流停采、清除消息通道和控制通道,清除ip信息;
3)事件中断:相机与上层之间存在事件交互,当fpga检测到有事件发生时,会给固件事件中断,固件根据发生的事件类型,填充事件包,并发送事件包给主机;
4)rx数据中断:网络中存在多种数据包,当fpga对收到的数据包进行条件过滤,认为是相机该处理的数据包时,会通过中断的方式通知固件;fpga有两个rxram,用来存放收到的数据包,分别对应两个rx中断位,固件收到rx中断后,从对应序列号的rxram中读取数据包,根据千兆网进行解析,并进行不同的处理,相应不用的命令;如果是处理时间较长的命令,则加入任务队列,在主循环中处理;rxram中的命令处理完成后,清除对应的rx中断,此时fpga会清除当前处理的rxram,以便存放新的数据包;
5)事件超时中断:发送事件数据包之后,会开启时间超时中断;如果事件需要回复ack,在超时时间内没有收到应答包,则fpga会产生事件超时中断;固件收到时间超时中断后,会重置事件ack超时寄存器,如果没有达到事件重发次数,会重发此事件;如果超过事件重发次数,则丢弃当前事件。
上述基于千兆网的工业相机固件系统实现方法基础上,主循环主要执行的操作为:
1)根据网络连接状态进行ip配置;
2)处理gvcp和3a处理任务:中断中会有一些处理时间较长的任务,如读写flash,保存加载参数组;这些处理时间较长的任务就要加到任务队列中,在主循环进行处理;
3)看门狗喂狗:如果主循环处看门狗不喂狗,则看门狗超时复位,相机重新运行用户程序。
本发明的设计原理如下:根据相机技术规格和总体设计,详细描述各个模块的结构和功能,串接各个功能在固件内部的实现。固件设计以中断响应和处理为主。在中断服务函数中处理能够快速完成的gvcp命令包;对于其他类型的网络包以及需要较长读写时间的gvcp命令,仅设置中断标志,在主循环中根据相机运行状态和中断标志,调用相应的中断处理函数完成处理。其中中断服务函数在cpu接收到中断信号之后被自动调用;中断发生后,需要完成的任务由中断处理函数具体执行。
本发明的优点在于:采用基于fpga的microblaze软核,灵活高效完成地完成图像数据采集,pc端可通过网口非常方便的得到图像在采集及处理过程中的数据,方便用户对相机的控制,过程简单易用,控制高效。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。
图1为本发明相机物理体系结构结构示意图。
图2为本发明工业相机固件系统框图。
图3本发明工业相机固件系统各模块的调用关系图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的描述中,需要说明的是,术语“竖直”、“上”、“下”、“水平”等指示的方
位或者位置关系为基于附图所示的方位或者位置关系,仅是为了便于描述本实用和简化描
述,而不是指示或者暗示所指的装置或者元件必须具有特定的方位,以特定的方位构造和
操作,因此不能理解为对本发明的限制。此外,“第一”、“第二”、“第三”、“第四”仅用于描述目的,而不能理解为指示或者暗示相对重要性。
参考图1,工业相机包括sensor传感器、fpga、网络物理接口芯片、存储外设和固件系统;
sensor传感器设置于fpga的输入端一侧为fpga提供输入信号,同时sensor传感器将数字图像数据输出给fpga;
fpga提供sensor所必须的时序信号,接收来自sensor的并行数字图像数据,完成必要的图像预处理功能,例如自动模式的灰度统计、图像条纹处理等;
网络物理接口芯片用于连接fpga主芯片与主机,本发明采用phy接口芯片完成数据通过gige总线到主机的传输;
存储外设包括ddr以及flash芯片,ddr与fpga连接,用于缓存图像数据,flash芯片与fpga芯片相连,存放内容包括固件程序、fpga程序以及掉电需要保存的寄存器;
固件系统由fpga的microblaze实现,主要功能包括:提供上层控制通路;提供初始化过程控制;完成fpga和sensor的初始化设置、sensor寄存器读写,fpga寄存器访问;完成网络参数(ip地址)设置、参数保存、导入等。
固件系统作为相机的主控模块,需要响应fpga发出的中断,解析由pc机发送的网络包,并生成响应包,通过fpga和phy芯片发送给pc机。固件还需要根据对网络包的解析,对相机前端(包括fpga实现的寄存器和ad芯片的寄存器)的寄存器进行读写,完成控制图像采集的操作。同时固件还应该能根据fpga发出的事件中断,生成事件消息以反映相机当前的工作状态,发送到pc机。
参考图2及图3基于千兆网的工业相机固件系统,包括主循环模块、中断服务模块和驱动模块;主循环模块包括初始化模块、超时处理模块和图像处理模块,中断服务模块包括事件处理模块和网络模块,网络模块包括gvcp模块、arp/icmp模块、dhcp和lla模块,驱动模块包括ad驱动、flash驱动、定时器和fpga寄存器接口;
初始化模块用于主循环模块、中断服务模块、事件处理模块和驱动模块进行初始化,并且启动主循环模块;
事件处理模块,为中断服务模块调用,便于对事件进行快速处理;
超时处理模块和图像处理模块设置在主循环模块内,减少中断处理时间;网络模块,为中断服务模块和初始化模块所调用;
中断服务模块,用于在cpu发生中断时,响应该中断而执行中断服务例程,并且在中断处理完成后,控制回到主循环的中断处继续执行主循环;
驱动模块作为其他模块与寄存器、存储单元之间的接口。
一种基于千兆网的工业相机固件系统实现方法,包括以下步骤:
初始化步骤:用于主循环模块、中断服务模块、事件处理模块和驱动模块进行初始化,并且启动主循环模块;
事件处理步骤:为中断服务模块调用,便于对事件进行快速处理;
超时处理和图像处理步骤:减少中断处理时间;
中断服务步骤:用于在cpu发生中断时,响应该中断而执行中断服务例程,并且在中断处理完成后,控制回到主循环的中断处继续执行主循环。
初始化步骤包含以下内容:
1)flash驱动的初始化;
2)sensor传感器的初始化;
3)加载出厂参数:从flash指定地址读取对应长度的数据,赋值给相应的参数结构体;而对于sensor或fpga寄存器初始化相关参数时,需要将对应参数加载到对应的sensor/fpga地址中;
4)加载出厂/用户参数组:涉及sensor和fpga寄存器的参数需要加载对应值到sensor和fpga寄存器中;
5)如果加载出厂参数或出厂/用户参数组失败,则相机跳转进入出厂程序运行;
6)dna校验:从flash中读取dna字段,与fpga的dna寄存器值经运算后进行比较,如果一致则校验通过;如果dna校验未通过,相机打开设备时会提示dna校验的错误码,无法打开设备。
中断服务步骤包含以下中断处理:
1)看门狗超时中断:看门狗超时中断不进行其他任何操作,直接清除中断;
2)linkdown中断:相机拔掉网线时发生掉线中断,如果发生掉线中断,则需要设置相机为掉线状态,并清除心跳,执行停流停采、清除消息通道和控制通道,清除ip信息;
3)事件中断:相机与上层之间存在事件交互,当fpga检测到有事件发生时,会给固件事件中断,固件根据发生的事件类型,填充事件包,并发送事件包给主机;
4)rx数据中断:网络中存在多种数据包,当fpga对收到的数据包进行条件过滤,认为是相机该处理的数据包时,会通过中断的方式通知固件;fpga有两个rxram,用来存放收到的数据包,分别对应两个rx中断位,固件收到rx中断后,从对应序列号的rxram中读取数据包,根据千兆网进行解析,并进行不同的处理,相应不用的命令;如果是处理时间较长的命令,则加入任务队列,在主循环中处理;rxram中的命令处理完成后,清除对应的rx中断,此时fpga会清除当前处理的rxram,以便存放新的数据包;
5)事件超时中断:发送事件数据包之后,会开启时间超时中断;如果事件需要回复ack,在超时时间内没有收到应答包,则fpga会产生事件超时中断;固件收到时间超时中断后,会重置事件ack超时寄存器,如果没有达到事件重发次数,会重发此事件;如果超过事件重发次数,则丢弃当前事件。
主循环主要执行的操作为:
1)根据网络连接状态进行ip配置;
2)处理gvcp和3a处理任务:中断中会有一些处理时间较长的任务,如读写flash,保存加载参数组;这些处理时间较长的任务就要加到任务队列中,在主循环进行处理;
3)看门狗喂狗:如果主循环处看门狗不喂狗,则看门狗超时复位,相机重新运行用户程序。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。