首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年12月26日星期四
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
基于AM186ed微处理器的嵌入式系统以太网接口设计与实现
Design and Implement of an Embedded Ethernet Interface Based on AM186ed

解放军信息工程大学 王欣 詹瞻 岳春生


摘 要:本文介绍了嵌入式微处理器AM186ed和以太网控制器芯RTL8019的系统硬件设计,并较为详细的说明了相关的系统软件实现。

关键词:嵌入式系统 Nucleus Net , AM186ed , RTL8019,TCP/IP

随着信息技术的飞速发展,特别是互联网的迅速普及,3C(计算机、通讯、消费电子)合一的加速,数字化时代已经来临,嵌入式系统技术的应用日益广泛。嵌入式系统具有系统内核小、专用性强、系统精简、高实时性的操作系统软件等特点,使得其在工业过程控制、交通管理、信息家电及机器人系统等研究生产领域中得到广泛应用。而在这些应用中,为了实现多个嵌入式微处理器之间的信息交流,大多利用CAN、RS-232、RS-485等总线将微处理器组网,这种网络的通信距离比较有限,有关的通信协议也比较少,并且一般是孤立于Internet以外的。嵌入式系统接入Internet以后,不仅实现了设备的远程控制、维护和升级,而且从另一层意义上讲,接入Internet的设备已经成为网络共享资源的一部分。

另外,以太网一般都基于TCP/IP协议,使得整个网络只有一种底层通讯协议,可以满足控制系统各个层次的要求,不仅使得企业信息网络和控制网络得到统一,而且易于和Internet实现无缝连接。通常,一个嵌入式系统接入Internet,可选择一个提供TCP/IP协议的嵌入式操作系统,或是在现有操作系统之上加入TCP/IP协议栈,实现TCP/IP连接。对于嵌入式系统,TCP/IP软件协议栈也构成了系统成本的一部分,而这部分投入占有不小的比例。同时,软件协议栈的引入无疑要占用更多的系统资源,对于嵌入式系统来说是可观的。但是对于嵌入式系统在网络化开发的过程中,首先要解决的就是与以太网络的连接问题,亦即如何将通用处理器的网络连接装置(以太网络控制器)应用于嵌入式网络的开发。

目前市面上有许多以太网络控制芯片,可是其中大多耗电量高、功能复杂,不适用于价格低廉的嵌入式系统之中。我们选择使用的是RTL8019以太网控制器。


系统硬件设计

AM186ed嵌入式微处理器

作为高性能的80C186兼容16位嵌入式微控制器,AM186ed微控制器结合了80C186/188 系列微控制器体系结构,但具有更高的性能。同时,它还带有一个含有DRAM控制器的装置用以提高性能。与80C186/188微控制器相比,Am186ED 微控制器可以减少体积、降低功耗和系统开销而增强性能和功能性。Am186ED 控制器为那些需要超过64K字节RAM的系统提供了一个理想的解决方案。 含有DRAM控制器的装置指的是降低系统开销而增强功能性的应用组件,包括一个DMA控制器,和可以直接连到DMA通道的串行通信口。另外,Am186ED 微控制器还集成了一些常见的外围器件,包括3个定时器,片选逻辑,一个中断控制器,2个DMA控制器,一个看门狗定时器等。

RTL8019AS以太网控制器

由Realtek公司生产的RTL8019AS高集成以太网控制器芯片集成了介质访问控制子层(MAC)和物理层的性能,可以方便地设计基于ISA总线的系统,简单的与通用单片机进行接口。另外,它还具有与NE2000兼容、软件移植性好,以及低廉的价格等优点,在市场上的10Mbps网卡中占有相当的比例。

主要性能

(1)适应于Ethernet II 、IEEE802.3协议、10Base5、10Base2、10BaseT;

(2)支持8位、16位数据总线,8个中断申请线以及16个I/O基地址选择;

(3)全双工,收发可同时达到10Mbps的速率,具有休眠模式,以降低功耗;

(4)内置16KB的SRAM,用于收发缓冲,降低对主处理器的速度要求;

(5)可连接同轴电缆和双绞线,并可自动检测所连接的媒介类型;

(6)支持闪存读写;

(7)允许四个诊断LED引脚可编程输出;

(8)100 脚的TQFP封装,缩小主机板尺寸。

硬件系统结构

硬件结构图参见图1:

主要使用了XILINX公司生产的CPLD芯片XC9536,实现了RTL8019的各个逻辑控制信号。这里,RTL8019使用了跳线模式、IO方式读写。详细说明如下:

(1)、给RTL8019的NE2000兼容的各个寄存器分配了PCS0引脚,IO地址为00H~FFH,这样,只需要将CPU的A0~A4连接到RTL8019上就可以了。RTL8019默认的IO地址是300H~3FFH,因此将RTL8019上的SA19~SA10和SA7~SA5接为地,SA9、SA8接为VCC。

(2)、使用16位方式读写RTL8019AS芯片,将RTL8019上的IOCS16B引脚通过10K的上拉电阻接为VCC。使用IO模式读写网络芯片,SMEMRB和SMEMWB接上拉电阻为VCC。


系统软件设计

嵌入式实时多任务操作系统

在该系统设计中,引入了实时操作系统(RTOS)。作为一个完整的操作系统,RTOS有一个可靠性很高的实时内核,将CPU时间、中断、I/O、定时器等资源都包装起来,留给用户一个标准的应用程序接口(API);根据各个任务的优先级,合理地在不同任务之间分配CPU的时间,保证程序执行的实时性、可靠性。内核一般都能提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。

本系统采用的是ATI 公司(Accelerated Technology Incorporated )的Nucleus 操作系统。我们已经成功的将该操作系统移植到AM186ed上。

软件设计

系统的软件设计主要是针对网络芯片进行的。下面就详细介绍一下对于RTL8109AS的软件设计
其软件设计包括芯片初始化、数据发送和接收三部分。

芯片初始化

对RTL8019的初始化主要是对其控制寄存器进行初始化设置。8019的寄存器按照其地址及功能可大致分为NE2000兼容寄存器组和即插即用寄存器组两大类。我们在该系统设计中用到NE2000兼容寄存器组,共有64个寄存器,所有寄存器均为8位,映射到四个页面。

网卡初始化过程:首先要对网卡进行复位:18H-1FH共8个地址,为复位端口。对该端口地址的读或者写入任何数,都会引起网卡的复位。
temp=inportb(IO_ADDR+0x1f); //读网卡的复位端口
outportbb(IO_ADDR+0x1f,temp); //写网卡的复位端口

说明:IO_ADDR是RTL8019的基准地址,其全部的寄存器地址都是由它得出来的,在初始化时必须赋予它正确的基准地址值。我们在此所使用的值为0x0000。

表1:RTL8U19AS积存器地址(略)


网卡复位完成之后,要对网卡的工作参数进行设置,以使网卡开始工作。对网卡的参数设置主要是对命令寄存器CR进行设置,CR主要是用于选择寄存器页、启动或停止远程DMA操作以及执行命令。

①PS1和PS0两位用来选择寄存器页:

②RD2、RD1、RD0三位代表要执行的功能。

③TXP为写入1时发送数据包,发完自动清零;

④STA,STP两位用来启动命令或停止命令

网卡初始化的软件编程如下:

8019_init()
{
outportb(IO_ADDR+0x00,0x21); //选择页0寄存器,网 卡停止 运行
outportb(IO_ADDR+0x01,0x4c); //接收缓冲区范围
outportb(IO_ADDR+0x02,0x80); //PSTOP,构造缓冲 环:0x4c-0x80;
outportb(IO_ADDR+0x03,0x4c); //BNRY,设置指针;
outportb(IO_ADDR+0x04,0x40); //发送缓冲区范围
outportb(IO_ADDR+0x0d,0x4c); //
outportb(IO_ADDR+0x0e,0xc8); //设置数据配置寄存 器,使用FIFO缓存, 普通模式,8 位数据 DMA;
outportb(IO_ADDR+0x0f,0xff); //清除所有中断标志 位
outportb(IO_ADDR+0x0f,0x00); //设置中断屏蔽寄存 器,屏蔽所有中断;
page(1); //选择页1寄存器;
outportb(IO_ADDR+0x07,0x4d); //初始化当前页寄存 器,指向当前正在写 的页的下一页;
outportb(IO_ADDR+0x08,0x00); //设置多址寄存器 MAR0-5,均设置 为0x00;
outportb(IO_ADDR+0x09,0x00);
outportb(IO_ADDR+0x0a,0x00);
outportb(IO_ADDR+0x0b,0x00);
outportb(IO_ADDR+0x0c,0x00);
outportb(IO_ADDR+0x0d,0x00);
outportb(IO_ADDR+0x0e,0x00);
outportb(IO_ADDR+0x0f,0x00);
outportb(IO_ADDR+0x00,0x21); //选择页0寄存器,网 卡执行命令
}

数据的收发

通过对地址及数据口的读写来完成以太网帧的接收与发送。要接收和发送数据包都必须读写网卡内部的16KB的RAM,必须通过DMA进行读和写。

以数据的发送为例,该过程应包含三个步骤:数据包的封装;通过远程DMA将数据包送到数据发送缓冲区;通过RTL8019的本地DMA将数据送入FIFO进行发送。具体过程如下:

①数据包在发送前应该按规定的格式封装好,格式如下:

②把上面的数据包通过远程DMA写送入RTL8019的数据发送缓冲区

outportb(IO_ADDR+0x00,0x22);
outportb(IO_ADDR+0x07,0x40); //设置中断状态寄存器ISR 为40H,清除发送完成标志

outportb(IO_ADDR+0x09,0x40); //设置远程DMA地址 寄存器RSAR1、0为 4000H,即发送缓冲 区开始地址
outportb(IO_ADDR+0x08,0x00);

outportb(IO_ADDR+0x0a,0x50); //设置远程DMA字节 计数寄存器RBCR1、 0为发送数据包的长 度80
outportb(IO_ADDR+0x0b,0x00);

outportb(IO_ADDR+0x00,0x12); //设置CR为12H,设置 命令寄存器为远程 DMA写
for(i=0;i<80;i++)

outport(0x10<<1,*(buffer+i)); //往数据端口写入发 送数据

temp=inportb(IO_ADDR+0x07); //查询中断状态寄存 器ISR,等待远程 DMA完成
outportb(IO_ADDR+0x0b,0x00);
outportb(IO_ADDR+0x0a,0x00);

outportb(IO_ADDR+0x00,0x22); //设置CR为22H,设置 RBCR1、0为0,远程 DMA停止

outportb(IO_ADDR+0x07,0x40); //设置中断状态寄存 器ISR为40H,清除发 送完成标志

③启动本地DMA将数据发送出去。

outportb(IO_ADDR+0x06,0x50);
outportb(IO_ADDR+0x05,0x00); //设置发送字节计数 器为发送数据包的 长度

outportb(IO_ADDR+0x04,0x40); //设置发送页面起始 地址TPSR为40H,即 发送缓冲区开始地 址高位字节

outportb(IO_ADDR+0x00,0x26); //启动发送

AM186ed的Nucleus NET的实现

上面数据的收发完成的是以太网的MAC层和物理层的协议。要真正实现嵌入式系统与以太网上其他设备进行通信,需要在系统上实现TCP/IP协议。

这里我们使用了Nucleus嵌入式操作系统,该操作系统有TCP/IP组件,将RTL8019AS芯片作为一个Device,可以完全移植到Nucleus上去。


结束语

本设计实现的嵌入式以太网接口支持RS232、RS485和以太网的连接,可以通过以太网接入Internet,从而实现从Internet上监控嵌入式设备,可以广泛应用在工业控制领域,有很高的实用价值。

 
 
 
 
 
 
         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com