基于MPC8260和VxWorks实现快速以太网通信<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
引言
摩托罗拉MPC8260微处理器芯片因其强大的通信处理能力和多种协议的支持而被广泛应用于通信和网络领域。本文以MPC8260为例,探讨在嵌入式系统中实现基于VxWorks操作系统的快速以太网通信的方法。
1 快速以太网通信接口的硬件实现
MPC8260 的3个FCC(快速通信控制器)均可通过MII(媒体独立接口)支持快速以太网,实现以太网中的MAC(媒体访问控制)层功能。在设计中选用FCCl接口作为以太网接口。以太网PHY(物理层)收发器选用Intel公司的LXT<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />971A,变压器选用裕泰公司的YL18-2050S,采用RJ45标准物理接口。以太网口硬件设计如图l所示。
LXT971 A支持10BASE-TX、100BASE-TX/FX等物理连接方式,拥有半双工、全双工、自适应等多种工作模式,拥有内嵌的LED(发光二极管)驱动显示网口的工作状态,采用通用的3.3 V供电。在本设计中,IXT971A通过MII与MPC8260的FCC1连接,MPC8260通过LXT971A的串行控制管理(MDIO(管理数据输入输出)和MDC(管理数据时钟))接口对IXT971A内部寄存器进行配置,实现工作模式的选择。但由于LXT971A是完全自适应的,因此,在实际的工作中不需要对LXT971A进行任何配置。需要注意的是,MPC8260的引脚存在复用的问题,因此,软件必须将所涉及的引脚设为对应的FCCl通信口的功能。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
2 快速以太网驱动的设计与实现
2.1 VxWorks网络系统结构
VxWorks 支持两种形式的网络驱动:一种是BSD(Berkeley Software Distribution)驱动;另一种是END(增强型网络驱动)是VxWorks所独有的,其主要特点是增加了一个MUX模块来管理END设备。目前比较通用的是采用END网络驱动程序。在本系统的网络驱动中选用END驱动作为以太网驱动方式,其网络系统结构如图2所示。
收发数据时,网络协议层通过套接字(Socket)获取应用层提供的数据信息,经由MUX(多路选择)层选择END设备。Mux层将网络协议与网络设备的驱动区隔开来,使得网络协议不依赖于具体的硬件接口,而与硬件有关的代码都封装在BSP中,底层由END提供驱动。因此,在基于VxWorks的以太网通信实现的设计中,主要的工作是进行底层网络设备(硬件)设计和END驱动程序的开发。
2.2 END驱动的实现
以太网在VxWorks下作为END设备,由通信处理器模块通过FCC接口进行管理。END驱动的工作过程一般分为3个步骤完成,即初始化END设备、装载 END设备以及启动END设备。风河公司提供了基于大多数嵌入式微处理器的评估板的BSP参考源程序,根据实际方案修改其中与网络通信相关的部分程序,即可实现END驱动在实际设计中的应用。
2.2.1 END设备的初始化步骤
为了便于理解网络设备程序的装载过程,首先分析图3所示的在VxWorks映像启动时的网络初始化顺序。
系统启动后,VxWorks首先执行usrRoot()函数,安装库程序和创建设备。接着usrRoot()调用usr-NetInit()函数完成网络的初始化,包括通过muxDev-Load()调用SysMotFccEndLoad()装载设备表end-DevTbl[]中描述的设备以及调用 ipAttach()完成网络协议的安装等。通过这些过程完成网络装载并使其处于准备接收或发送数据状态。设备装载完成后,muxDevLoad()调用 muxDevStart()启动函数,该函数通过intConnect()和intEnable()实现中断服务的注册并打开中断宏。当有数据交换时,打开中断服务程序,调用排列网络任务处理函数netJobAdd(),指派网络系统任务tNetTask,由tNetTask处理数据接收和发送任务。
2.2.2相关BSP的配置
在VxWorks中,网络设备驱动程序装载时,首先要通过对所处BSP中文件进行相应的配置才能实现。
1)接口引脚的定义和使能
以太网是由MPC8260的以太网控制器通过连接一个外部PHY芯片实现的,通过对MPC8260的可编程并行口进行寄存器设置,定义这些引脚为以太网接口信号。这部分功能在sysLib.c中实现。
另外,需要同时配置读写以太网PHY芯片内部寄存器的信号,这可以通过修改sysFccEnetAddrGet、sysF-ccMiiWr、 sysFccMiiRd等子过程来实现,详细的配置数据可以参照MPC8260并行口寄存器的配置表,这里不一一赘述。
2)以太网物理端口的定义
针对以太网接口,定义使用的FCC号、TBD和RBD数目、PHY物理地址和使用的通信速率操作模式以及用户标识等。这部分功能在sysMotFccEnd.c中实现。
3)添加驱动的调用人口
在configNet.h中定义END设备驱动程序入口表END_TBL_ENTRY结构的数组endDevTbl[],将驱动装载函数SysMotFccEndLoad的人口点及相关参数添加到endDevTbl[]。
3 结束语
本文介绍了在MPC8260为核心的嵌入式系统中,基于VxWorks操作系统的快速以太网通信的硬件设计方法和驱动开发过程,该设计已在实际工作中顺利实现。
文章评论(0条评论)
登录后参与讨论