基于S3C44B0X μcLinux的嵌入式以太网设计-设计应用_第1页
基于S3C44B0X μcLinux的嵌入式以太网设计-设计应用_第2页
基于S3C44B0X μcLinux的嵌入式以太网设计-设计应用_第3页
基于S3C44B0X μcLinux的嵌入式以太网设计-设计应用_第4页
基于S3C44B0X μcLinux的嵌入式以太网设计-设计应用_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑基于S3C44B0XμcLinux的嵌入式以太网设计-设计应用随着半导体技术的飞速发展,嵌入式产品已经广泛应用于军事、消费电子、网络通信、工业控制等各个领域,网络化是嵌入式系统发展的必然趋势。嵌入式Linux作为具有开放的源代码、的网络性能、可裁减等诸多优点的操作系统,非常适合用于具有网络功能的嵌入式系统。本文介绍了以S3C44B0X的ARM处理器和RTL8019AS以太网控制器为基础的网络接口设计,并阐述了怎样在嵌入式操作系统μcLinux下实现对网卡的驱动。S3C44B0X处理器介绍

ARM是业界的芯片设计IP供应商,其32位RISC微处理器占据了80%以上的市场份额。ARM7系列处理器也是目前市场上成熟、应用广的处理器。SAMSUNG公司推出的S3C44B0X就是以ARM7TDMI为内核的一款16/32位RISC处理器。它采用0.25μmCMOS工艺制造,为手持设备和一般应用提供了高性价比和高性能的微处理器解决方案。S3C44B0X通过提供全面的、通用的片上外设,大大减少了外围的元器件配置,从而使系统成本大为降低。S3C44B0X芯片的内部结构如图1所示。

网络接口的电路设计

在介绍电路设计之前,先简要介绍一下网络控制器RTL8019AS的情况。RTL8019AS是台湾REALTEK公司生产的一款性价比很高的、带有即插即用功能的全双工以太网控制器。它内部集成了两块RAM,一块16KB,地址为0x4000~0x7FFF;一块32字节,地址为0x0000~0x001F。16K的RAM用作收发数据的缓冲区,一般将0x4000~0x46FF作为发送缓冲区,0x4700~0x7FFF作为接收缓冲区。图2是针对S3C44B0X,用RTL8019AS、74LV138(3-8译码器)、FB2022(网卡变压器)设计的以太网接口电路。

该电路数据宽度为16位,使用外部中断EXINT3。处理器的片选信号nGCS1和A16、A17、A18通过74LV138输出为网卡的使能控制端。nOE和nWE控制网卡的读写,nRESET控制网卡的复位,FB2022起变压滤波的作用。

μcLinux操作系统和网络驱动开发介绍

本系统为什么要选择μcLinux

Linux以其开放的源代码、强大的网络功能等诸多优点而成为当今流行的操作系统之一。μcLinux从Linux内核派生而来,沿袭了Linux的大部分特性,专门针对没有MMU(存储器管理单元)的CPU,并且为嵌入式系统做了很多小型化工作,它内核小,但功能强大,系统健壮,并且具有广泛的硬件支持特性,是一个的嵌入式操作系统。S3C44B0X正是一款没有MMU的处理器,所以在该系统中,操作系统选择μcLinux是非常合适的。

μcLinux下网络驱动开发简介

μcLinux和Linux下驱动的实现过程基本相同。linux将所有的设备看作具体的文件,通过文件系统层对设备进行访问。所以在linux/uclinux的框架结构中,和设备相关的处理可以分为两个层次——文件系统层和设备驱动层。设备驱动层屏蔽具体设备的细节,文件系统层则向用户提供一组统一的规范的用户接口。这种设备管理方法可以很好的做到“设备无关性”,使linux/uclinux可以根据硬件外设的发展进行方便的扩展,比如要实现一个设备驱动程序,只要根据具体的硬件特性向文件系统提供一组访问接口即可。整个设备管理子系统的结构如图3所示。

在Linux/μclinux中,整个网络接口驱动程序的框架可分为四层,从上到下分别为协议接口层、网络设备接口层、提供实际功能的设备驱动功能层、以及网络设备和网络媒介层。这个框架在内核网络模块中已经搭建好了,我们在设计网络驱动程序时,要做的主要工作就是根据上层网络设备接口层定义的net_device结构和底层具体的硬件特性,完成设备驱动的功能。在网络驱动程序部分主要有两个数据结构,一个是sk_buff,TCP/IP中不同协议层间以及和网络驱动程序之间数据包的传递都是通过这个结构体来完成的,这个结构体主要包括传输层、网络层、连接层需要的变量,决定数据区位置和大小的指针,以及发送接收数据包所用到的具体设备信息等。它的详细定义可参阅内核源代码。

另一个就是net_device结构,它的定义在中。这个结构是网络驱动程序的,它定义了很多供系统访问和协议层调用的设备标准的方法,包括供设备初始化和往系统注册用的init函数,打开和关闭网络设备的open和stop函数,处理数据包发送的函数hard_start_xmit,以及中断处理函数等,接口状态统计函数等。RTL8019AS驱动程序的实现

嵌入式系统开发中,设备驱动的编写会占用很大的工作量。下面详细介绍在本系统中网卡驱动程序设计的步骤。

*初始化函数

staticintRTL8019_init(structnet_device*dev)

{

调用ether_setup(dev)函数设置通用的以太网接口;

填充net_device数据结构的属性字段;

调用kmalloc申请需要的内存空间;

手动设置MAC地址;

}

*设备打开与关闭函数

staticintRTL8019_open(structnet_device*dev)

{

关闭中断;

注册中断号和I/O地址;

初始化设备的寄存器;

使能中断;

}

设备关闭函数与打开函数的动作相反。

*数据包发送函数

staticintRTL8019_sendpacket(structsk_buff*skb,

structnet_device*dev)

{

将标志位tbusy打开;

将数据包写入RTL8019的发送缓冲区,启动DMA发送功能;

释放缓冲区;

}

*数据包接收函数

staticintRTL8019_rx(intirq,void*dev_id,structpt_regs*regs)

{

申请skb缓存区存储新的数据包;

从硬件中读取新到达的数据;

调用函数netif_rx(),将新的数据包向网络协议的上一层传送;

}

,将驱动程序编译进内核,由于μcLinux不支持模块动态加载,因此必须使用静态编译的方法。如果一切正常的话,使用ifconfig、routeadd命令设置IP地址和子网掩码,网卡就能正常工作了。

结束语

RTL8019AS以太网控制器以其优良的性能在嵌入式系统中得到了广泛的应用,而μcLinux行通信和交换数据。试验表明,用HPI接口在C5416和S3C4510B间通信满足嵌入式系统的实时性要求。

参考文献:

[1].S3C44B0Xdatasheet/datasheet/S3C44B0X+_589522.html.[2].RTL8019ASdatasheet/datasheet/RTL8019AS+_1096173.html.[3].RISCdatasheet/datasheet/RISC+_1189725.html.[4].ARM7TDMIdatasheet/datasheet/ARM7TDMI+_139812.html.[5].74LV138datasheet/datasheet/74LV138_1082898.html.[6].A16datasheet/da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论