基于ARM核嵌入式微處理器的以太網(wǎng)應(yīng)用
1 引言
隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,嵌入式技術(shù)得到廣闊的發(fā)展空間,特別是進(jìn)入20世紀(jì)90年代以來(lái),嵌入式技術(shù)的發(fā)展和普及更為引人注目,已經(jīng)成為現(xiàn)代工業(yè)控制、通信類(lèi)和消費(fèi)類(lèi)產(chǎn)品發(fā)展的方向,在通信領(lǐng)域,眾多網(wǎng)絡(luò)設(shè)備如voip,wirelesslan,adsl等都包含有大量嵌入式技術(shù)的成份,廣播電視在向數(shù)字化的趨勢(shì)發(fā)展,dvb,dab技術(shù)也逐漸在全面推廣起來(lái),個(gè)人消費(fèi)類(lèi)產(chǎn)品,如pda、數(shù)碼相機(jī)、mp3播放器等產(chǎn)品都離不開(kāi)嵌入式技術(shù)的支持,嵌入式技術(shù)在atm、可視電話、汽車(chē)的abs等產(chǎn)品中也都有大量的應(yīng)用,此外,軍事領(lǐng)域之中也處處可見(jiàn)嵌入式技術(shù)的身影,如單兵信息終端,便攜式保密機(jī),戰(zhàn)場(chǎng)指揮系統(tǒng)等,可以說(shuō),嵌入式系統(tǒng)已經(jīng)滲透到人們?nèi)粘I钜灾羾?guó)家安全防御體系之中。
嵌入式技術(shù)發(fā)展的核心是嵌入式微控制芯片技術(shù)的發(fā)展,當(dāng)今微控制芯片功能變得越來(lái)越強(qiáng),種類(lèi)更為繁多,如mips,powerpc,x86,arm,pic等,但這些嵌入式處理器受到價(jià)格以及兼容性等因素要求的限制,應(yīng)用狀況有所不同,mips和powerpc處理器市場(chǎng)定位較高,對(duì)于成本敏感的應(yīng)用并不合適,而x86系列處理器要與8068、286、386等保持兼容性,使用相同的指令集,從而限制了cpu系統(tǒng)性能的提高,當(dāng)今嵌入式領(lǐng)域中使用最為廣泛的是基于arm體系結(jié)構(gòu)的嵌入式處理器,其占據(jù)了80%以上的32位嵌入式處理器市場(chǎng)份額,從發(fā)展之初至今,arm公司已經(jīng)推出arm7,arm9,arm9e,arm10,securcore以及intel的strong arm和xscale等一系列的產(chǎn)品。這些不同版本的處理器內(nèi)核,雖一脈相承,但應(yīng)用背景不同,例如,arm7系列處理器針對(duì)功耗和陳本要求比較苛刻的應(yīng)用而設(shè)計(jì)的;而arm9系列處理器主要應(yīng)用于下一代的無(wú)線設(shè)備;securcore則是專(zhuān)為安全設(shè)備而定制的[1]。
技術(shù)的發(fā)展要與實(shí)際應(yīng)用相結(jié)合,才能體現(xiàn)出技術(shù)進(jìn)步的價(jià)值,嵌入式系統(tǒng)的發(fā)展正如日中天,基于arm核嵌入式微處理器的以太網(wǎng)的嵌入式控制實(shí)現(xiàn)也正在國(guó)內(nèi)外如火如荼的展開(kāi),以太網(wǎng)在實(shí)時(shí)操作、可靠傳輸、標(biāo)準(zhǔn)統(tǒng)一等方面的卓越性能及其便于安裝、維護(hù)簡(jiǎn)單、不受通信距離限制等優(yōu)點(diǎn),已經(jīng)被國(guó)內(nèi)外很多監(jiān)控、控制領(lǐng)域的研究人員廣泛關(guān)注,并在實(shí)際應(yīng)用中展露出顯著的優(yōu)勢(shì)。
2 arm處理器體系的結(jié)構(gòu)
迄今為止,arm體系一共定義了6個(gè)版本,版本號(hào)為1-6,從版本1到版本6,arm體系的指令集功能不斷增強(qiáng),同時(shí),各版本中還有一些變種,這些變種定義了該版本指令集中不同的功能。如支持thumb指令集、支持長(zhǎng)乘法指令集、增量型dsp指令集、java加速器、媒體功能擴(kuò)展指令等。這些變種的指令都是針對(duì)不同的應(yīng)用而產(chǎn)生的,arm處理器系列中的各種處理器,由于采用的實(shí)現(xiàn)技術(shù)各不相同,性能差別很大,應(yīng)用的場(chǎng)合也有所不同,這必然引出應(yīng)用程序代碼的可重用性問(wèn)題,例如:一段在samsung公司的arm處理器上運(yùn)行良好的代碼,如果把處理器換成了atmel公司的arm處理器,是否也可以穩(wěn)定可靠地工作呢?答案就是只要處理器支持相同的arm體系版本,基于他們的應(yīng)用軟件將是兼容的。
arm處理器目前包括下面幾個(gè)系列的處理器產(chǎn)品:arm7系列、arm9系列,arm9e系列、arm10系列,securcore系列,intel的xscale和strongarm,arm9系列處理器是新近推出且性能比較穩(wěn)定的一個(gè)系列,包括arm920t,art922t,arm940t三種類(lèi)型,適用不同需求的市場(chǎng),本課題所選用的s3c2410x嵌入式處理器就是以arm920t為核心的。
arm9系列處理器主要特點(diǎn)如下:支持32位arm指令集和16位thumb指令集;5級(jí)流水線;單一的32位amba總線接口;mmu支持windows ce。palm os,symbian os,linux等,mpu支持實(shí)時(shí)操作系統(tǒng),包括vxworks;統(tǒng)一的數(shù)據(jù)cache和指令cache[2]。
在arm存儲(chǔ)系統(tǒng)中,使用內(nèi)存管理單元(mmu)實(shí)現(xiàn)虛擬地址到實(shí)際物理地址的映射。利用mmu,可把sdram的地址完全映射到0x0起始的一片連續(xù)地址空間,而把原來(lái)占據(jù)這片空間的flash或者rom映射到其他不相沖突的存儲(chǔ)空間位置。例如,flash的地址從0x0000
0000~0x00ff ffff,而sdram的地址范圍是0x3000 0000~ox3lff ffff,則可把sdram地址映射為0x0000
0000~oxlfff ffff而flash的地址可以映射到ox9000 0000~ox90ff ffff(此處地址空間為空閑,未被占用)。映射完成后,如果處理器發(fā)生異常,假設(shè)依然為irq中斷,pc指針指向oxl8處的地址,而這個(gè)時(shí)候pc實(shí)際上是從位于物理地址的ox3000
0018處讀取指令。通過(guò)mmu的映射,則可實(shí)現(xiàn)程序完全運(yùn)行在sdram之中。在實(shí)際的應(yīng)用中.可能會(huì)把兩片不連續(xù)的物理地址空間分配給sdram。而在操作系統(tǒng)中,習(xí)慣于把sdram的空間連續(xù)起來(lái),方便內(nèi)存管理,且應(yīng)用程序申請(qǐng)大塊的內(nèi)存時(shí),操作系統(tǒng)內(nèi)核也可方便地分配。通過(guò)mmu可實(shí)現(xiàn)不連續(xù)的物理地址空間映射為連續(xù)的虛擬地址空間。操作系統(tǒng)內(nèi)核或者一些比較關(guān)鍵的代碼,一般是不希望被用戶(hù)應(yīng)用程序訪問(wèn)。通過(guò)mmu可以控制地址空間的訪問(wèn)權(quán)限,從而保護(hù)這些代碼不被破壞。
mmu的實(shí)現(xiàn)過(guò)程,實(shí)際上就是一個(gè)查表映射的過(guò)程。建立頁(yè)表(translate table)是實(shí)現(xiàn)mmu功能不可缺少的一步。頁(yè)表是位于系統(tǒng)的內(nèi)存中,頁(yè)表的每一項(xiàng)對(duì)應(yīng)于一個(gè)虛擬地址到物理地址的映射。每一項(xiàng)的長(zhǎng)度即是一個(gè)字的長(zhǎng)度(在arm中,一個(gè)字的長(zhǎng)度被定義為4b)。頁(yè)表項(xiàng)除完成虛擬地址到物理地址的映射功能之外,還定義了訪問(wèn)權(quán)限和緩沖特性等。
mmu的映射分為兩種,一級(jí)頁(yè)表的變換和二級(jí)頁(yè)表變換。兩者的不同之處就是實(shí)現(xiàn)的變換地址空間大小不同。一級(jí)頁(yè)表變換支持1 m大小的存儲(chǔ)空間的映射,而二級(jí)可以支持64
kb,4 kb和1 kb大小地址空間的映射[3]。mmu的一級(jí)映射圖如圖1所示。
3 嵌入式處理器的選型
一個(gè)系統(tǒng)必然以硬件平臺(tái)為依托.設(shè)計(jì)嵌入式系統(tǒng)時(shí),要從全局以及今后的發(fā)展角度出發(fā)考慮硬件平臺(tái)的整體設(shè)計(jì),不能以簡(jiǎn)單功能實(shí)現(xiàn)作為設(shè)計(jì)的最終目標(biāo)。在設(shè)計(jì)過(guò)程中,主要需要考慮以下幾個(gè)方面:
3.1 芯片選擇
要選擇通用性強(qiáng)、功能完備、穩(wěn)定可靠的芯片。當(dāng)今的很多處理器芯片,多為基于soc結(jié)構(gòu),內(nèi)置很多通用接口控制器,使用簡(jiǎn)單且可極大地降低成本;要選擇具有代表性的芯片,市場(chǎng)上的某些芯片只是作為過(guò)渡產(chǎn)品銷(xiāo)售,用于原理性、市場(chǎng)性驗(yàn)證,當(dāng)芯片功能趨于穩(wěn)定、市場(chǎng)需求較大時(shí),通常會(huì)推出一款代表性芯片。對(duì)于設(shè)計(jì)人員來(lái)說(shuō),需要了解什么型號(hào)是具有代表性的,以保證可靠的貨源供應(yīng)。不同的應(yīng)用場(chǎng)合,對(duì)芯片的級(jí)別要求不同,盡可能選擇符合更高標(biāo)準(zhǔn)的芯片,以保證整個(gè)系統(tǒng)的穩(wěn)定性和可靠性[4]。
3.2 電路設(shè)計(jì)上要有處理突發(fā)事件的能力并易于功能擴(kuò)展
系統(tǒng)在運(yùn)行的情況下,常會(huì)遇到不可預(yù)測(cè)的外部事件,這就要求系統(tǒng)具有處理突發(fā)事件的能力.如利用看門(mén)狗、軟復(fù)位措施保證系統(tǒng)遇到非期望事件后可以重新啟動(dòng)運(yùn)行。同時(shí)系統(tǒng)設(shè)計(jì)也要考慮到硬件擴(kuò)展以及升級(jí)的能力,如,在設(shè)計(jì)存儲(chǔ)器結(jié)構(gòu)時(shí),要考慮電路結(jié)構(gòu)可兼容不同容量的存儲(chǔ)器甚至于不同廠家的芯片;如使用可編程邏輯器件cpld或者fpga時(shí),宏單元要有盈余等。
3.3 以軟件代硬件
嵌入式系統(tǒng)的軟件升級(jí)要比硬件升級(jí)更容易,且在開(kāi)發(fā)過(guò)程中,軟件調(diào)試一般不會(huì)對(duì)硬件造成物理上的損壞。在滿(mǎn)足實(shí)時(shí)性的前提下,盡可能地用軟件代替硬件。不僅可減小硬件電路的開(kāi)銷(xiāo)和電路板的尺寸,同時(shí)又方便調(diào)試,減小了硬件損壞的可能,并進(jìn)一步降低成本。
3.4 布局布線
嵌入式處理器工作在幾百兆的頻率下已是很常見(jiàn)的事情了,在高頻電路板設(shè)計(jì)時(shí),要注意電路的布局和信號(hào)線的走向,高頻信號(hào)要盡量遠(yuǎn)離其他信號(hào),盡量減小地彈、串?dāng)_等干擾,以及電路中的電磁干擾和熱設(shè)計(jì)等。
目前,世界上各大芯片生產(chǎn)商紛紛推出自己的arm芯片,其專(zhuān)注的應(yīng)用背景不同,各有自己的特色。arm7和arm9是目前arm處理器中應(yīng)用較多、技術(shù)成熟的兩大系列arm芯片。相比較而言,arm9系列處理器無(wú)論從處理速度、外設(shè)接口以及應(yīng)用范圍等方面都更勝一籌。intel的xscale系列處理器,雖然各方面性能比較突出,但是其較高的定位,并不適合于大多數(shù)應(yīng)用場(chǎng)合。而atmel公司生產(chǎn)的at91rm9200處理器,定位于工業(yè)過(guò)程控制,外設(shè)接口不夠齊全。
本文選擇了samsung公司的ss3c2410x作為系統(tǒng)的嵌入式處理器。這是一款以arm920t為核心的嵌入式處理器,面向低端應(yīng)用,價(jià)格低廉。該芯片具有較高的處理速度,通過(guò)內(nèi)部的鎖相環(huán),最高可在200
mhz的系統(tǒng)時(shí)鐘下運(yùn)行。并且,s3c2410x具有極低的功耗。核電壓為1.8 v供電,外圍i/o口使用3.3 v的電壓,具有3種低功耗控制方式,甚至可以把cpu中除了喚醒邏輯之外的所有功能都關(guān)閉,極大地降低了功耗。與其他的arm芯片相比,s3c2410x在片上集成了更多外設(shè)接口。例如:外部存儲(chǔ)器控制器;lcd,dma,usb1.1,sd,mmc卡控制器,uart,spi接口;i2c總線控制器和iis總線控制器,pwm定時(shí)器,看門(mén)狗,117個(gè)外部i/o口,24個(gè)外部中斷源,adc和觸摸屏接口,實(shí)時(shí)時(shí)鐘以及片上pll的時(shí)鐘產(chǎn)生等。使用集成的接口,可方便地進(jìn)行功能擴(kuò)展。
s3c2410x另一個(gè)優(yōu)點(diǎn)是具有小巧的外形,嵌入式應(yīng)用希望硬件尺寸越小越好s3c2410x采取了ubga封裝,整個(gè)芯片大小僅為14
mm×14 mm,相當(dāng)于普通人拇指指甲的大小。雖然在如此小的體積上,集成了如此之多的功能,但其價(jià)格與普通處理器相當(dāng)。從各種方面考慮,s3c2410x具有極高的性?xún)r(jià)比以及應(yīng)用價(jià)值,且易于開(kāi)發(fā)和功能擴(kuò)展,因此很適合作為嵌入式系統(tǒng)的中央處理器。
4 以太網(wǎng)模塊實(shí)現(xiàn)
s3c2410x本身并無(wú)網(wǎng)絡(luò)控制器,實(shí)現(xiàn)以太網(wǎng)接入需增加獨(dú)立的以太網(wǎng)控制器。以太網(wǎng)控制器芯片選用cirrus公司的cs8900a。他是一個(gè)真正的單芯片,全雙工以太網(wǎng)解決方案。本身集成了由mac層到phy層所有的邏輯功能,包括了一個(gè)以太網(wǎng)電路所必需的所有的模擬和數(shù)字電路。芯片可以自動(dòng)檢查連接狀態(tài),單獨(dú)進(jìn)行載波偵聽(tīng)、沖突檢測(cè)、錯(cuò)誤重傳以及自動(dòng)填充、crc校驗(yàn)等功能。對(duì)于處理器來(lái)說(shuō),對(duì)網(wǎng)絡(luò)芯片的訪問(wèn)和控制,如同一段內(nèi)存空間或者是分配的幾個(gè)i/o空間一樣。集成了一個(gè)4
kb的片上存儲(chǔ)器,用于臨時(shí)保存發(fā)送和接收到的物理幀以及內(nèi)部寄存器的值,從而減輕了cpu的負(fù)擔(dān),簡(jiǎn)化了軟件的復(fù)雜度。cs8900a還支持軟件復(fù)位,當(dāng)由于某些預(yù)料之外的事件發(fā)生,致使芯片功能紊亂網(wǎng)絡(luò)通信阻斷,可通過(guò)軟件復(fù)位重新啟動(dòng)網(wǎng)絡(luò)通信功能,保證網(wǎng)絡(luò)通信的健壯性。
以太網(wǎng)與cpu的示意性連接如圖2所示,cs8900a與cpu可以使用dma,i/o以及memory方式通信。為了提高與處理器間的訪問(wèn)速度,圖中把cs8900a設(shè)計(jì)為memory模式。cs8900a復(fù)位默認(rèn)方式為i/o模式,雖可通過(guò)e2prom將其配置為memory模式,但處于降低成本考慮,把電路設(shè)計(jì)為i/o,memory兼容的連接方式,由軟件將其設(shè)置為memory模式。相對(duì)于s3c2410x的訪問(wèn)周期來(lái)說(shuō),cs8900a響應(yīng)時(shí)間大于其訪問(wèn)周期,屬慢速設(shè)備??赏ㄟ^(guò)nwait信號(hào)延長(zhǎng)處理器的訪問(wèn)周期。使用全局復(fù)位信號(hào)作為芯片的復(fù)位信號(hào),利用高電平觸發(fā)中斷,通知cpu事件的發(fā)生。
5 結(jié)語(yǔ)
隨著電路中信號(hào)頻率的提高,嵌入式系統(tǒng)中高速電路板設(shè)計(jì)已經(jīng)成為沒(méi)計(jì)人員非常關(guān)心的問(wèn)題了。因此在系統(tǒng)設(shè)計(jì)過(guò)程中,還要考慮當(dāng)信號(hào)速度高,端接元件的布局不正確或者高速信號(hào)的錯(cuò)誤布局等引起的信號(hào)完整性問(wèn)題,這些問(wèn)題都可能導(dǎo)致系統(tǒng)輸出不正確的數(shù)據(jù),電路不能正常工作甚至完全不能工作。
本文設(shè)計(jì)的系統(tǒng)充分考慮到走線技巧。對(duì)外加電源以及dc—dc變換輸出,利川22μf的電解電容和o.01μf的陶瓷電容濾波;在芯片的每個(gè)電源引腳,就近使用o.1μf的濾波電容;cpu的片選、讀寫(xiě)、中斷等信號(hào)線串聯(lián)22ω的電阻,達(dá)到阻抗匹配的目的;對(duì)數(shù)據(jù)線、地址線等,進(jìn)行等長(zhǎng)處理;時(shí)鐘線對(duì)其進(jìn)行包地保護(hù);利用eda工具的在線檢查功能,避免了人造環(huán)路的產(chǎn)生等。采取這些措施后,整個(gè)系統(tǒng)多次在不同環(huán)境連續(xù)運(yùn)行數(shù)百小時(shí)以上未出現(xiàn)任何故障,足以證明其良好的穩(wěn)定性和可靠性。
評(píng)論