基于DSP6678实现多任务以太网络数据传输

    王谦+田欢

    

    

    摘要:文章基于DSP TMS320C6678和SYS/BIOS系统实现多进程以太网络收发功能。文章首先介绍了TMS320C6678的特性和架构,实现网络开发所需要的软件环境:CCS V5,SYS/BIOS 6和NDK,最后重点介绍多任务以太网数据传输的实现方法。

    关键词:DSP6678;以太网;SYS/BIOS;NDK;UDP

    在某型号雷达系统中信号处理板与多个分系统进行通信采用以太网络进行数据传输,一般信处板上的可编程器件如DSP或者FPGA不易实现这种多线程功能,传统的解决方法是另配一个单板机来完成此功能。这种方法缺点有2个:一是提高了近1倍的硬件成本;二是增加了系统复杂程度,降低了可调试性和可靠度。在本方案中使用TI公司最新推出的DSP处理器TMS320C6678,通过使用实时操作系统SYS/BIOS 6和TI网络开发工具(NDK)可以很方便地实现多任务的网络通信功能,同时,作为新一代的多核DSP处理器,可以仅使用一个核来专门完成网络功能,而不影响其他的核完成信号处理功能。

    1器件架构

    DSP TMS320C6678是一款超高性能支持定点和浮点运算的DSP处理器,它基于Ti公司的KeyStone多核架构,工作时钟最高能达到1.25GHz。该DSP拥有8个独立的具有全处理功能的核(Core),每个核内包括的一级程序存储器(L1P)32KB和一级数据存储器(L2D)32KB以及512KB的二级缓存(SL2)。除此之外的8个核心共享4096KB的共享内部存储器(MSM)和最多配至2GB的外部DDR3存储器。整个芯片提供320G MAC定点计算或者160GFLOP浮点计算能力,与此同时,还具有丰富的外设接口,包括SerialRapidlO,PCIe,HyperLink,Gigabit Ethernet,EMIF,12C等接口用于数据传输。作为Ti公司新一代主推的DSP,对多核的支持与运算能力的提高,使其能更好地实现复杂的并行运算能力,在未来高速信号处理应用中具有广泛的前景。

    网络协处理器(NETCP)是一个主要处理以太网数据包的硬件加速器。它具有2个千兆网络模块(GbE)用来收发符合IEEE 802.3协议的以太网数据,1个包加速器(PA)模块用来完成一些传统的操作例如字头匹配、包修正等功能,还有1个安全加速器(SA)用来对数据包加密。NETCP可以从以太网接收数据,也可以通过包DMA(PKTDMA)方式从DSP或其他外设传递包数据。NETCP功能模块如图1所示。

    2软件开发环境

    SYS/BIOS是一款实时多线程操作系统。它的所有功能模块都可以选择加载以获得最小的内存和CPU开销。为了应对不同的应用,该系统提供了硬件中断、软件中断、任务和空闲4种类型的线程,可以根据需要的优先级和允许阻塞情况来使用这些线程类型。该系统可以很好地支持C/C++语言。

    NDK是用来在KeyStone设备上实现以太网程序的一个开发平台,其运行基于SYS/BIOS实时操作系统。它包括了所有以太网开发需要的硬件驱动和用户接口(Socket),以及各层协议实现:应用层HTTP,DNS;传输层UDP,TCP;网络层IP,ICMP;数据链路层PPP,PPPOE等。

    CCS V5.x是新一代的TI DSP开发环境,基于开源软件WorkBench设计。对DSP进行代码编译,在线调试均可以在CCS环境内完成。在编写代码前首先要进行工程配置,加载SYS/BIOS和NDK,以及对其必需的模块进行选择加载,对内存分配进行管理,设置主进程和中断。

    3软件架构及实现

    在本方案中要通过交换机实现对多个终端的以太网数据传输,每个终端具有不同的IP地址和端口号。按照终端的类型收发需求和传输协议可以将网络套接字(Socket)分为3类:(1)按照UDP协议发送数据。(2)按照组播协议发送数据。(3)按照UDP协议接收/发送数据。每一种终端类型需要对Socket进行不同的配置,并且每个Socket能独占一个进程以致相互之间不受影响。由于一些器件的初始化程序只能在Core0上完成,所以使用Core0作为专门的网络数据处理核,Core0与其他核进行数据交换在约定的公共存储区上完成。由于项目对网络实时性要求不严格,故数据收发能采用循环查询的方式进行。基于以上要求设计了如图2所示的软件实现流程。

    在NDK中通过函数DaemonNew()建立Socket进程,在该函数中定义了Socket类型、端口号和触发函数。当后台程序接收到对应端口号的IP包后,会执行一次触发函数。对于只进行发送的Socket(1类、2类),由于不会接收任何IP包,也就不会进入到触发函数。为了解决这个问题,只能借用具有接收数据的Socket(3类)来完成触发动作。基于此设计了如图3所示的实现方案。

    Socket3进程建立后即处于等待接收状态,当第一次收到外部IP数据包输入的时候,除了完成自身的发送任务之外,向其他Socket分别发送一包内容为空的数据,使之打开任务进程。Socket1和Socket2在进程中通过循环等待发送许可的方式进行数据发送,需要注意的是每次循环中需要插入一个Task sleep语句以保证该进程对CPU资源有一定的释放时间,用以保证其他进程的运行。

    通过运行试验,该实现方法能初步满足项目的设计要求,但是由于对新器件的使用还处于初始阶段,后期运行的稳定性及误码率等指标还有待进一步试验测试。

相关文章!
  • 融合正向建模与反求计算的车用

    崔庆佳 周兵 吴晓建 李宁 曾凡沂<br />
    摘 要:针对减振器调试过程中工程师凭借经验调试耗时耗力等局限性,引入反求的思想,开展了

  • 风廓线雷达有源相控阵天线研究

    罗琦史冰芸摘要:风廓线雷达有源相控阵天线可以显著避免来自地杂波的干扰,非常适用于气象领域。文章从系统整体设计、天线辐射模块方案、

  • 基于MATLAB 的信号时域采样及

    唐敏敏 张静摘要:频率混叠是数字信号处理中特有的现象,发生频率混叠后,信号会分析出错误的结果。而采样过程中,由于频率不够高,采样出