因为环境的特别性,不只要求设备具有较高的功用,也对设备的体积功耗等提出了严厉的要求。为增加体系运转的可靠性,硬件设备需尽或许的紧凑。在满意体系运转需求的前提下,硬件中分立元件越少越好。依据现场可编程门阵列(FPGA)的以太网规划是一个较好的解决方案。
SOPC Builder是一种特别的嵌入式体系,其是片上体系,即由单个芯片完结体系的首要逻辑功用,并具有灵敏的规划方法,可裁剪、可扩大和晋级、且具有软硬件在体系可编程功用。NiosⅡ嵌入式处理器是Altera公司推出的选用哈佛结构、具有32位指令集的第二代可编程软核处理器,其最大优势是模块化的硬件结构,在规划阶段依据实践需求来增减外设的品种和数量。LWIP是瑞士计算机科学院的Adam Dunkela等开宣布的一套用于嵌入式体系的开放源代码TCP/IP协议栈。一般状况下,LWIP既可移植到操作体系上,又可在无操作体系的状况下独立运转。LWIP完结的首要长处是在坚持TCP/IP协议首要功用的基础上,又减少了其对RAM的占用,这使得LWIP协议适合在嵌入式体系中运用。
1 移植进程及规划流程
1.1 体系的组成
以软核NiosⅡ为中心,在FPGA中树立存储器、DMA、三速以太网MAC等多种外设的SOPC体系,在片外装备三速以太网物理层芯片(PHY)。经过对TCP/IP协议栈的移植以及依据UDP协议的网络编程完结以太网运用。体系全体规划方案如图1所示,体系规划首要分全体硬件电路规划、依据FPGA的SOPC体系规划和体系软件规划。
1.2 体系硬件规划
硬件模块首要由FPGA模块、网络接口模块及电源模块等组成。中心器材是FPGA,其作为SOPC体系的搭载渠道,并对其他硬件进行操控。网络接口模块选用Marvell公司的三速以太网物理层芯片88e1111,硬件结构如图2所示。
1.3 运用SOPC Builder树立硬件环境
用SOPC Builder东西从NiosⅡ处理器内核和开发套件供给的外设列表中选取适宜的CPU,存储器以及各自的外围器材,并定制和装备其效果;分配外设地址及中止号;设定复位地址;最终生成体系。硬件开发运用Quanus II和SOPC Builder CUI处理器库挑选并装备外设。规划中除了必要的外设外还需增加MAC子层,MAC是以太网操控器的中心,首要供给与上层协议间的接口及与PHY设备间的介质无关接口,并对以太网数据包进行封装、解封装以及过错监测等。规划挑选三速以太网(10/100/1 000 Mbit·s-1)MAC,其结构如图3所示。
FIFO用于缓存接纳或发送的数据。规划选用M9K存储器块作为FIFO,设置发送FIFO为2 048×32 bit,接纳FIFO设置为512×32 bit,因体系首要用于向上位机传送数据并接纳上位机操控指令,因而接纳FIFO需求较小。
在与PHY通讯一侧,三速以太网MAC核供给RGMII接口,作业在全双工形式,并供给PHY办理接口。其间,PHY办理接口供给4个信号,分别是数据办理时钟MDC、办理数据输入MDIO_in、办理数据输出MDIO_out:以及办理数据输出使能MDIO_oen。因为在PHY芯片上只要时钟MDC和双向数据接口MDIO,所以MAC与PHY对接时中心需求一个双向三态缓冲器,衔接电路如图4所示。
1.4 体系软件规划LWIP的移植
LWIP的移植可分为两大类,第一类是只移植内核中心,此刻用户运用程序的编写只能依据raw/callback API进行;第二类是移植内核中心和上层API函数模块,此刻用户可运用3种API进行编程,即除了raw/callback API外,还有sequentia API和BSD-style socket API。本文进行的是第一种移植,该移植较为简略,移植者只需完结头文件的界说,一起依据运用的详细网卡状况完结ethernetif.c中函数的编写。
介绍LWIP的源代码结构。解压后,源代码目录共有doc、src和test 3个文件夹。其间,doc文件夹下包括了几个与协议栈运用相关的文本文档,较为重要的文件有两个:rawa pi.txt为告知读者怎么运用协议栈的raw/callback API进行编程,其经过直接与协议栈内核函数交互以完结编程;sys_arch.txt在移植时被运用到,其间描绘了移植阐明,规则了移植者需完结的函数、宏界说等。Test文件夹则是LWIP供给的一些协议栈的内核测验程序。文件夹src包括了协议栈内核的一切源代码。
在NiosⅡ中树立新工程,增加src\core文件夹下的一切文件,一起包括其下IPV4文件夹中的一切文件。应该留意,这儿增加了较多的文件,但其间有些是可条件编译的,如文件sys.c,若不供给操作体系模仿层的文件,则该文件不会被编译。接着增加netif文件夹中的loopif.c、etharp.c、ethernetif.c文件到工程中,一起在源文件目录下新建lwipopts.h、perf.h和cc.h这3个头文件,并一起将其添进工程。这3个头文件是内核要求用户在移植时需完结的头文件。
Cc.h文件首要完结协议栈内部运用的数据类型界说,用户应依据详细编译器和处理器特性界说这些数据类型的长度;此外,cc.h文件还要完结临界代码的维护、协议栈调试信息输出相关的宏和巨细端的界说等。
Perf. h文件是与体体系计和丈量相关的头文件,该头文件和渠道的处理器密切相关,本文渠道无需运用任何计算和丈量功用。因而,该头文件中的两个宏直接界说为空。
最终一个头文件lwipopts.h,其包括用户对协议栈内核的参数设置,在内核的opt.h文件中,包括了内核一切参数的默许装备,当用户在lwipopts.h中装备相关参数,若用户对某个参数未装备,则内核将运用opt.h中的默许值。需留意,在移植时从头界说某些内核参数是必要的,不然协议栈或许无法正常运转。