一种基于PCIE卡高速数据传输的驱动方法技术

技术编号:18350162 阅读:51 留言:0更新日期:2018-07-01 23:11
本发明专利技术涉及数据传输技术领域,特别是一种基于PCIE卡高速数据传输的驱动方法。在初始化的过程中将DMA通道的地址和长度分别写入至平台系统中,并分配临时缓冲区;当相机采集到数据后,自动进行DMA传输,并在传输完成后反馈DMA中断至驱动;当驱动收到DMA中断后,将图像数据从DMA地址搬移到临时缓冲区中;在上层软件下发取像指令至驱动后,对上层软件下发的数据长度和存放地址进行解析;拷贝临时缓冲区的数据至指定地址,完成图像数据从相机到上层软件的传输。在驱动中采用了多块虚拟地址交替使用的环形内存数据块和采用固定DMA通道地址与长度进行数据传输,减少与硬件的交互次数,使数据传输的逻辑更简洁,数据传输效率更高。

【技术实现步骤摘要】
一种基于PCIE卡高速数据传输的驱动方法
本专利技术涉及数据传输
,特别是一种基于PCIE卡高速数据传输的驱动方法。
技术介绍
在现有的PCIE数据传输中大多基于Windriver的用户层开发,该类型的驱动具有一定的局限性,1、要依赖于第三方的工具库(Windriver),对于后期的维护不方便;2、DMA通道(大数据专用传输通道)的大小的局限性比较大,该类型的驱动分配大空间通道容易失败,从而造成数据进行传输时效率会受到影响;3、流程控制方面,由于在用户层开发,灵活性、快捷性都会受到影响,比如某一个事件在内核层已经可以处理掉,但基于用户层开发时必须要与上层交互才能处理。
技术实现思路
为解决上述技术问题,本专利技术的目的在于提供一种DMA的带宽局限性小、数据传输效率高的基于PCIE卡高速数据传输的驱动方法。本专利技术一种基于PCIE卡高速数据传输的驱动方法的技术方案为:在初始化的过程中将DMA通道的地址和长度分别写入至平台系统中,并分配临时缓冲区;当相机采集到数据后,自动进行DMA传输,并在传输完成后反馈DMA中断至驱动;当驱动收到DMA中断后,将图像数据从DMA地址搬移到临时缓冲区中;在上层软件下发取像指令至驱动后,对上层软件下发的数据长度和存放地址进行解析;拷贝临时缓冲区的数据至指定地址,完成图像数据从相机到上层软件的传输。进一步的,在将DMA通道的地址和长度分别写入至平台系统之前,判断DMA通道带宽和要分配的带宽是否一致,若一致则将DMA通道的地址和长度分别写入至平台系统中,若不一致则重新分配DMA通道后再将DMA通道的地址和长度分别写入至平台系统中。进一步的,所述相机将采集的数据传输至驱动的过程与从驱动中将数据传输至上层软件的过程并行进行。进一步的,所述拷贝临时缓冲区的数据至指定地址前,判断临时缓冲区中是否存在没有传输到上层软件的数据,如果有则拷贝临时缓冲区的数据至指定地址,如果无则进行连续判断,当连续多次判断仍然没有数据存在时,则反馈数据传输失败信号至上层软件。进一步的,所述相机将采集的数据传输至驱动的过程如下:当A>B且A=an+Length2AB时;若B=a1,则相机数据经过DMA搬移需要等待到B不小于a2的值后再进行数据搬移,搬移完成后A值为a2,若B>=a2,则直接进行数据搬移,搬移完成后A值为a2,当A>B且A!=an+Length2AB时,直接进行数据搬移,搬移完成后A值为A+Length2AB;当A==B时,若C>0,则等待上层软件取走一块数据后再次进行搬移,否则直接进行数据搬,移搬移完成后A值为A+Length2AB;当A<B时,直接进行数据搬移,搬移完成后A值为A+Length2AB;每次数据搬移完成后,C+1;其中,A为临时缓冲区保存数据后的结束地址值,B为上层软件每次数据获取完成后在临时缓冲区的结束地址值,C为缓冲区中存放的图像数据块数,an为将临时缓冲区平均分为n段后,第n段的起始地址,a1和a2分别为将临时缓冲区平均分为n段后,第一段的起始地址和第二段的起始地址,所述临时缓冲区内存长度为DMA长度n倍,Length2AB为DMA长度。进一步的,所述从驱动中将数据传输至上层软件的过程如下:当A>B时,直接进行数据拷贝,拷贝完成后B=B+Length2AB;当A==B时,若C>0,则直接进行数据拷贝,否则等待C>0时再进行数据拷贝,拷贝完成后B=B+Length2AB;当A!=B时,直接进行数据拷贝,拷贝完成后B=B+Length2AB;每次数据拷贝完成后,C-1;其中,A为临时缓冲区保存数据后的结束地址值,B为上层软件每次数据获取完成后在临时缓冲区的结束地址值,C为缓冲区中存放的图像数据块数,Length2AB为DMA长度。本专利技术的有益效果是:在驱动中采用了多块虚拟地址交替使用的环形内存数据块和采用固定DMA通道地址与长度进行数据传输,减少与硬件的交互次数,使数据传输的逻辑更简洁,数据传输效率更高,增强数据传输的稳定性,减少取像时间为工业生产时节省了生产作业时。附图说明图1为驱动在运用中的结构图;图2为取像驱动流程示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。此外,下面所描述的本专利技术各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。如图1所示,该驱动是上层应用软件(PPC)和二代硬件平台的衔接部分,起到承上启下的作用。1、首先根据硬件ID关联硬件设备与驱动,PCIE驱动根据(自动光学检测系统)硬件平台PCIE取像卡的硬件标示识别硬件平台,PCIE驱动会在安装时根据硬件设备的唯一表示ID和硬件进行关联,其中硬件的ID可以根据不同版本的硬件自行协商定义;2、承接应用软件信息并分析处理,PCIE驱动接收上层应用软件(PPC软件)的信息,并对该信息进行解析,然后根据解析的信息对硬件做相应的操作(比如:a、PPC要获取第几个相机的什么类型的图像,驱动解析出信息后,通知硬件平台进行第几个相机的同类型图像的数据拍摄;b、PPC要配置某一个相机的参数,驱动解析出对应的地址和参数后把参数写入硬件平台,并通知硬件平台开始参数配置);3、直接与硬件进行交握,PCIE驱动获取硬件发送过来的中断信息,根据中断信息的不能,对数据做不同的处理,然后反馈到上层应用(PPC)软件(比如:收到数据传输完成的中断,驱动把对应的物理内存的数据搬到临时环形缓冲区内,并通知PPC软体把对应的图像数据取走)。如图2所示,取像驱动流程主要包括初始化、相机数据到驱动和驱动数据到上层PPC软件三大块,其中相机数据到驱动和驱动数据到上层PPC软件并行运行。初始化过程如下:程序初始化时,需要对DMA通道进行分配。在通道DMA重新分配之前,会对当前已经有的通道进行判断,判断的依据是当前已经存在的DMA通道带宽和要分配的带宽是否一致。如果一致就不用重新分配,而在实际工业生产应用中,一条生产线中的驱动程序所要使用的DMA通道的大小是固定不变的,因此,只要在PC电脑开机时分配一次DMA通道即可(DMA内存空间和长度分别为adress2AB,length2AB),此时的PC电脑的内存空洞非常小,不会出现分配失败的现象。经过验证,基本4GB的内存可以保证71M的DMA通道带宽分配成功,由于约定的每次传输数据的长度是不变的,且DMA通道地址有事固定的,因此会把DMA通道的地址和长度(adress2AB,length2AB)分别写入到平台系统中;其次,需要分配临时缓冲区(使用ExAllocatePool函数分配,缓冲区记为BufferAdress)作为从硬件平台获取图像数据后临时存放内存,大小相当于是n倍(n大小根据具体情况设定)的DMA带宽。相机数据到驱动过程如下:1、驱动中设有中断监测进程,凡是平台系统发过来的中断,在该进程里面都可以监测到,由于DMA通道的地址和长度在初始化时已经传输到硬件平台,因此当相机采集到数据后,平台系统会自动进行DMA传输,当传输完成后平台系统会本文档来自技高网...
一种基于PCIE卡高速数据传输的驱动方法

【技术保护点】
1.一种基于PCIE卡高速数据传输的驱动方法,其特征在于:在初始化的过程中将DMA通道的地址和长度分别写入至平台系统中,并分配临时缓冲区;当相机采集到数据后,自动进行DMA传输,并在传输完成后反馈DMA中断至驱动;当驱动收到DMA中断后,将图像数据从DMA地址搬移到临时缓冲区中;在上层软件下发取像指令至驱动后,对上层软件下发的数据长度和存放地址进行解析;拷贝临时缓冲区的数据至指定地址,完成图像数据从相机到上层软件的传输。

【技术特征摘要】
1.一种基于PCIE卡高速数据传输的驱动方法,其特征在于:在初始化的过程中将DMA通道的地址和长度分别写入至平台系统中,并分配临时缓冲区;当相机采集到数据后,自动进行DMA传输,并在传输完成后反馈DMA中断至驱动;当驱动收到DMA中断后,将图像数据从DMA地址搬移到临时缓冲区中;在上层软件下发取像指令至驱动后,对上层软件下发的数据长度和存放地址进行解析;拷贝临时缓冲区的数据至指定地址,完成图像数据从相机到上层软件的传输。2.如权利要求1所述基于PCIE卡高速数据传输的驱动方法,其特征在于:在将DMA通道的地址和长度分别写入至平台系统之前,判断DMA通道带宽和要分配的带宽是否一致;若一致则将DMA通道的地址和长度分别写入至平台系统中;若不一致则重新分配DMA通道后再将DMA通道的地址和长度分别写入至平台系统中。3.如权利要求1所述基于PCIE卡高速数据传输的驱动方法,其特征在于:所述相机将采集的数据传输至驱动的过程与从驱动中将数据传输至上层软件的过程并行进行。4.如权利要求1所述基于PCIE卡高速数据传输的驱动方法,其特征在于:所述拷贝临时缓冲区的数据至指定地址前,判断临时缓冲区中是否存在没有传输到上层软件的数据;如果有则拷贝临时缓冲区的数据至指定地址;如果无则进行连续判断,当连续多次判断仍然没有数据存在时,则反馈数据传输失败信号至上层软件。5.如权利要求1所述基于PCIE卡高速数据传输的驱动方法,其特征在于,所述相机将采集的数据传输至驱动的过程如下:当A>B且A=an+Length2AB时;若B=a1,则相机数据经过DMA搬移需要等待到B不小于a2的值后再进行数据搬...

【专利技术属性】
技术研发人员:郭世泽
申请(专利权)人:武汉精测电子集团股份有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1