基于S3C44B0X的嵌入式以太網接口設計
互聯網
摘要: 在互聯網絡和局域網絡飛速發(fā)展的今天,計算機進行網絡互聯的同時,,各種家電設備,、儀器儀表,、工業(yè)生產中的數據采集和控制正在走向網絡化,。
Abstract:
Key words :
在互聯網絡和局域網絡飛速發(fā)展的今天,,計算機進行網絡互聯的同時,,各種家電設備,、儀器儀表,、工
業(yè)生產中的數據采集和控制正在走向網絡化。
以太網(Ethemet)由于它的普遍性及低廉的接口價格,,因而已經作為一種最通用的網絡,,廣泛應用于生產和生活中。另一方面,,嵌入式設備在價格,、體積及實時性等方面是通用計算機無法比擬的,也已廣泛應用于自動化控制,、數據采集,、通信網絡等領域。因此,,嵌入式以太網技術有著廣闊的前景,,首先要解決的問題就是嵌入式以太網接口問題。
本文基于最常用的嵌入式處理器S3C44B0X和以太網驅動器RTL8019AS來設計了一款嵌入式以太網接口。本設計的特點是,,既可僅用于嵌入式以太網驅動設備,,方便簡單,又可進行擴展其他模塊,,必要時可以移植操作系統(tǒng),,應用于其他復雜領域。本文從RTL8019AS的內部結構工作原理出發(fā),,介紹了基于 S3C44B0X的硬件接口電路,,詳細說明了基于硬件層的驅動程序C語言的設計。
1以太網幀結構
一個標準的以太網物理傳輸幀由7部分組成:PR(同步位),、SD(分隔位),、DA(目的地址)、SA(源地址位),、TYPE(類型字段),、DATA(數據段)、FCS(幀校驗),。
其傳輸幀結構(及各部分長度)如圖1所示,。
除了數據段的長度不定外,其他部分的長度固定不變,。數據段為46~1500字節(jié),。以太網規(guī)定整個傳輸包的最大長度不能超過1514字節(jié)(14字節(jié)為DA、 SA,、TYPE),,最小不能小于60字節(jié)。需填充時,,填充字符的個數不包括在長度字段中,;超過1 500字節(jié)時,需拆成多個幀傳送,。事實上,,發(fā)送數據時,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(鎖相環(huán))倍頻器,可根據需要進行接口擴展,,并且價格低廉,,目前已被廣泛應用于嵌入式領域中。
RTL8019AS是在嵌入式領域應用廣泛且性價比很高的網絡控制芯片,。RTL8019AS的主要性能有:符號EthernetⅡ與IEEE 802.3(10Base5,、10Base2、10BaseT)標準,;全雙工,,收發(fā)可同時達到10 Mbit/s的速率;內置16 kB的SRAM,,用于收發(fā)緩沖,,降低對主處理器的速度要求;支持8/16位數據總線,,8個中斷申請線以及16個I/O基地址選擇,;支持UTP,、AUI,、 BNC自動檢測,還支持對10BaseT拓撲結構的自動極性修正,;允許4個診斷LED引腳可編程輸出,。
RTL8019AS可分為以下幾部分功能模塊:
a)遠程DMA接口:處理器與RTL8019AS收發(fā)緩沖的連接通道,處理器只需對遠程DMA操作,。
b)本地DMA接口:RTL8019AS與網線的連接通道,,完成控制器與網線的數據交換。
c)MAC(介質訪問控制)邏輯:完成對遠程DMA和本地DMA數據包傳輸,、中斷的產生等自動控制,。
d)地址識別邏輯:將接收到的數據幀中的目的地址和地址寄存器中的地址進行比較,,判斷其是否為發(fā)到本地的幀。
e)CRC(循環(huán)冗余校驗)產生校驗邏輯:在發(fā)送數據時,,產生CRC碼,,對接收幀進行CRC。
f)協議PCA:負責實施以太網規(guī)范,。
RTL8019AS內部有16kB SRAM,,分為64頁,256字節(jié)/頁,,組成環(huán)形隊列作為收發(fā)緩沖區(qū),,只能按頁操作,頁地址從0x4000~0x7FFF,??梢酝ㄟ^相關的寄存器讀寫操作,可以對緩沖區(qū)進行設置及狀態(tài)的讀取,。由于接收緩沖區(qū)是按頁即256 B來操作的,,與緩沖區(qū)地址有關的寄存器中只需存儲緩沖區(qū)的高16位地址即可。在本設計中,,將前32頁(0x400~0x5fff)作為接收緩沖區(qū),,將后 32頁(0x6000~0x7ff)作為發(fā)送緩沖區(qū)。
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頁的寄存器很重要,,用于數據收發(fā)的控制和中斷管理等,,使用前必須對其進行配置,。第2頁和第3頁只用于診斷和其他一些配置,很少使用,。
3設計思路
首先,,S3C44B0X通過RTL8019AS的I/O口,對其相關寄存器進行配置,。在通信時,,S3C44B0X與RTL8019AS的收發(fā)緩存器的數據交換由遠程DMA控制,而RTL81019AS收發(fā)緩存器與以太網總線之間的數據交換由它的本地DMA控制,。RTL8019AS通過中斷的方式通知 S3C44B0X數據收發(fā)的結果和狀態(tài),,S3C44B0X通過查詢中斷狀態(tài)寄存器的值,作出相應處理,。
系統(tǒng)結構如圖2所示,。
4接口電路設計
接口電路如圖3所示。
S3C 44B0X的nOE,、nWE分別與RTL8019AS的IORB,、IOWB相連,控制數據的讀和寫操作,,低電平有效,。RTL8019使用中斷0,對應S3C4480的外部中斷1,。
RTL8019AS RTL8019AS有3種工作方式:
a)跳線方式:I/O和中斷由跳線決定,;
b)即插即用方式(PNP):由軟件進行自動配置,使用這種方法時,,系統(tǒng)的啟動程序必須包含支持PNP的函數,;
c)免跳線方式:I/O和中斷由外接的EEPROM93C46中的內容決定。
b)即插即用方式(PNP):由軟件進行自動配置,使用這種方法時,,系統(tǒng)的啟動程序必須包含支持PNP的函數,;
c)免跳線方式:I/O和中斷由外接的EEPROM93C46中的內容決定。
在本設計中,,為了降低啟動程序和接口電路的復雜性,,選擇跳線方式,故JP接高電平,。
X1,、X2分別為20 MHz晶振的輸入輸出端。LED0~2分別連接3個發(fā)光二極管,,指示網絡連接,、數據傳輸和發(fā)送的情況,。 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個函數,即系統(tǒng)的初始化函數,、接收數據包函數,、發(fā)送數據包函數。初始化部分完成RTL8019AS在使用之前的初始化工作,,包括設置相關工作模式的寄存器,、分配和初始化接收和發(fā)送緩沖區(qū)、初始化網卡接收地址等,。
MAR0-MAR7-多點地址寄存器:這8個寄存器的值是根據多播地址數組的值生成的,,提供對多播地址的過濾,過濾掉一些不屬于自己接收多播數據包,。
這里均設為FFH,,接所有多播地址的數據包:
下面6條語句設置MAC地址,寄存器為PAR0~PAR5:實際地址寄存器,,這些寄存用來對目標地址數據包進行比較,,以確定接收或者拒絕接收。地址放在數組add[6]中,。
5.2數據的傳輸和發(fā)送
數據的傳輸和發(fā)送由本地DMA傳輸和與遠程DMA傳輸兩部分完成,,前者大部分工作由RTL8019AS自動完成,我們要做的是設置收發(fā)緩沖區(qū)的大小及指針變量,,這些工作在RTL8019AS的初始化時已完成,,因此只需要編寫遠程DMA讀寫函數。對遠端DAM口的讀寫,,不同的只是數據傳輸方向,,這里,僅以讀操作為例,,即編寫從RTL8019AS接收緩沖區(qū)取數據包到S3C4480X,。(注意:遠程DMA的寫函數,即向RTL8019AS發(fā)送緩沖區(qū)寫數據函數 --send_data()省略,。)
5.3以太網接口通信函數流程
這里采用中斷和查詢相結合的方式來決定是否發(fā)送和接收數據,。當RTL8019AS的ISR(中斷狀態(tài)寄存器)的任意一中斷位置位時,,S3C4B0X都要對其進行中斷相應(在這里只關注第0中斷位和第1中斷位,即分別反映RTL8019AS已正確接收到數據和已成功發(fā)送數據包,,因此在初始化函數中將其他位屏蔽),。這時要對ISR進行訪問,來判斷是何種中斷,,進而作出相應的響應,,如圖4所示。
6結束語
本設計經過軟硬件的調試,,并已成功地進行以太網數據傳輸,。由于S3C4480X出眾的性價比及豐富的外圍接口,通過擴展本設計可以應用到嵌入式儀器儀表,、工業(yè)數據采集網絡,、嵌入式網絡控制等許多領域。
此內容為AET網站原創(chuàng),,未經授權禁止轉載,。