(3)不支持双网口编程。
因此,我们放弃使用NDK,自己重写和修改了网络协议栈,包括移植LWIP协议包,具体的工作如下:
在接收GIGE相机数据的时候,我们充分利用了PA的性能,最终触发中断的网络包就是我们实际需要的数据包。如果数据包不符合要求,PA就会直接将其丢弃,因此不用CPU去对数据包做判断,这样就降低了CPU的负荷。同时我们直接获取网络接收描述里面缓存的数据,这样就减少了对内存的使用量。因此,DSP能够做到实时接收相机发送过来的数据。
在使用LWIP将数据发送给PC的时候,所有网络包的校验和计算都是通过PA进行计算的,这样就不用CPU来参与计算。我们实际测试,在单核只发送的UDP包的情况下,网络带宽能到达到110MB/S。这样我们就能够做到实时发送相机传递过来的数据。进过实际测试,DSP同时收发数据能够达到65MB/S。通过充分利用DSP硬件资源,精心的软件规划及系统配置使得DSP能够做到实时接收相机发送过来的数据。
TMS320C6678作为TI刚推出的高端DSP器件,其配套软件要落后于硬件的发展,具体而言,软件开发的主要内容包括:
(1)BOOT实现
(2)外设驱动
(3)配置.cfg文件
(4)软件框架建立
(5)算法接口实现
我们做的工作如下:
首先,我们简化了PC端的软件安装步骤,避免用户进行繁琐的软件安装操作。我们将开发TMS320C6678所需要使用的CCS v5.2.1,MCSDK v2.1软件及生成DSP上电自启动执行镜像所需的MinGW,Python 2.7等软件重新用C#打包封装成一个安装软件。用户只需双击运行我们提供的安装程序便可一键式完成PC端必备软件的安装。当然,我们的安装软件也提供可选择安装机制,对于有DSP开发基础的用户可以进行选择性安装某些软件,指定软件安装路径。
其次,我们提供简化了的,用于实现用户自己的应用程序能在TMS320C6678上boot的解决方案。我们在充分考虑了用户可能存在的各种需求的基础上对FMC6678的boot进行先行基本配置,使得FMC6678所带的16MB NOR FLASH, 64MB NAND FLASH 被分成四个区(三个供用户使用),每个区都可存放单核或者多核程序镜像。一个运行于PC端的人机交互友好的C#软件供用户选择将要进行boot的CCS生成的可执行文件及进行相关配置,FMC6678的FLASH内驻留一个对应的DSP程序,这两个程序将自动实现多核可执行镜像生成,程序烧写所需要的相关操作。因此,用户无需自己耗费精力研究TMS320C6678如何boot,同时该解决方案也屏蔽了为实现程序boot所要进行的复杂,繁多的操作,避免出错,简化了开发。
再次,我们提供FMC6678板卡相关外设驱动,如PCIe,UART, HyperLink,LED,SRIO,SPI,GPIO驱动程序等,使用户能够更专注于应用层程序开发而无需顾虑底层硬件细节的实现。
最后,我们提供两个面向视觉处理应用的基本软件平台供用户借鉴或进行二次开发。这两个软件平台具备较好的软件框架,内存布局,高速缓存配置,内核调度及通信机制,屏蔽了底层繁琐的硬件驱动及核与核之间的通信和同步机制取而代之的是简易的程序接口。TMS320C6678具有8个CPU(Core0~Core7),一套强大的网络协处理,4MB共享内存,多个Packet DMA及硬件管理的队列用于实现数据在DSP内部搬运。我们的规划是:Core7负责DSP与外界的数据交互,主要方式为运行LWIP协议将数据高速发出(最大速率60MB/S),运行LWIP协议或直接操作MAC实现gige协议来将数据接入DSP(最大速率110MB/S)。Core0---Core6运行OMP对数据进行并行计算(其中Core0为主控核)。Core7与Core0的数据交互采用共享内存(大量数据)及硬件Queue传递(目前40B数据量,可根据用户需要调整)相配合的方式。DSP系统的内存布局我们已经制定好,用户无需再次进行内存规划,简单修改工程下的.cfg文件就可对程序的各个段进行内存配置或不修改该文件使用默认配置也可以。更为详细的介绍请参考《面向多相机接入的TMS320C6678图像处理系统软件开发说明》。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-25203-3.html
跟中国实体经济不是因果关系
言辞得体
哈哈