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