電子設備日趨網絡化的背景下,作為目前廣泛使用的以太網以及TCP/IP 協議已經成為事實上最常用的網絡標準之一,它以高速、可靠、分層以及可擴充性使得它在各個領域的應用越來越靈活,很多情況下運用以太網和TCP/IP,能夠簡化結構和降低成本。但是,目前關于嵌入式以太網的設計方案不是很多,在這不多的方案中,大多是基于單片機或DSP 的。兩者都存在要外擴很多外設的問題,并且前者速度太慢,后者成本又太高,這在一些對設備尺寸要求很小的場合是不行的。 本設計中,采用了基于ARM內核的微處理器S3C44BOX為基礎的嵌入式系統與10MB 以太網控制芯片RTL8019AS 的接口電路和實現方法。 S3C44BOX芯片的介紹S3C44BOX 是基于ARM7TDMI 內核的16/32位RISC處理器。功能強大,目前已廣泛應用于手持設備、因特網設備、網絡、調制解調設備等領域。其主要特點如下。 1)拓展存儲控制器(帶FP/EDO/SDRAM 控制器,片選邏輯)。 2)8KBCache/SRAM。 3)LCD控制器(可直接控制DSTN/STN 的各種灰度/256 彩色LCD 屏,最大支持分辨率為1600 1 600)。 4)2通道UART,波特率可高達115200B/s,并內置16字節FIFO,同時兼容Irdal.0規范。 5)I2C和I2S接口(音頻數據接口)。 6)71個通用I/O 端口和8 個外部中斷。 7)5路PWM 定時器和1 路內部定時器。 8)8通道10位ADC(采樣速率為100Kbit/s)。 9)2路GDMA/2路外圍DMA 。 10)電源控制器。 11)看門狗。 12)實時時鐘。 硬件電路組成 本方案硬件電路使用的芯片主要有微處理器S3C44BOX、RTL8019AS、74LV138和FB2022(網卡變壓器),其硬件框圖如附圖所示。處理器S3C44BOX與RTL8019AS的接口采用UTP RJ-45接口。RTL8019AS與主機有三種接口工作模式: *跳線方式,網卡的I/O和中斷由跳線決定。 *即插即用方式,由軟件進行自動配置plug and play。 *免跳線方式,網卡的I/O和中斷由外界的93C46里的內容決定。 在嵌入式應用場合,如果不使用93C46的話,可以降低成本,同時又減少連線,因此,本文采用第1 種方式即跳線方式,即通過設置RTL8019AS的65腳jp為高電平(接到Vcc或通過一個10kΩ的上拉電阻)來實現。 RTL8019AS是性價比高且帶有即插即用功能的全雙工以太網控制器,它的主要特點包括:符合EthernetⅡ與IEEE802.3標準;全雙工,收發可同時達到10Mbit/s的速率;內置16KB的SRAM,用于收發緩沖,減低對主處理器的要求;支持UTP、AUI、BNC自動檢測,還支持對10BaseT拓撲結構的自動極性修正;允許4個診斷LED 引腳編程輸出。RTL8019AS內部有2個RAM區:1塊16KB,地址為0x4000~0x7fff;1塊32 B,地址為0x0000~0x001f。RAM 按頁存儲,每256 B為一頁。 本方案中將RTL8019AS 的RAM 的前12 頁(0x4000~0x4Bff)作為發送緩沖區,后52頁(0x4c00~0x7fff)作為接收緩沖區,第0頁只有32B,用來存儲以太網的物理地址。 RTL8019AS 具有32 個輸出/ 輸出地址,地址偏移量為00H~1FH。其中00H~0FH 具有16 個地址為寄存器的地址,寄存器分為page0~page3,由RTL8019AS 中的命令寄存器CR中的PS1 和PS0 位來決定要訪問的頁。復位端口包括18H~1FH 共8 個地址,用于RTL8019AS 的復位。 軟件設計 編寫控制以太網接口程序的步驟。 (1)μC/OS Ⅱ實時操作系統的移植 μc/os Ⅱ是一種開放源碼的實時嵌入式操作系統,是一個可移植,可裁減,可固化的占先式多任務操作系統,已被應用到多種微處理器上,其大部分源碼是ANSI C 語言編寫的。 移植工作包括以下幾個內容:a.設置:OS_CPU.H 中與處理器和編譯器相關的代碼。b.用C 語言改寫OS_CPU_C.C 中6個與操作系統相關的簡單函數。c. 用匯編語言改寫OS _CPU _A..ASM 中的4 個與處理器相關的函數。 1)OS_CPU.H 文件包括#define、typedef定義與CPU相關信息。因不同的處理器有不同的字長,所以μC/OS Ⅱ的移植包括一系列的類型定義,以確保可移植性。如INT16U 數據類型總是代表16 位無符號整數,將μC/OS Ⅱ移植到32 位處理器上,也就意味著INT16U 實際上為無符號短整型數而不是無符號整型數。 2)OS _CPU _C.C 文件OSTaskCreatHook()、OSTaskDelHook()、OSTaskSwhook()、OSTaskStatHook()、OSTaskCreakHook(),這些函數為用戶定義,實際需要修改的只有OSTaskStkIinit()函數。OSTaskStkIinint()用來初始化任務堆棧,初始狀態的堆棧模擬發生一次中斷后的堆棧結構。由于在ARM 中堆棧是按32 位數據類型來進行操作,所以堆棧數據類型OS _STK 聲明為32 位無符號整數。 3)OS _CPU _A.ASM 文件這里要實現4 個匯編函數改寫:多任務啟動函數中調用OSSTartHightRdy()、任務切換函數OSCtxSw()、中斷任務切換OSIntCtxSw()和時鐘節拍服務函數OSTickISR()。任務切換函數OSCtxSw(),由任務切換函數OS _TASK _SW()進入。如果任務執行了某個函數,其結果改變了當前任務的狀態[如OSTaskSuspend()、OSTimeDly()],或者是改變了別的任務的狀態[OSTaskResum()、O S T i m e D l y R e s u m e ( ) ]都要引起新的任務調度函數[OSSched()]執行OS _TASK _SW()。OSIntCtxSw()是在ISR中被調用的,其代碼與OSCtxSw () 類似。OSStartHightRdy()由OSStart ()函數調用,功能是運行優先級最高的任務。OSTickISR()是時鐘節拍中斷,用戶應該在OSStart()運行 后,μC/OS Ⅱ啟動運行的第一個任務中初始化節拍中斷。 (2)初始化RTL8019AS 初始化部分完成RTL8019AS 在使用之前的初始化工作,設置相關工作模式的寄存器,分配和初始化接收和發送緩沖區,初始化網卡接收地址。 (3)傳輸數據包 發送部分只要把數據寫入緩沖區, 啟動執行命令,RTL8019AS 自動發送。一般在RAM 內開辟2 個以太網數據包的空間作為發送緩沖區。作為一個集成的以太網芯片,數據的發送校驗,總線數據包的碰撞檢測與避免是由芯片自己完成的。只需要配置發送數據的物理層地址、源地址、目的地址、數據包類型以及發送的數據就可以了。 (4)接收數據包 它是完成數據接收任務,RTL8019AS 接收到以太網數據包后自動將其存在接收緩沖區并發出中斷信號,S3C44BOX在中斷程序里通過D M A 就可接收到數據,即通過遠端D M A把數據從RTL8019AS 的RAM 空間,讀回ARM 中處理。這里主要是對一些相關的寄存器進行操作。RTL8019AS 芯片具有性價比高,連接方便等特點,是進行嵌入式以太網設計時的首選的控制芯片。本文介紹了以S3C44BOX 處理器為核心,用RTL8019AS 作為網絡接口芯片的嵌入式以太網接口的具體軟硬件方法。產品的性能高,價格適中,不僅可用于工業現場實現現場節點的自動上網功能,而且可以用于信息家電的以太網接口,可以實現遠程控制,在網上就可以控制家中的電器,具有很好的發展前景。 |