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