2个核4线程,每个核2.7GHz;
3MB缓存;
DDR3/DDR3L1333/1600。
8个TMS320C66xDSP核心,每核为1.00GHzand1.25GHz;320GMAC/160GFLOP@1.25GHz。32KBL1P,32KBL1D,512KBL2PerCore;4MBSharedL2;
64位DDR3-1600。
调用TI自带的ImgLib图像算法库函数,计算时间为6ms,经优化后计算时间可缩短为0.5ms。
GigE Vision是一种基于千兆以太信协议开发的相机接口标准。在工业机器视觉产品的应用中,GigE Vision允许用户在很长距离上用廉价的标准线缆进行快速图像传输。它还能在不同厂商的软、硬件之间轻松实现互操作。GigE Vision主要由四部分构成:
■基于UDP协议的GigE Vision控制协议(GVCP):该标准定义了如何对设备进行控制和组态。规定了相机和计算机之间发送图像及配置数据的流通道和机制;
■GigE Vision流控制协议(GVSP):该协议涵盖了数据类型的定义和通过GigE传输图像的方式;
■GigE设备发现机制:该机制提供了获取IP地址的方法;
■基于GenICam标准的XML描述文件:该数据表单提供了相机控制和图像数据流访问的权限。一般而言,像Basler、基恩士、DALSA这些工业相机公司均提供包含上述4个主要内容的SDK包,用户通过C#/C++调用SDK包里面的函数,即可实现相机参数的控制、图像数据流的读取。对于DSP系统而言,厂家是不提供SDK包的,为实现相机的接入,我们自己按照Gige协议标准、相机内部的寄存器地址及含义,用C语言重写了SDK包,具体包括MAC层驱动(同时含PA、EDMA、中断等)、GVCP协议、GVSP协议。具体可实现相机在TMS320C6678平台下的控制、数据接入,具体如下:
(1)相机IP地址的设定,然后初始化相机;
(2)图像常用参数的设置:分辨率、起始位置(X/Y)、增益、Gamma参数、曝光时间、触发类型(外触发、连续触发、软件触发)、触发滤波控制、白平衡。这些参数都以GVCP包的形式发送给相机,相机接收到以后写到相应寄存器里面并生效,然后相关状态又以GVCP包的形式返回给DSP,DSP收到以后做相应的判断。
(3)图像数据流的接收:数据包到达PHY以后,递交给DSP的网络交换子系统,然后递交给网络协处理器NETCP,此时NETCP中的PA做MAC地址、IP地址、端口号的比较,如果都匹配则触发网络中断。接收任务直接获取触发中断后的描述符,并取出描述符中对应缓存的数据。此时,由于网络头部的分析已经通过PA进行分析处理,则最后直接分析UDP包的数据部分。UDP数据的开始部分是GigE Vision的头部。此时直接分析包头,看是否是GVSP包,帧号和块号是否正确等等。如果都正确,此时直接以EMDA方式把数据传递到图像缓存,打包后塞入环形缓冲区供应用程序调用。
NDK实测的网络带宽不高且占有较高的CPU利用率,我们实际测试NDK在单核只接收的情况下,NDK的带宽只有30MB/s左右。通过分析NDK的源码我们发现NDK有三大缺点:
(1)NDK接收网络数据流时,首先将数据缓存到网络接收描述符里面,然后拷贝到NDK的缓冲区,最后再将其拷贝到应用程序的缓存里面。这种多次拷贝的方式效率低下,同时占用较多的内存,CPU及总线资源。
(2)NDK没有充分利用PA的性能。接收数据的时候只是做了广播MAC地址的判断,发送数据的时候没有使用PA进行校验和计算。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-25203-2.html
好呀
你也山寨吧