微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于TMS320的以太网通信程序设计

基于TMS320的以太网通信程序设计

时间:04-01 来源:互联网 点击:

的交互,而EMAC驱动程序为用户程序提供了以太网通信接口。

3.1 MDIO驱动模块的设计

MDIO模块主要负责搜索、配置和监控外部以太网物理收发芯片。该模块主要包括如下几个部分:MDIO硬件初始化;PHY芯片搜索和配置;PHY芯片状态监控。详细的设计描述如下:

3.1.1 MDIO硬件初始化

MDIO硬件初始化包括如下步骤:

1)读取C6455设备状态寄存器(DEVSTFAT)中的MACSEL位,确定EMAC与PHY芯片之间的连接方式。文中所涉及的信号处理板上的C6455 EMAC与PHY芯片之间采用GMII方式连接。

2)初始化MDIO状态机,将状态机置为初始化状态。

3)配置MDIO访问PHY芯片的时钟并使能MDIO模块。

3.1.2 PHY芯片搜索和配置

由于PHY芯片的搜索过程并无确定的时间,因此PHY芯片搜索和配置的实现采用状态机来实现,该状态机每隔100 ms根据查询到的PHY芯片的状态完成相应的操作并更新到下一状态,如图5所示。PHY芯片的搜索经过芯片复位,通信速率自协商等过程,最终与通信对端建立以太网物理层连接。

3.1.3 PHY芯片状态监控

在以太网物理层链路的建立后,有可能由于用户拔出网线、对端机器改变通信接口速率等情况而导致链路状态改变,因此MDIO模块需要每隔一段时间对网络进行监控。文中设计的状态监控模块由DSP/BIOS操作系统每隔100 ms查询一次网络状态,状态监控程序一旦发现链路状态有所变化,则根据引起链路变化的不同原因,进入相应的处理流程。该流程如图5中“链路连接”状态以及相应的转移状态所示。

3.2 EMAC驱动模块的设计

EMAC驱动模块主要负责以太网数据包的接收和发送,它是以太网驱动程序的主要组成部分。该模块主要包括如下几个部分:EMAC硬件初始化;EMAC接收模块;EMAC发送模块。各个模块详细的设计描述如下:

3.2.1 EMAC硬件初始化

EMAC硬件初始化主要的目的是将EMAC模块置于就绪状态,此时EMAC已经可以接收和发送以太网数据包。初始化过程主要包括如下步骤:

1)禁止EMAC中断,复位EMAC的HDP寄存器、统计寄存器等,设置EMAC的MAC地址,挂接应用程序提供的回调函数等操作。

2)根据需求为发送模块和接收模块分配相应的包缓存描述符,并初始化接收模块的包缓存描述符,使之指向应用程序提供的数据接收存储块。文中设计的以太网驱动程序为接收模块分配了32个包缓存描述符,为发送模块分配了480个包缓存描述符,为发送和接收模块共分配了64块存储块,每个存储块大小为4 096个字节。图6是接收模块初始化完成后,接收描述符和接收存储块之间的关系。

如图6,文中用EMAC_Ch_Struct结构体涵盖了接收模块所用到的链表指针。其中,DescQueue表示空的接收存储块链表,EMAC在接收到一块数据时,启动EMAC内部的DMA,将数据放入当前描述符指向的存储块,并通过中断通知应用程序有数据到达;pDescFirst指向接收描述符链表的首地址,pDescLast指向接收描述符链表的末地址;pDescRead指向第一个可使用的描述符;pDescWrite指向最后一个可使用的描述符;

3)配置MAC的是否为多播地址,使能以太网中断,EMAC处于就绪状态。

3.2.2 EMAC接收模块

EMAC接收模块主要由EMAC中断来驱动。当EMAC硬件接收完一个或多个包数据时,会向DSP核发出一个接收完成中断。DSP核在接收到中断后,调用应用程序提供的接收数据回调函数处理接收到的数据,并返回给中断服务程序一个空闲的存储块,中断服务程序将该存储块重新链接到接收存储块链表,完成接收数据流程。

3.2.3 EMAC发送模块

EMAC发送模块主要由一个发送接口函数ethSendPacket(char*Buffer,int Length)构成,用户程序通过调用该函数完成以太网数据的发送。该函数参数中,Buffer表示应用程序需要发送的数据,Length表示发送数据的长度。该函数首先将Buffer中的数据拷贝到空闲的存储块,并将该储存块加入如图7所示的WaitQueue队列中,WaitQueue队列表示等待加入EMAC发送队列(DescQueue)的存储块。ethSendPacket函数接着检查EMAC发送队列DescQueue是否有空闲的发送描述符,如果有,将WaitQueue链表中的存储块加入到DeseQueue。EMAC硬件将通过相应的描述符,将DescQueue中的数据发送出去。

当数据发送完成后,EMAC向DSP核发出一个发送完成中断。发送完成中断服务程序将发送后的存储块从DescQueue中移除并交还给应用程序,然后将使用过的发送描述符置为空闲状态,以便下次发送数据时使用。

3.3 ARP/ICMP/UDP网络协议模块的设计

为了与上位机完成网络通信,信号处理机还必须提供基本的网络通信协议。文中在设计时,主要提供了ARP/ICMP/UDP 3种网络协议。ARP协议主要

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top