第3l卷第 1期
2005年 1月
电 孑 工 蠢 晡
ELECTR0NIC ENGINEER
Vo1.3l No.1
Jan.2005
基于 ARM微处理器的嵌入式以太网接口
何 轩。,夏应清。,李 祥
(1.华中师范大学,湖北省武汉市430079;2.湖北经济学院,湖北省武汉市430065)
【摘 要】 介绍了一种具有较高性价比和发展前景的基于ARM微处理器的嵌入式以太网的设
计
。首先介绍了ARM 内核的微处理器S3C44BOX的功能和特点,接着分析了以太网控制器芯片
RTL8019AS的性能,给 出了以 ARM为基础的嵌入式 系统与 10 Mbit/s常用以太网控制器芯片
RTL8019AS的硬件接口电路。在软件设计上,首先介绍了~C/OS lI实时操作系统在 S3C44BOX的移
植,并在此基础上给出了以太网控制器芯片RTL8019AS的初始化程序,最终实现了嵌入式以太网的数
据传输。
关键词:嵌入式系统,以太网,接口,ARM,微处理器
中图分类号:TP334.7
O 引 言
在电子设备日趋网络化的背景下,作为目前广泛
使用的以太网以及 TCP/IP已经成为事实上最常用的
网络
之一,它的高速、可靠、分层以及可扩充性使
其在各个领域的应用越来越灵活,很多情况下运用以
太网和TCP/IP,能够简化结构和降低成本。但是,目
前关于嵌人式以太网的设计方案不是很多,而且大多
是基于单片机或DSP的,两者都存在要外扩很多外设
的问题,并且前者速度太慢,后者成本太高,这在一些
对设备尺寸要求很高的场合是不适用的。
本设计 中,采用 了基于 ARM 内核的微处理器
$3C44BOX的嵌人式系统,与 10 Mbit/s以太网控制芯
片RTL8019AS的接口电路和实现
。
1 S3C44BOX芯片介绍
$3C44BOX是基于 ARM7TDMI内核的 16/32位
RISC处理器,功能强大,目前已广泛应用于手持设备、
因特网设备、网络、调制解调设备等领域。其主要特点
如下:
a)拓展存储控制器(带 FP/ED0/SDRAM控制
器,片选逻辑);
b)8 kB高速缓存(cache)/SRAM;
C)液晶显示器(LCD)控制器(可直接控制DSTN/
STN的各种灰度/256彩色LCD屏,最大支持分辨率为
1 600×1 6oo);
d)2通道 UART,波特率可高达 115.2 kbi~s,并
内置16字节FIFO,同时兼容Irda1.0规范;
收稿 日期:2004—10-28
· 72·
e)12C接口、12S接口(音频数据接口);
f)71个通用 I/O端口和8个外部中断;
g)5路脉宽调制(PWM)定时器和 1路内部定时
器;
h)8通道 10位A/D转换器(采样速率为 100×
10 采样/s);
i)2路 GDMA和2路外围DMA;
j)具有电源控制器、看门狗、实时时钟。
2 硬件电路组成
本方案硬件电路使用的芯片主要有微处理器
s3C44BOX、R砌 019AS、74LV138、FB2022(网卡变压
器),其硬件框图如图1所示。
UU~Ul, SD0~SDI 5
_— —
A9~A13 SA0~SA4 IPIN+ 4 7 3
EXINT3 1NT0 IPIN
— 6 9 6
nOE IORB LD 3 10 2
nWE IoWB HD 1 12 I
nRESET RSTRV
FB2022 R3—4
A20
AEN A19
-tK0 I A18
-t s3 l nGCS1
$3C44BOX 74LV38
图1 S3C44BOX与以太网接口电路
$3C44BOX与 RTL8019AS的接 口采用 UTP RJ一
45。RTL8019AS与主机有3种接口工作模式:跳线方
式,网卡的I/O和中断由跳线决定;即插即用方式,由
软件进行 自动配置即插即用;免跳线方式,网卡的 I/O
和中断由外界的93CA6中的
决定。
维普资讯 http://www.cqvip.com
第31卷第1期 何 轩,等:基于ARM微处理器的嵌入式以太网接口 ·计算机与自动化技术 ·
在嵌入式应用场合,如果不使用 93C46 EEPROM,
可以降低成本,同时又减少连线,因此,本文采用第 1
种方式,即跳线方式通过设置 RTL8019AS的65引脚
jP为高电平(接到 VCC或通过一个 10 kQ的电阻上
拉)来实现。
RTL8019AS是性价比高且带有即插即用功能的
全双工以太网控制器,它的主要特点包括:符合Ether—
net lI与IEEE802.3标准;全双工,收发可同时达到
10 Mbit/s的速率,内置 16 kB的SRAM,用于收发缓
冲,减低对主处理器的要求;支持UTP、AUI、BNC自动
检测,还支持对 10BaseT拓扑结构的自动极性修正;允
许4个诊断LED引脚编程输出。RTL8019AS内部有
2块 RAM区,1块 16 kB,地址为0x4000一Ox7珊;1块
32字节,地址为OxO(~ 一0x001f。RA M按页存储,每
256字节为一页。
本方案 中将 RTL8019AS的 RAM 的前 12页
(0x4000一Ox4Bflt)作为发送缓冲区,后52页(Ox4eO0
— 0x7t~ff)作为接收缓冲区,第 0页只有 32个字节,用
来存储以太网的物理地址。
RTL8019AS具有 32个输出/输出地址,地址偏移
量为00H一1FH。其中00H一0FH具有 16个地址,为
寄存器的地址,寄存器分为 pageO、page1、page2、page3,
由RTL8019AS中的命令寄存器 CR中的PSI和 PSO
位来决定要访问的页。复位端口包括 18H一1FH共 8
个地址,用于RTL8019AS的复位。
3 软件设计
编写控制以太网接口程序的
如下。
3.1 .1CI/os 1I实时操作系统的移植
p.e/osⅡ是一种开放源码的实时嵌入式操作系统,
是一个可移植、可裁减、可固化的占先式多任务操作系
统,已被应用到多种微处理器上,其大部分源码是由
ANSI C语言编写的。
移植工作包括以下几个内容:设置 OS—CPU.H中
与处理器和编译器相关的代码;用 c语言改写 OS—
COU
— C.C中6个与操作系统相关的简单函数;用汇编
语言改写OS—CPU—A.ASM中的4个与处理器相关的
函数。
a)OS—CPU.H文件:OS—CPU.H包括#define、ty—
pedef定义与CPU相关信息。由于进行不同处理的处
理器有不同的字长,所以 IzC/OS lI的移植包括一系列
的类型定义,以确保可移植性。如 INT16U数据类型
总是代表 16位无符号整数,将 IzC/OS lI移植到 32位
处理器上,也就意味着 INT16U实际被声明为无符号
短整型数而不是无符号整形数。
b)OS—COU—C.C文件:OSTaskCreatHook()、OS—
TaskDelHook()、OSTaskSwhook()、OSTaskStatHook
()、OSTaskCreakHook()这些函数为用户定义,实际
需要修改的只有OSTaskStkIinit()函数。OSTaskStkI—
init()用来初始化任务堆栈,初始状态的堆栈模拟发
生一次中断后的堆栈结构。由于在 ARM中堆栈是按
32位数据类型进行操作,所以堆栈数据类型 OS—STK
声明为32位无符号整数。
e)OS—CPU—A.ASM文件:这里要实现4个汇编
函数改写,即多任务启动函数中调用 OSSTartHightRdy
()、任务切换函数 OSCtxSw()、中断任务切换 OS—
IntCtxSw()、时钟节拍服务函数 OSTickISR()。任务
切换函数 OSCtxSw(),由任务切换函数 OSJ'ASK_SW
()进入。如果任务执行了某个函数,其结果改变了当
前 任务 的状 态 (如 OSTaskSuspend()、OSTimeDly
()),或者改变了其他任务的状态(OSTaskResum()、
OSTimeDlyResume()),都要引起新的任务调度函数
(OSSched())执行 OSJ'ASK_SW()。OSIntCtxSw()
是在 ISR中被调用的,其代码与OSCtxSw()类似。
OSStartHightRdy()由OSStart()函数调用,功能是运
行优先级最高的任务。
OSTickISR()是时钟节拍中断,用户应该在 OS—
Start()运行后,p,C/OS1I启动运行的第 1个任务中初
始化节拍中断。
3.2 初始化RTL8019AS
初始化部分完成 RTL8019AS在使用之前的初始
化工作:设置相关工作模式的寄存器,分配和初始化接
收及发送缓冲区,初始化网卡接收地址。
RTL8019AS的初始化代码如下:
regO0=Ox21; //CR =Ox21; //STOPI NO
—
DMA
regOe=0xc9; //DCR数据配制寄存器 16位远端数据
dma
Temp=Reset
_
Reg;
Delay(1)
Reset
— reg=temp; //复位8019
Delay(1OO)
//关闭对于配置存储器的支持
res00=0xel; //选中第 3页
regO1=0xe0: /9346CR EEM1=EEM1=1
reg04=0xel; //eonfigl set IRQ bit
regO1=0xel: //9346CR EEM1=EEM1=0
//木木木木木木木偶}止 8019木木木木木木木
regO0=Ox21; //CR =Ox21; //STOPINO
—
DMA
regOb=0; //清除远程 DMA计数器的MSB
regOa=0;//清除远程DMA计数器的LSB
//读取ISR,等待ISR,等待ISR&ISR_RESET,1.6ms
· 73·
维普资讯 http://www.cqvip.com
· 计算机与自动化技术 · 电 子 工 蠢 师 2005年 1月
for(I=0;I<0xfff;I++){
temp=reg07;
if(temp&RTL8019一ISR—RST){
reg07=temp;
break;
}
Delay(200);
}
//如果超时没有收到8019的复位信号,表示 8019芯片有
硬件问题
if(I==Ox甜){
Uart
_
Prinfff”Reset RT1名0l9 Fail.
Please check your hardware.\n’;
return ;
}
regOd=0xe2; //TCR=0x02;开启回环模式
resoo=0x22: //CR=0x22;//STARTINO
—
DMA
Delay(20000); //延时
//宰木木木宰木宰配置8019//宰木木木枣木宰
reg0o=0x21;//选择页0的寄存器,网卡停止运行,因为
还没有初始化
temp=resoo;
//测试8019的寄存器能否工作
if((temp&0x21)!:0x21){
Uart
— Prinff(”Write RTL8019 Fail\n0;
return ;
}
reg0e=0x49;//DCR数据配置寄存器16位数据dma
res0b=0; //清除远程DMA计数器的MSB
resOa=0;//清除远程DMA计数器的LSB
resOe=0x04; //RCR
resoa=0x02; //TCR=0x02回环模式
redo3=0x4c; //BNRY
redoI=0x4C;//寄存器Pstart
re~o2=0x80; //Pstop
reg07=0xff; //ISP
resof= 0xO1: //IMR open rx interrupt interrupt 1 = =
IRQ2/9
reso4=0x45; //TPSR
resoo=0x61: //CR—STOP I CR— NO— DMA I CR— PAGE1//
选择 1的寄存器
//初始化物理地址
GetMae(mac);
GetMae(1llae);
//初始化组播地址EtherlnitMar();
reg07=0x4d; //CURR
resoo=0x21; //move back to page 0
· 74·
resO0=0x22; //选择页0寄存器,网卡执行命令
regOd=0xO0; //TCR
—
NO
_
LOOPBACK
reg07=0xff; //ISR
//配置结束
EtherNetOpenlnterrupt(); //设置中断
EtherSetRegPage(0): //选择页面0
3.3 传输数据包
发送部分只要把数据写入缓冲区,启动执行命令,
RTL8019AS自动发送。一般在 RAM内开辟两个以太
网数据包的空间作为发送缓冲区。作为一个集成的以
太网芯片,数据的发送校验、总线数据包的碰撞检测与
避免是由芯片自己完成的,只需要配置发送数据的物
理层地址、源地址、目的地址、数据包类型以及发送的
数据就可以了。
3.4 接收数据包
接收部分完成数据接收任务。RTL8019AS接收
到以太网数据包后自动存在接收缓冲区并发出中断信
号,S3C44BOX在中断程序中通过 DMA即可接收到数
据,亦即通过远端 DMA把数据从 RTL8019AS的 RAM
空间读回ARM中处理。这里主要是对一些相关的寄
存器进行操作就可以了。
4 结束语
RTL8019AS芯片具有性价比高、连接方便等特
点,是进行嵌入式以太网设计时的首选的控制芯片。
本 文 介 绍 了 以 $3C44BOX 处 理 器 为 核 心、用
RTL8019AS作为网络接口芯片的嵌入式以太网接口
的具体软硬件方法。产品的性能高,价格适中,不仅可
用于工业现场实现现场节点的自动上网功能,而且可
以用于信息家电的以太网接口,可以实现远程控制,在
网上就可以控制家中的电器,具有很好的发展前景。
参 考 文 献
[1]S3CA510B Datasheet.Samsung.http://www.Samsung.tom
[2]RTL8019AS Datasheet.http://www.reahek.eom.taiwan
[3]Jean J Labrosse.嵌入式实时操作系统~e/osII.北京:北京
航空航天大学出版社,2003
[4]马忠梅,马广云,徐慧英,等.ARM嵌入式处理器结构与应
用基础 北京:北京航空航天大学出版社,2002
[5]邓龙军,梁志坤,王泽芳.单片机在以太网通信中的应用.
广东工业大学学报,2001,18(4):20~24
[6]田 泽,嵌入式系统开发与应用实验教程.北京:北京航空
航天大学出版社,2004 .
维普资讯 http://www.cqvip.com