这些功能主要包括:
(1)底层硬件驱动包括:MDIO模块和EMAC模块的初始化;PHY芯片搜索配置和状态监测;EMAC/MDIO中断使能。(2)TCP/IP协议栈的建立,配置接收和发送缓存区的大小,完成以太网数据的收发任务。(3)利用MDIO模块,根据MDIO读取的PHY状态寄存器来监测其连接状态,识别可以是CPU产生中断的状态变化事件,并将信息反馈。(4)关闭驱动,复位前面对寄存器进行的操作,收回占用资源。
如图7所示,硬件驱动包含在硬件驱动层hal.lib中,用户需要对按照系统对驱动函数进行修改。C6000系列NDK的API封装了许多固定的驱动函数,具有特定的功能,比如_llPacketSerivceCheck()的作用是检测以太网数据包的结构,且将检测到的结构信息反馈给协议栈进行分析处理。具体的驱动程序需要按照硬件系统的配置来进行设计,在C6678中,可在集成度较高的片上系统直接对网络通信模块的寄存器进行配置查询,就可以完成硬件底层驱动,使得底层硬件能够有效地运行。
4.2 DSP端网络应用程序
DSP软件设计是基于SYS/BIOS实时多任务操作系统和C语言,采用Socket套接字,创建TCP/IP客户端(Client)和服务器端 (Server),Client负责与外部设备服务器端建立连接并接收数据包,Server用来向PC机发送处理后的数据包。接收任务和发送任务流程如图 8所示。在C6678的内核Core0中建立两个同步线程任务,即数据接收和发送任务,分别用来接收TCP服务器发送过来的数据和发送处理后的数据到PC 上位机中进行处理、存储和显示。
4.3 上位机测试程序
上位机测试程基于VC++的MFC界面设计,使用套接字Socket进行网络编程。程序中需设计两个同步线程,用来实现数据的实时接收和动态显示功能。使用TCP服务器端发送船体结构应力数据,经过DSP的接接收、处理和发送过程,最后发送到PC上位机进行数据动态显示,结果如图9所示。
5 结束语
本文以8核处理器C6678为核心,对片上集成的以太网交换子系统接口硬件进行了研究,按照接口的特点设计了包括以太网交换子系统和物理芯片的接口连接、物理芯片与网络介质接口连接的硬件系统,并完成了千兆以太网驱动,最终实现多核DSP C6678与上位机进行千兆以太网通信。通过与上位机进行网络通信测试,结果显示以太网数据通信接口能实时高效地进行网络数据传输。