Board logo

标题: 基于嵌入式Linux和FPGA的千兆网数据传输的实现 03 [打印本页]

作者: samwalton    时间: 2013-7-22 12:37     标题: 基于嵌入式Linux和FPGA的千兆网数据传输的实现 03

.5 千兆三态以太网硬核的配置
  三态以太网TEMAC (Tri-Mode Ethernet Media Access Controller)是嵌在FPGA内部的硬核。本论文通过LocalLink总线使其连在内存控制器MPMC上,采用SDMA方式,使得数据直接从内存到网络接口而不必经过PowerPC的搬运, 这样在很大程度上减轻了CPU的负担,提高了数据传输速度。
  4 板级支持包的生成
  4.1板级支持包工具的选择和设置
  先在http://git.xilinx.com/网站上下载device-tree.git,它是板级支持包(BSP)生成工具。解压后放在EDK安装目录下的EDKswlibbsp,之后点击Software-->
  Software Platform Settings就可以发现并选择它了,如图5所示。

  图5 板级支持包工具的选择
  在device-tree下要把 bootargs的设置成console=ttyUL0,而不是默认的console =ttyS0,否则超级终端将没有输出。这是因为我们在调试时需要RS232串口作为超级终端,用的是XPS UART Lite核,但板级支持包默认的却是UART16500核。
  4.2 dts(device tree)文件的生成
  xilinx.dts文件是板级支持包工具device tree生成的,它记录了硬件信息。正是这个文件的存在操作系统才能知道本系统有哪些硬件及其属性。在EDK菜单中选择Software-->generate Libraries and BSP就会生成xilinx.dts文件。
  5嵌入式Linux的移植
  5.1安装用于PowerPC的交叉编译链并设置环境变量
  先下载并安装德国DENX公司提供的开发环境编译套件ELDK4.1,用source 命令设置路径和交叉编译环境变量,再用export ARCH=powerpc命令使其支持PowerPC架构。
  5.2 准备Linux内核及根文件系统
  这不是一般的Linux内核,而是专门针对Xilinx FPGA的linux-2.6-xlnx.git。可以到git.xilinx.com网站下载最新版本的Linux内核。在http://xilinx.wikidot.com/网上下载根文件系统镜像压缩文件ramdisk.image.gz,把ramdisk.image.gz拷贝到内核文件夹的arch/powerpc/boot文件夹中。
  5.3准备 device tree文件
  需要把把EDK工程中板级支持包工具生成的xilinx.dts复制到嵌入式Linux内核文件夹arch/powerpc/boot/dts中,这样linux才能根据这个文件给硬件设备添加相应的驱动。
  5.4内核的裁剪与定制
  用命令make 40x/ virtex4_defconfig载入ML405开发板的内核配置,再用make menuconfig打开内核定制图形界面进行裁剪和定制,使满足自己的特定需求,需要选上TCP/IP协议。如果需要调试就要把串口驱动 xilinx uartlite serial port support选上。这样才能使用RS2323作为超级终端。保存配置后用make zImage命令就可以生成内核镜像文件了。
  6 测试结果与分析
  在EDK中选把硬件文件烧录到FPGA中, 把Linux镜像文件下载到内存中运行,这样一个系统就能运行起来了。编写一个基于socket的网络通信程序,把FPGA作为客户端,把PC机作为服务器端,从FPGA不断的向PC发送基于TCP协议的数据包,来测试每次发送的数据包大小和传输速度之间的关系。当发送的数据包大小为30000Byte时,用tcp/ip协议传输的速率是70Mb/s,用udp协议传输的速率是135Mb/s。
  在一定范围内,每次发送的数据包越大,则网络传输速率就越大。传输的速度即与powerpc、内存、内部总线的频率及位宽有关系,也与操作系统及应用程序有关系。
  7结束语
  本文详细的介绍了基于Linux和FPGA的嵌入式千兆网数据传输的实现方法,测试结果表明传输速度能满足设计指标。由于FPGA和linux都具有很大的灵活性,会给将来系统的升级和变更带来很大方便。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0