拿起手術(shù)刀 深入剖解路由器的“心臟”技術(shù)
⑵以太網(wǎng)交換電路設(shè)計(jì)介紹
以太網(wǎng)交換電路主要是采用五口交換芯片RTL8305SB來(lái)實(shí)現(xiàn)。RTL8305SB是一個(gè)集成了片內(nèi)存儲(chǔ)器,五個(gè)MAC層接口,五個(gè)物理層(PHY)接口的l0M/l00M自適應(yīng)的五口交換芯片,該集成芯片具有低功耗,可靈活配置為五口小型辦公及家用(SOHO)交換機(jī),家用網(wǎng)關(guān),xDSL路由器及其它智能應(yīng)用。要實(shí)現(xiàn)必要的網(wǎng)絡(luò)功能,這部分的電路是關(guān)鍵中的關(guān)鍵。
操作系統(tǒng)介紹
1、Linux
Linux是一個(gè)誕生于網(wǎng)絡(luò),成長(zhǎng)于網(wǎng)絡(luò)且成熟于網(wǎng)絡(luò)的奇特的操作系統(tǒng)。1991年,芬蘭大學(xué)生Linus Torvalds萌發(fā)開(kāi)發(fā)了一個(gè)自由的UNIX操作系統(tǒng)的想法,并將Linux通過(guò)Internet進(jìn)行發(fā)布。從此一大批編程人員加入到開(kāi)發(fā)過(guò)程中來(lái),Linux逐漸成長(zhǎng)起來(lái)。Linux一開(kāi)始要求所有的源代碼必須公開(kāi),后來(lái)轉(zhuǎn)向GPL( GNUG eneral Public Licence),成為GUN的陣營(yíng)的主要一員。只要遵守GPL的規(guī)定,就可以免費(fèi)獲得復(fù)制,因此Linux是一個(gè)免費(fèi)軟件。同樣,Linux下遵循GPL規(guī)定的C, C++, Java等一系列的工具開(kāi)發(fā)包,從功能的角度上看并不亞于商用的開(kāi)發(fā)包,但卻可以極大的降低開(kāi)發(fā)成本,這一優(yōu)勢(shì)是其它商用操作系統(tǒng)無(wú)法比擬的。
Linux 操作系統(tǒng)最突出的是網(wǎng)絡(luò)部分,基本上所有的網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)接口都可以在Linux上找到,Linux的內(nèi)核比標(biāo)準(zhǔn)的UNIX處理網(wǎng)絡(luò)協(xié)議更加高效,系統(tǒng)的網(wǎng)絡(luò)吞吐性能更好,這也是Linux網(wǎng)絡(luò)服務(wù)器市場(chǎng)上占據(jù)較大的市場(chǎng)分額的重要原因。對(duì)于一般的小型的SOHO路由器,Linux的網(wǎng)絡(luò)技術(shù)無(wú)疑是其開(kāi)發(fā)運(yùn)行的最佳選擇,Linux完全能對(duì)給其提供全方位的網(wǎng)絡(luò)技術(shù)支持。Linux作為互聯(lián)網(wǎng)的產(chǎn)物,許多關(guān)于Linux的文檔可以在Internet上下載到。
2、uClinux操作系統(tǒng)
uclinux是嵌入式Linux的一個(gè)分支,在uClinux這個(gè)英文單詞中u表示Micro,小的意思,C表示Control,控制的意思,所以u(píng)clinux就是Micro-Control-Linux,字面上的理解就是“針對(duì)微控制領(lǐng)域而設(shè)計(jì)的Linux系統(tǒng)”。同標(biāo)準(zhǔn)的Linux相比,由于uClinux自身不支持MMU,多任務(wù)的實(shí)現(xiàn)就需要技巧了。但是,在uClinux上運(yùn)行的絕大多數(shù)的用戶程序并不需要多任務(wù)。另外,針對(duì)uclinux內(nèi)核的二進(jìn)制代碼和源代碼都是經(jīng)過(guò)了重新編寫(xiě),以緊縮和裁剪基本的代碼。這就使得uClinux的內(nèi)核同標(biāo)準(zhǔn)的Linux內(nèi)核相比非常之小,但是它仍保持了Linux操作系統(tǒng)的主要的優(yōu)點(diǎn),如穩(wěn)定性、強(qiáng)大的網(wǎng)絡(luò)功能和出色的文件系統(tǒng)支持等。uclinux包含Linux常用的API、小于512K的內(nèi)核和相關(guān)的工具。操作系統(tǒng)所有的代碼加起來(lái)小于900KB。
uClinux簡(jiǎn)介
uClinux的基本架構(gòu)
在PC機(jī)上開(kāi)發(fā)應(yīng)用程序的用戶都會(huì)有這樣的感覺(jué),PC機(jī)有完善的操作系統(tǒng)并提供應(yīng)用程序接口(API),開(kāi)發(fā)好的應(yīng)用程序可以直接在操作系統(tǒng)上運(yùn)行。雖然嵌入式系統(tǒng)的應(yīng)用程序完全可以在裸板上運(yùn)行,但為了使系統(tǒng)具有任務(wù)管理、定時(shí)器管理、存儲(chǔ)器管理、資源管理、事件管理、系統(tǒng)管理、消息管理、隊(duì)列管理和中斷處理的能力,提供多任務(wù)處理,更好的分配系統(tǒng)資源的功能,用戶就需要針對(duì)自己的硬件平臺(tái)和實(shí)際應(yīng)用選擇適當(dāng)?shù)那度胧讲僮飨到y(tǒng)(Embedded Operating System,以下簡(jiǎn)稱EOS)。
由于本文實(shí)例中的硬件平臺(tái)是以不含MMU (Memory Management Unit,內(nèi)存管理單)的S3C4510B為核心的,因此采用不帶MMU的ARM 微處理器的嵌入式操作系統(tǒng)uclinux。uclinux 是一個(gè)完全符合GNUIGPL公約的操作系統(tǒng),完全開(kāi)放代碼,現(xiàn)在由Line。公司支持維護(hù)。uClinux從Linux 2.0(2.4內(nèi)核派生而來(lái),沿襲了主流Linux的絕大部分特性。它是專門(mén)針對(duì)沒(méi)有MMU的CPU,并且為嵌入式系統(tǒng)做了許多小型化的工作.適用于沒(méi)有虛擬內(nèi)存或內(nèi)存管理單元(MMU )的處理器,例如ARM7TDMI。
它通常用于具有很少內(nèi)存或Flash的嵌入式系統(tǒng)。uclinux是為了支持沒(méi)有MMU的處理器而對(duì)標(biāo)準(zhǔn)Linux作出的修正。它保留了操作系統(tǒng)的所有特性,為硬件平臺(tái)更好的運(yùn)行各種程序提供了保證。在GNU通用公共許可證(GNU GPL)的保證下,運(yùn)行uClinux操作系統(tǒng)的用戶可以使用幾乎所有的Linux API函數(shù),不會(huì)因?yàn)闆](méi)有MMU而受到影響。由于uClinux在標(biāo)準(zhǔn)的Linux基礎(chǔ)上進(jìn)行了適當(dāng)?shù)牟眉艉蛢?yōu)化,形成了一個(gè)高度優(yōu)化的、代碼緊湊的嵌入式Linux,雖然它的體積很小,uClinux仍然保留了Linux的大多數(shù)的優(yōu)點(diǎn):穩(wěn)定、良好的裁剪性、優(yōu)秀的網(wǎng)絡(luò)功能、完備的對(duì)各種文件系統(tǒng)的支持、以及標(biāo)準(zhǔn)豐富的API等。
BootLoader:負(fù)責(zé)uCLinux內(nèi)核的啟動(dòng),它用于初始化系統(tǒng)資源,包括SDRAM。這部分代碼用于建立uCLinux內(nèi)核運(yùn)行環(huán)境和從Flash中裝載初始化內(nèi)核鏡象。
內(nèi)核初始化:uCLinux內(nèi)核的入口點(diǎn)是start kernel() 函數(shù)。它初始化內(nèi)核的其他部分,包括捕獲,IRQ通道,調(diào)度,設(shè)備驅(qū)動(dòng),標(biāo)定延遲循環(huán),最重要的是能夠fork init進(jìn)程,以啟動(dòng)整個(gè)多任務(wù)環(huán)境。
系統(tǒng)調(diào)用函數(shù)/捕獲函數(shù):在執(zhí)行完“init”程序后,內(nèi)核對(duì)程序流不再有直接的控制權(quán),此后,它的作用僅僅是處理異步事件(例如硬件中斷)和為系統(tǒng)調(diào)用提供進(jìn)程。
設(shè)備驅(qū)動(dòng) :設(shè)備驅(qū)動(dòng)占據(jù)了uCLinux內(nèi)核很大部分。同其他操作系統(tǒng)一樣,設(shè)備驅(qū)動(dòng)為它們所控制的硬件設(shè)備和操作系統(tǒng)提供接口。
文件系統(tǒng) :uCLinux最重要的特性之一就是對(duì)多種文件系統(tǒng)的支持。這種特性使得uCLinux很容易地同其他操作系統(tǒng)共存。文件系統(tǒng)的概念使得用戶能夠查看存儲(chǔ)設(shè)備上的文件和路徑而無(wú)須考慮實(shí)際物理設(shè)備的文件系統(tǒng)類型。ucLinux透明的支持許多不同的文件系統(tǒng),將各種安裝的文件和文件系統(tǒng)以一個(gè)完整的虛擬文件系統(tǒng)的形式呈現(xiàn)給用戶。uClinux帶有一個(gè)完整的TCP/IP協(xié)議,同時(shí)它還支持許多其他網(wǎng)絡(luò)協(xié)議。uclinux對(duì)于嵌入式系統(tǒng)來(lái)說(shuō)是一個(gè)網(wǎng)絡(luò)完備的操作系統(tǒng)。
3、uClinux開(kāi)發(fā)環(huán)境
⑴GNU開(kāi)發(fā)套件
GNU軟件包括C編譯器GCC,C ++編譯器G++,匯編器AS,鏈接器LD,二進(jìn)制轉(zhuǎn)換工具(OBJCOPY,OBJDUMP),調(diào)試工具(GDB.GD BSERVER,KGDB)和基于不同硬件平臺(tái)的開(kāi)發(fā)庫(kù)。在GNU GCC支持下用戶可以使用流行的C/C++語(yǔ)言開(kāi)發(fā)應(yīng)用程序,滿足生成高效率運(yùn)行代碼、易掌握的編程語(yǔ)言的用戶需求,這些工具都是按GPL版權(quán)聲明發(fā)布,任何人可以從網(wǎng)上獲取全部的源代碼,無(wú)需任何費(fèi)用。
評(píng)論