新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > SOHO路由器的設計與實現

        SOHO路由器的設計與實現

        作者: 時間:2010-08-17 來源:網絡 收藏

        在圖1所示的中,其核心處理器就選用88E6218。該芯片提供了4個LNA口,可連接到10/100M以太網,另一個WAN口連接到廣域網,各端口之間有交換功能。根據操作系統的存儲和運行需要,芯片還設置了SDRAM存儲器和FLASH存儲器,SDRAM存儲器由一片4×2 Mxl6 B的HY57V281620組成,是操作系統、應用程序運行和一些數據緩存的空間。FLASH存儲器由一片512Kx8BIT的AM29LV040B組成,用于存放啟動程序二進制的B00TLEADER文件、操作系統以及應用程序。20針的ARM JTAG口用于調試程序和燒寫FLASH。RS232接口用于提供配置管理功能和反映信息運行情況。時鐘電路由一個25 MHz的晶振和濾波電容組成,RESERT電路由一塊DSl708TESA芯片加一個手動按扭組成低電平復位。電路的輸入為5 V,通過DC變壓后,可在調整引腳偏壓下提供1.5 V、1.25 V、2.5V、3.3 V電壓給處理芯片,以供芯片順利工作。此外,電路中還有大量的濾波和穩壓電容。為了讓使用者能清楚工作狀態,系統連接了LED指示燈,可通過LED來判斷SOH0的連接狀態和工作狀態。

        本文引用地址:http://www.104case.com/article/157180.htm

        3 軟件
        SOH0路由器的軟件結構如圖3所示。本硬件平臺以不含MMU (內存管理單元)的88E6218處理器為核心,因此,整個軟件的開發可采用不帶MMU的ARM微處理器的嵌入式操作系統uclinux為平臺。uclinux是專門針對沒有MMU單元的微處理器而的,它在標準linux基礎上去除了MMU支持,并進行了適當緊縮、裁減和優化,再加上CGI(圖形用戶界面),因而可TCP/IP協議以及眾多網絡協議和路由交換功能,可滿足路由器網絡通信功能要求。UClinux采用romfs文件格式,它比Linux的ext3文件格式需要的空間更小,其代碼加起來不超過900KB,可放
        在ROM、RAM、FLASH中啟動。由于uclinux本身是免費的,這些源代碼可以直接從網上獲得,只需相對應用系統的需求作必要的修改即可,因而可以大大減少開發成本。


        圖3所示是路由器的軟件平臺體系結構。圖中的這些協議基本上覆蓋了所有路由器交換協議,并在管理模塊方面加入通過SNMP、WEB,故可方便地對路由器進行設置。這些交換協議可基本滿足SOHO路由器的網絡通信要求。
        該SOHO路由器的軟件平臺由系統引導程序Bootloader、uCLinux內核、應用文件系統等組成。其中嵌入式系統引導程序bootloader的作用類似于PC機的BIOS的作用,但它比PC機的BIOS運行任務更多的地方是還要將內核映像從硬盤上讀到RAM中,然后跳轉到內核的入口點去運行,即啟動操作系統。
        3.1 系統引導
        系統引導程序主要執行以下三個步驟:
        首先是讓PC指向復位地址入口處,即Ox200000處的Bootloader代碼。由Bootloader初始化硬件設備,建立內存空間的映射圖,以將系統的軟硬件環境帶到一個合適的狀態,為最終調用操作系統內核準備好正確的環境。
        其次由Bootloader將控制權交給操作系統內核的引導程序,并在設置好uCLinux內核的啟動參數后,開始uCLinux內核的加載;
        最后在uCLinux內核加載引導完成后啟動init進程,以完成系統的引導過程。
        3.2 對系統源碼的修改
        由于Bootloader依賴于具體的嵌入式板級設備配置,所以,通常需要修改Bootloader的源程序。本例在廠方提供的Bootloader源碼里,對mvFlash.h中的static unsigned int mvFlashTypes[]函數的設置進行了修改,并將FLASH的型號換成上述硬件平臺中的FLASH,同時重新設置了INTEL_FLASH。其三個初始化、讀、寫功能模塊,即對應函數為unsigned int mvFlashlnit(unsigned int flashBaseAddress,unsig-ned int flashWidth,FLASH_DEV_MODE flashMode),unsigned int mvFlashWriteBlock(unsigned int offset,unsigned int numOfByte,char*blockAddress),unsigned int mvFlashReadBlock(unsigned int offset,unsigned int numOfByte.char*blockAddress)中的循環次數和執行條件設置參數也相應進行了修改,只有使Bootloader初始化的硬件和具體硬件平臺的器件對應起來,才能正確的驅動硬件。
        3.3 uCLinux內核的編譯和生成
        在uCLinux內核編譯之前,首先要對內核進行配置。目錄的修改一般都是在config里面進行的,可以用make menuconfig進入編譯界面進行選擇編譯選項的配置。可根據硬件平臺的構造參數將必要選項選中,并將沒有必要的選項去掉。系統類型的配置應選擇相應的內核然后是塊設備選擇和配置以及在塊設備選擇和配置之上的文件系統配置。一旦串口驅動和uCLinux文件系統以及應用系統等設置好,就可以完成uCL-inux內核的配置,修改好后就可以編譯內核。接下去執行命令make dep,make clean,make lib_only,make user onlv,make romfs,make image.共6個步驟,最終在image目錄下生成2個文件zImage和romfs,(分別為內核映象文件和文件系統的映象文件)。這就是最后要燒錄到硬件平臺里FLASH中的文件。這樣就完成了uCLinux的移植。

        4 結束語
        本文較為具體地介紹了基于嵌入式ARM9SOHO路由器的設計和方法,并詳細闡明了它的硬件結構,重點敘述了該路由器的軟件設計思路和方法(包括操作系統的移植)。當然,路由器具有很多相應的功能,都需要通過軟件開發來,現在最新的uclinux已經是2.6內核了,可以用它實現更多網絡功能。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 依安县| 阆中市| 甘德县| 佛坪县| 亚东县| 万安县| 桃江县| 滕州市| 屏边| 乌兰察布市| 龙门县| 宁化县| 新乡市| 进贤县| 绥芬河市| 德惠市| 喀喇沁旗| 霍林郭勒市| 富川| 武冈市| 和林格尔县| 蓝田县| 庆元县| 淳化县| 通化县| 武冈市| 米脂县| 贵德县| 盘山县| 镇远县| 白银市| 阿鲁科尔沁旗| 佛坪县| 长宁县| 和顺县| 阿尔山市| 阜平县| 台南县| 晋中市| 罗甸县| 陆河县|