基于PCIe总线的CameraLink数据传输方法、装置及存储介质
技术领域
本发明涉及数据高速采集和传输
技术领域
,特别涉及一种基于PCIe总线的CameraLink数据传输方法、装置及存储介质。背景技术
中国工业相机市场规模整体保持上升趋势。工业4.0离不开智能制造,智能制造离不开机器视觉。机器视觉是实现工业自动化和智能化的重要手段之一,相当于人类视觉在机器上的延伸。而视觉则无法离开工业智能相机。工业相机行业的渗透率较低,具有较高的成长性。图像采集卡作为机器视觉系统中的必须品起到了将相机图像数据传输到用户电脑的作用,国内机器视觉用户期望一款通用功能的图像采集卡,可以适配市面上常见的线阵相机和面阵相机,提供丰富的硬件触发接口来定制图像采集的模式,提供SDK接口函数供用户二次开发程序。
现有技术不足之处在于,目前还不存在稳定工作的相关技术和设备,可以传输图像数据到PC内存中,同时支持使用虚拟串口技术来和CameraLink相机进行实时通讯。
发明内容
本发明的目的克服现有技术存在的不足,为实现以上目的,采用一种基于PCIe总线的CameraLink数据传输方法、装置及存储介质,以解决上述背景技术中提出的问题。
一种基于PCIe总线的CameraLink数据传输方法,具体步骤包括:
预装PCIe设备驱动,在设备驱动初始化过程中,申请若干个内核缓冲区、至少两个DMA引擎,以及BAR空间资源和中断资源;
每个PCIe设备自动安装虚拟串口驱动,虚拟串口驱动对每个PCIe设备申请唯一的串口号和串口中断资源;
虚拟串口设备模拟至少两个串口设备,并通过共享读写内核缓冲区绑定虚拟串口设备和PCIe采集设备;
确定PCIe采集设备驱动分别进行CameraLink控制数据和图像数据的上传和下载。
作为本发明的进一步的方案:所述两个串口设备包括用于被用户读写访问的公有串口设备和用于被PCIe设备读写访问的私有串口设备。
作为本发明的进一步的方案:所述通过PCIe采集设备驱动进行CameraLink控制数据的上传和下载的具体步骤包括:
虚拟串口收到写入端口请求包后,将待写入的数据封装到PCIe请求包中,并发送至PCIe采集设备驱动;
PCIe采集设备收到该PCIe请求包后解析请求内容,并将待写入的数据通过BAR空间传输给下位机;
当下位机收到一定量的数据后,即通过DMA0通道写入到内核缓冲区0中,并通过中断信号,告知PCIe采集设备驱动程序;
当PCIe采集设备驱动收到中断信号后,解析当前内核缓冲区0中的有效数据,并通过写入端口请求包发送给私有串口设备;
当私有串口设备收到写入端口请求包之后会检测公有串口设备是否有挂起的读取请求;
若存在则将有效数据填充到读取请求的缓冲区中并完成该请求,若不存在则丢弃数据。
作为本发明的进一步的方案:所述通过PCIe采集设备驱动进行CameraLink图像数据的上传的具体步骤包括:
当下位机开始采集时,PCIe采集设备驱动会复位环形缓冲区的读写指针;
每当下位机完成一个缓冲区的传输后,通过中断信号告知PCIe采集设备驱动,PCIe采集设备驱动将写入指针加1;
每当PCIe采集设备驱动完成一个从内核缓冲区到用户缓冲区的数据传输,将读取指针加1;
当读写指针接近重叠时,PCIe采集设备驱动停止数据传输,直到使得内核缓冲区有充足的空闲缓冲区后,再重新进行数据传输。
一种数据传输装置,还包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如上任一项所述一种基于PCIe总线的CameraLink数据传输方法。
一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于实现如上任一项所述一种基于PCIe总线的CameraLink数据传输方法。
与现有技术相比,本发明存在以下技术效果:
通过采用上述的技术方案,利用预装PCIe设备驱动,同时在初始化过程中,申请内核缓冲区、DMA传输引擎、BAR空间资源和中断资源。再通过参数设置,图像数据通过DMA通道0由下位机传输到电脑内核缓冲区中,电脑接受到中断信号后将图像内存拷贝到用户内存;控制数据通过DMA通道1由下位机传输到电脑内核缓冲区中,电脑接受到中断信号后将控制数据拷贝到串口内存中。从而实现了能够传输图像数据到电脑内存中,并支持使用虚拟串口技术来和CameraLink相机进行实时通讯。同时节约了电脑端的数据传输时间和CPU使用率,可以满足机器视觉高速数据传输的需求。
附图说明
下面结合附图,对本发明的
具体实施方式
进行详细描述:
图1为本申请公开的一些实施例的基于PCIe总线的CameraLink数据传输方法的步骤示意图;
图2为本申请公开的一些实施例的基于PCIe总线传输CameraLink控制数据的流程框图;
图3为本申请公开的一些实施例的基于PCIe总线传输CameraLink图像数据的流程框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,本发明实施例中,一种基于PCIe总线的CameraLink数据传输方法,具体步骤包括:
S1、预装PCIe设备驱动,在设备驱动初始化过程中,申请若干个内核缓冲区、至少两个DMA引擎,以及BAR空间资源和中断资源;
具体实施方式中,在初始化过程中,申请N个内核缓冲区,申请两个DMA引擎。
S2、每个PCIe设备自动安装虚拟串口驱动,虚拟串口驱动对每个PCIe设备申请唯一的串口号和串口中断资源;
S3、虚拟串口设备模拟至少两个串口设备,并通过共享读写内核缓冲区绑定虚拟串口设备和PCIe采集设备;
具体实施方式中,所述两个串口设备包括用于被用户读写访问的公有串口设备和用于被PCIe设备读写访问的私有串口设备,即Public COM和Private COM。
S4、通过PCIe采集设备驱动分别进行CameraLink控制数据和图像数据的上传和下载。
S41、进行CameraLink控制数据的上传和下载的具体步骤包括:
如图2所示,图示为控制数据的上传和下载的流程图。
虚拟串口收到写入端口请求包(Write COM IRP)后,将待写入的数据封装到PCIe请求包中,并发送至PCIe采集设备驱动;
PCIe采集设备收到该写入PCIe请求包后解析请求内容,并将待写入的数据通过BAR空间传输给下位机;
当下位机收到一定量的数据后,即通过DMA0通道写入到内核缓冲区0中,并通过中断信号,告知PCIe采集设备驱动程序;
当PCIe采集设备驱动收到中断信号后,解析当前内核缓冲区0中的有效数据,并通过写入端口请求包(Write COM IRP)发送给私有串口设备(Private COM);
当私有串口设备(Private COM)收到写入端口请求包(Write COM IRP)之后会检测公有串口设备(Public COM)是否有挂起的读取请求;
若存在则将有效数据填充到读取请求的缓冲区中并完成该请求,若不存在则丢弃数据。
S42、所述通过PCIe采集设备驱动进行CameraLink图像数据的上传的具体步骤包括:
如图3所示,图示为图像数据的上传流程图。
当下位机开始采集时,PCIe采集设备驱动会复位环形缓冲区的读写指针;
每当下位机完成一个缓冲区的传输后,通过中断信号告知PCIe采集设备驱动,PCIe采集设备驱动将写入指针加1;
每当PCIe采集设备驱动完成一个从内核缓冲区到用户缓冲区的数据传输,将读取指针加1;
当读写指针接近重叠时,PCIe采集设备驱动停止数据传输,直到使得内核缓冲区有充足的空闲缓冲区后,再重新进行数据传输。从而避免读写内存访问冲突。
一种数据传输装置,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如上所述一种基于PCIe总线的CameraLink数据传输方法。
上述方法实施例中的内容均适用于本装置实施例中,本装置实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于实现如上所述一种基于PCIe总线的CameraLink数据传输方法。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定,均应包含在本发明的保护范围之内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种实现SPI从设备主动申请传输的方法