电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 通信与网络 > 详细信息
通信与网络:ARM7(S3C44B0)平台下基于VxWorks的网络接口设计
来源:   时间: 2007-10-26 1:05:49    
   VxWorks操作系统以其高度的可靠性、优秀的实时性、灵活的可裁减性等优势在嵌入式系统中备受关注,广泛应用于许多行业;而随着网络技术的发展,嵌入式技术与网络技术的结合已成必然。VxWorks是最早在其内核中加入TCP/IP协议的嵌入式实时操作系统。如何设计基于VxWorks的网络接口,是摆在嵌入式开发人员面前的首要课题。本设计以三星公司的ARM7(S3C44B0)为核心CPU,开发了VxWorks下的网络接口,包括硬件设计和软件实现两个部分。

1 硬件设计

  核心CPU采用三星公司的S3C44B0。S3C44B0采用ARM7TDMI内核,它通过提供全面的、通用的片上外设,大大减少了系统电路除处理器以外的元器件配置,降低了系统成本。 网络接口芯片采用Realtek公司生产的RTL8019AS。它是一款高度集成的以太网控制器,不仅集成了MAC(介质访问控制)子层和物理层的性能,而且与NE2000兼容,具有软件可移植性强以及价格低廉等优点。

  S3C4480与RTL8019AS的硬件接口原理如图1所示。从图1中可以看出,RTL8019AS的使能端连到S3C44B0的nGCS3,因此它的地址映射在系统的Bank3上,基地址为0x06000000。RTL8019AS支持8位/16位数据总线,在本电路中采用16位方式。

    RTL8019AS共有32个输入/输出地址,对应地址偏移量为0x00~0x1f。现分别说明如下:

  ①0x00~0x0f的16个地址,为寄存器地址。

  ②0x10~0xl7的8个地址,为数据读写端口地址。它们都是一样的,每个都可以用来做数据读写端口,只要用其中一个就可以了。

  ③0x18~0x1f的8个地址,为复位端口。它们的功能都是一样的。但需要注意,实际上只有0x18、0x1a、0x1c、0xle这几个复位端口是有效的,其他不要使用;因为有些兼容卡不支持0xl9、0xlb、Oxld等奇数地址的复位。

    在软件设计时,尤其要注意以下两点:

  ①RTL8019AS的地址线从SA0~SA4依次连到S3C4480的ADDR1~ADDR5上,因此,RTL8019的寄存器地址要左移1位。

  ②RTL8019AS使用EXINT1中断,且上升沿触发。

2 软件实现

2.1 VxWorks的网络协议栈和MUX接口

   VxWorks中的网络协议栈叫作"SENS(Scalable En-hanced Network Stack)",即可裁减增强网络协议栈。SENS是基于4.4BSDTCP/IP协议栈发展而来的。它包含了许多4.4BSDTCP/IP协议栈没有的协议;而且SENS在实现一些协议功能时增加了许多新特性。如在IP协议实现时增加了多播功能。SENS协议栈层次如图2所示。

  SENS的基本特征与传统的TCP/IP网络协议栈相似,但从图2中可以看出,SENS最大的特点是在数据链路层和网络协议层之间多了MUX层。在SENS中网络接口的驱动程序叫作"END(Enhanced Network Driver)",即增强型网络驱动程序,它处于数据链路层。IP层和TCP/UDP层合称为"网络协议层"。在数据链路层和网络协议层之间有应用程序接口(API),这个接口在SENS中叫作"MUX(Multiplexer)接口"。MUX接口如图3所示。MUX接口起到隔离网络驱动程序与网络协议的作用。在老式的BSD4.3的驱动模式下,网络驱动程序和协议是紧密联结的,无论协议还是驱动程序都需要了解对方的数据结构。而在新的基于MUX的模式下,驱动程序和协议并不需要了解对方。它们通过MUX接口来通信。例如,在收到一个包后,网络驱动程序并不直接访问协议的数据结构;相反,当准备将数据传给协议层时,它调用一个MUX提供的函数,该函数处理把数据传给协议层的细节。这使得添加一个新的驱动程序或协议十分容易。MUX实现了下面的一套函数集:muxBind()、muxUn-bind()、muxDevLoad()、muxDevUnload()、muxReceive()、muxError()、muxSend()、muxTxRestartRtn()、muxM castAddrDel()、muxMcastAddrGet()、mux-PollSend()、muxMcastAddrAdd()、muxPollReceive()、muxIoctrl()。网络驱动程序和协议都要调用上面的函数,不需要为它们添加任何附加代码。

2.2 END设备驱动程序装载过程

  在VxWorks中,END设备驱动程序装载过程可以分为3个步骤,即指定END设备,装载END设备和启动END设备。END设备的指定是通过数组endDevTbl[ ]来完成的,该数组描述了系统中的所有网络设备的装载人口点及其相关参数。系统调用MUX设备装载函数mux-DevLoad()来装载END设备,调用MUX设备启动函数muxDevStart()来启动END设备。网络设备驱动程序的装载过程如图4所示。系统通过usrRoot()函数来调用usrNetInit()函数完成MUX的初始化,装载网络设备表endDevTbl[ ]中描述的所有设备,并将IP协议绑定到网络引导设备上等。

  当网络设备产生中断时,VxWorks调用驱动程序先前注册的中断服务程序。中断服务程序应做尽可能少的工作,以完成将数据包从本地网络设备送出/取出的操作。
 
2.3 文件配置

  由于RTL8019兼容NE2000网卡芯片,只需要在其基础上完成必要的修改。首先将Tornado2.2\target\src\drv\end目录下的ne2000End.c和Tornado2.2\target\h\dry\end目录下的ne2000End.h拷贝到bsp目录下,然后修改以下文件。

(1) 修改ne2000End.C

  ①修改头文件包含目录;
  ②sysIntConnect修改为intConnect;
  ③sysLanIntEnable修改为intEnable,并修改返回类型void为STATUS。

(2) 修改ne2000End.h

    将寄存器地址左移1位,如:

#define ENE_RSTART(0x01<<1)

(3) 修改config.h

添加网络宏定义:

①#define INCLUDE_NETWORK
②#define INCLUDE_END
③#ifdef INCLUDE_END
#undef INCLUDE_SNGKS32C_END
#define INCLUDE_NE2000_END
#endif/*INCLUDE_END*/

(4) 修改configNet.h

  在endDevTbl[ ]表中添加新的装载函数(其函数命名格式为xxLoad( ))入口点及相关参数。

(5) 修改Makefile
添加MACH_EXTRA=ne2000End.o

(6) 修改sysLib.c

  ①添加MAC地址定义:

unsigned char ne2000EnetAddr[]=ETHERNET_MAC_ADRS;

  ②添加 sysInByte、sysOutByte、syslnWordString和sysOutWordString函数。

  ③在sysHwInit()中添加CPU端口初始化:

  ④在sysHwInit()中添加RTL8019芯片的复位和初始化函数。相关代码如下(有关寄存器的宏定义请参照RTL8019数据手册):




结 语

  本文在VxWorks嵌入式实时操作系统下,提出了网络接口的解决方案,即以ARM7(S3C44B0)为核心CPU,控制网络控制器TRL8019实现网络通信。本文首先简单介绍了几款主要芯片,给出了硬件原理图;然后简要分析了VxWorks下的网络协议和驱动装载过程;最后,针对此网络接口,详细列出了VxWorks下文件配置过程,提供了部分软件源程序,对开发人员有一定的参考价值。

相关信息
发表评论
打印本页 关闭本页
基于S3C44B0X μcLinux的嵌入式以太网设计
    随着半导体技术的飞速发展,嵌入式产品已经广泛应用于军事、消费电子、网络通信、工业控制等各个领域,网络化是嵌入式系统发展的必然趋势。嵌入式Linux 作为具有开放的源代码、优秀的网络性能、可裁减等诸多优点的操作系统,非常适合用于具有网络功能的嵌入式系统。本文介绍了以S3C44B0X 的ARM处理器和RTL8019AS 以太网控制器为基础的网络接口设计,并阐述了怎样在嵌入式操作系统μcL...
>>详细内容
关于三星S3C44B0X目标板的uClinux Bootloader
  uClinux是为控制领域设计的嵌入式Linux操作系统,它沿袭了主流Linux的大部分特性,并进行了一定幅度的裁减。其设计主要针对没有内存管理单元(MMU)的微处理器,例如基于ARM7TDMI内核的S3C44B0X。 嵌入式Linux系统通常由三部份组成:Bootloader、Kernel和File System。其中Bootloader是在系统启动之后、Kernel运行之前所执行的第一段代码,其任务是为调用Kernel准备必要的软硬件环境。由此...
>>详细内容
ARM CPU S3C44B0X在水表智能抄表系统中应用
  摘 要: 介绍水表智能抄表系统的核心部分--抄表手机,以及如何用32位机S3C44B0X来实现抄表手机的功能。关键词: 智能抄表系统 抄表手机 S3C44B0X CPU ARM7TDMI核 USB总线 1 水表智能抄表系统简介目前,自来水表都是机械式的,而且多数自来水表都装在户内,这给水表抄表员带来了很大的麻烦。当抄表员抄表时,必须挨家挨户用肉眼读取水表的读数,然后登记在随身携带的小本子上...
>>详细内容
基于S3C44B0X的Microwindows在远程红外抄表器中的应用
  随着嵌入式系统的广泛应用,面向人机交互的嵌入式产品的需求量越来越大,GUI的设计也变得越来越重要。在Linux之上进行实时嵌入式系统开发的厂商,一般会选择如下几种GUI系统:高度裁减的X Windows 系统、MiniGUI、Microwindows、QT/Embedded等。Microwindows作为一种开放式源码的嵌入式GUI软件,目的是把图形视窗环境引入到运行Linux的小型设备和平台上,其体系结构如图1所示。Microwindo...
>>详细内容
基于S3C44B0X的心电血压监测仪USB接口设计
    摘 要:本文介绍了一种应用于家用心电血压监测仪与计算机进行高速数据传输的接口方案,采用ARM内核控制器与USB专用控制芯片,实现了心电、血压数据的快速无失真传输,重点阐述了S3C44B0X与USB控制芯片USBN9603的硬件连接和USB固件设计,以及上位机WDM驱动程序的开发思路和方法。  关键词:USB接口;ARM微控制器; 远程医疗;心电监测 引言 家用心电血压监测系统由采集记录设备和上...
>>详细内容
基于S3C44B0X+μcLinux的嵌入式以太网设计
    来源:电子设计信息网 作者:寇向晖 陈利学 田家林随着半导体技术的飞速发展,嵌入式产品已经广泛应用于军事、消费电子、网络通信、工业控制等各个领域,网络化是嵌入式系统发展的必然趋势。嵌入式Linux 作为具有开放的源代码、优秀的网络性能、可裁减等诸多优点的操作系统,非常适合用于具有网络功能的嵌入式系统。本文介绍了以S3C44B0X 的ARM处理器和RTL8019AS 以太网控制器为基础...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com