登录
注册
论坛
博客
相册
搜索
帮助
会员
界面
简洁版本
在线
凌阳教育
嵌入式Linux技术区
嵌入式应用
基于S3C4480X的嵌入式以太网接口设计
帖子标题
嵌入式Linux技术区
嵌入式Linux综合
嵌入式GUI开发
嵌入式驱动开发
嵌入式工具
嵌入式硬件开发
嵌入式应用
综合技术区
单片机技术及应用
电子技术及应用
C/C++/VC++专区
电子资料专区
专业英语
eCos技术讨论专区
质量管理
求职路上
应届生职位
嵌入式Linux职位
单片机职位
个人简历
我要面试
面试题目
人在职场
职业规划
职业测评
办公室风云
IT人
职场快讯
在校生
课程设计
电子竞赛
毕业设计
休闲专区
朝酒晚舞
我们在一起
我们的2008 我们的奥运会
网站事务
关于培训课程的问题、建议、咨询、网站公告
1
/ 1 页
1
跳转
页
查看:
93
标题: 基于S3C4480X的嵌入式以太网接口设计
yuheshui
个人空间
相册
组别:
中级会员
性别:
来自:
积分:
299
帖子:
299
注册:
2008-10-23
2008-11-20 14:49
|
只看楼主
树型
|
收藏
|
小
中
大
1
基于S3C4480X的嵌入式以太网接口设计
引言
在互联网络和局域网络飞速发展的今天,计算机进行网络互联的同时,各种家电设备、仪器仪表、工业生产中的数据采集和控制正在走向网络化。
以太网(Ethemet)由于它的普遍性及低廉的接口价格,因而已经作为一种最通用的网络,广泛应用于生产和生活中。另一方面,嵌入式设备在价格、体积及实时性等方面是通用计算机无法比拟的,也已广泛应用于自动化控制、数据采集、通信网络等领域。因此,嵌入式以太网技术有着广阔的前景,首先要解决的问题就是嵌入式以太网接口问题。
本文基于最常用的嵌入式处理器S3C44B0X和以太网驱动器RTL8019AS来设计了一款嵌入式以太网接口。本设计的特点是,既可仅用于嵌入式以太网驱动设备,方便简单,又可进行扩展其他模块,必要时可以移植操作系统,应用于其他复杂领域。本文从RTL8019AS的内部结构工作原理出发,介绍了基于S3C44B0X的硬件接口电路,详细说明了基于硬件层的驱动程序C语言的设计。
1以太网帧结构
一个标准的以太网物理传输帧由7部分组成:PR(同步位)、SD(分隔位)、DA(目的地址)、SA(源地址位)、TYPE(类型字段)、DATA(数据段)、FCS(帧校验)。
其传输帧结构(及各部分长度)如图1所示。
除了数据段的长度不定外,其他部分的长度固定不变。数据段为46~1500字节。以太网规定整个传输包的最大长度不能超过1514字节(14字节为DA、SA、TYPE),最小不能小于60字节。需填充时,填充字符的个数不包括在长度字段中;超过1 500字节时,需拆成多个帧传送。事实上,发送数据时,PR、SD、FCS及填充字段这几个数据段由以太网控制器自动产生;而接收数据时,PR、SD被跳过,控制器一旦检测到有效的前序字段(即PR、SD),就认为接收数据开始。
2芯片简介
S3C44B0X是三星公司使用ARM7TDMI核生产的16/32位RISC(精简指令集计算机)处理器,它提供了丰富的内置模块,包括:8 kB Cache和内部SRAM,LCD(液晶显示器)控制器,2通道的UART,4通道的DMA(直接存储器存取),存储器管理,带PWM(脉宽调制)的定时器,I/O口,8通道10位的A/D转换器,IIC、IIS总线,同步SIO接口和PLL(锁相环)倍频器,可根据需要进行接口扩展,并且价格低廉,目前已被广泛应用于嵌入式领域中。
RTL8019AS是在嵌入式领域应用广泛且性价比很高的网络控制芯片。RTL8019AS的主要性能有:符号EthernetⅡ与IEEE 802.3(10Base5、10Base2、10BaseT)标准;全双工,收发可同时达到10 Mbit/s的速率;内置16 kB的SRAM,用于收发缓冲,降低对主处理器的速度要求;支持8/16位数据总线,8个中断申请线以及16个I/O基地址选择;支持UTP、AUI、BNC自动检测,还支持对10BaseT拓扑结构的自动极性修正;允许4个诊断LED引脚可编程输出。
RTL8019AS可分为以下几部分功能模块:
a)远程DMA接口:处理器与RTL8019AS收发缓冲的连接通道,处理器只需对远程DMA操作。
b)本地DMA接口:RTL8019AS与网线的连接通道,完成控制器与网线的数据交换。
c)MAC(介质访问控制)逻辑:完成对远程DMA和本地DMA数据包传输、中断的产生等自动控制。
d)地址识别逻辑:将接收到的数据帧中的目的地址和地址寄存器中的地址进行比较,判断其是否为发到本地的帧。
e)CRC(循环冗余校验)产生校验逻辑:在发送数据时,产生CRC码,对接收帧进行CRC。
f)协议PCA:负责实施以太网规范。
RTL8019AS内部有16kB SRAM,分为64页,256字节/页,组成环形队列作为收发缓冲区,只能按页操作,页地址从0x4000~0x7FFF。可以通过相关的寄存器读写操作,可以对缓冲区进行设置及状态的读取。由于接收缓冲区是按页即256 B来操作的,与缓冲区地址有关的寄存器中只需存储缓冲区的高16位地址即可。在本设计中,将前32页(0x400~0x5fff)作为接收缓冲区,将后32页(0x6000~0x7ff)作为发送缓冲区。
RTL8019AS具有32位输入输出地址,地址偏移量为00H~1FH。其中,00H~0FH共16个地址为寄存器地址。远程DMA地址包括10H~17H,都可以用来做远程DMA端口,只要用其中的一个就可以了。复位端口包括18H~1FH共8个地址,功能相同,用于RTL8019AS复位。RTL8019AS的内部I/O基址是00H,但微处理器要访问8019的地址却不是00H,该地址是由处理器与网络控制器的连线决定的。
RTL8019AS寄存器分为4页,即PAGE0~PAGE3,每一页的地址偏移量均为0x00~0x1f由RTL8019AS的CR(命令寄存器)中的PS1、PS0位来决定要访问的页,每一页中的寄存器由SA0~SA3寻址。第0页和第1页的寄存器很重要,用于数据收发的控制和中断管理等,使用前必须对其进行配置。第2页和第3页只用于诊断和其他一些配置,很少使用。
3设计思路
首先,S3C44B0X通过RTL8019AS的I/O口,对其相关寄存器进行配置。在通信时,S3C44B0X与RTL8019AS的收发缓存器的数据交换由远程DMA控制,而RTL81019AS收发缓存器与以太网总线之间的数据交换由它的本地DMA控制。RTL8019AS通过中断的方式通知S3C44B0X数据收发的结果和状态,S3C44B0X通过查询中断状态寄存器的值,作出相应处理。
系统结构如图2所示。
4接口电路设计
接口电路如图3所示。
S3C 44B0X的nOE、nWE分别与RTL8019AS的IORB、IOWB相连,控制数据的读和写操作,低电平有效。RTL8019使用中断0,对应S3C4480的外部中断1。
RTL8019AS RTL8019AS有3种工作方式:
a)跳线方式:I/O和中断由跳线决定;
b)即插即用方式(PNP):由软件进行自动配置,使用这种方法时,系统的启动程序必须包含支持PNP的函数;
c)免跳线方式:I/O和中断由外接的EEPROM93C46中的内容决定。
在本设计中,为了降低启动程序和接口电路的复杂性,选择跳线方式,故JP接高电平。
X1、X2分别为20 MHz晶振的输入输出端。LED0~2分别连接3个发光二极管,指示网络连接、数据传输和发送的情况。 20F001为网卡滤波器,内部包含一对低通滤波器和一对隔离变压器,其输出TX+/-、RX+/-与RJ45的信号口相连。
由于在本设计中RTL8019AS的AEN与S3C44B0X的nGCS2相连,所以对应S3C44B0X的存储器的起始地址0x0600-0000;并且,由于RTL8019AS的IOS0~IOS3接地,在跳线模式下,当IOS0~IOS1为0000时,RTL8019AS的基址为0300H。因此,在本设计中,S3C44B0X访问RTL8019AS的基址就是0x0600-0300。
5驱动程序设计
5.1程序设计思路
在本设计方案中,驱动程序主要包含3个函数,即系统的初始化函数、接收数据包函数、发送数据包函数。 初始化部分完成RTL8019AS在使用之前的初始化工作,包括设置相关工作模式的寄存器、分配和初始化接收和发送缓冲区、初始化网卡接收地址等。
MAR0-MAR7-多点地址寄存器:这8个寄存器的值是根据多播地址数组的值生成的,提供对多播地址的过滤,过滤掉一些不属于自己接收多播数据包。 这里均设为FFH,接所有多播地址的数据包:
下面6条语句设置MAC地址,寄存器为PAR0~PAR5:实际地址寄存器,这些寄存用来对目标地址数据包进行比较,以确定接收或者拒绝接收。地址放在数组add[6]中。
5.2数据的传输和发送
数据的传输和发送由本地DMA传输和与远程DMA传输两部分完成,前者大部分工作由RTL8019AS自动完成,我们要做的是设置收发缓冲区的大小及指针变量,这些工作在RTL8019AS的初始化时已完成,因此只需要编写远程DMA读写函数。对远端DAM口的读写,不同的只是数据传输方向,这里,仅以读操作为例,即编写从RTL8019AS接收缓冲区取数据包到S3C4480X。(注意:远程DMA的写函数,即向RTL8019AS发送缓冲区写数据函数--send_data()省略。)
5.3以太网接口通信函数流程
这里采用中断和查询相结合的方式来决定是否发送和接收数据。当RTL8019AS的ISR(中断状态寄存器)的任意一中断位置位时,S3C4B0X都要对其进行中断相应(在这里只关注第0中断位和第1中断位,即分别反映RTL8019AS已正确接收到数据和已成功发送数据包,因此在初始化函数中将其他位屏蔽)。这时要对ISR进行访问,来判断是何种中断,进而作出相应的响应,如图4所示。
6结束语
本设计经过软硬件的调试,并已成功地进行以太网数据传输。由于S3C4480X出众的性价比及丰富的外围接口,通过扩展本设计可以应用到嵌入式仪器仪表、工业数据采集网络、嵌入式网络控制等许多领域。
发送短消息
查看公共资料
查找该会员全部帖子
UID:
29729
精华:
0
威望:
0
金钱:
74.3 元
状态:
离线
<<
上一主题
|
下一主题
>>
1
/ 1 页
1
跳转
页
论坛跳转...
嵌入式Linux技术区
嵌入式Linux综合
嵌入式GUI开发
嵌入式驱动开发
嵌入式工具
嵌入式硬件开发
嵌入式应用
综合技术区
单片机技术及应用
电子技术及应用
C/C++/VC++专区
电子资料专区
专业英语
eCos技术讨论专区
质量管理
求职路上
应届生职位
嵌入式Linux职位
单片机职位
个人简历
我要面试
面试题目
人在职场
职业规划
职业测评
办公室风云
IT人
职场快讯
校园招聘
在校生
课程设计
电子竞赛
毕业设计
休闲专区
朝酒晚舞
我们在一起
我们的2008 我们的奥运会
网站事务
关于培训课程的问题、建议、咨询、网站公告
我的主题
我的帖子
我的精华
我的空间
我的相册
帖子标题
空间日志
相册标题
作 者