基于A(yíng)RM的Ad Hoc網(wǎng)絡(luò )平臺的實(shí)現
功能概述
本文引用地址:http://dyxdggzs.com/article/155828.htm 由于Ad Hoc網(wǎng)絡(luò )無(wú)中心、動(dòng)態(tài)拓撲等特點(diǎn),它需要各個(gè)節點(diǎn)都具有路由轉發(fā)功能。本文開(kāi)發(fā)的Ad Hoc網(wǎng)絡(luò )節點(diǎn)通過(guò)在ARM平臺上移植路由協(xié)議而實(shí)現了數據包轉發(fā)功能。

圖1 節點(diǎn)轉發(fā)
以圖1所示的網(wǎng)絡(luò )進(jìn)行功能示意,其中A、B、D是普通的移動(dòng)電腦終端,C是本文開(kāi)發(fā)的ARM平臺。A和D是通信的端點(diǎn),D不在A(yíng)的一跳范圍之內(A的覆蓋范圍如圖中虛線(xiàn)所示)。假設開(kāi)始時(shí)B成為了A和D的中繼節點(diǎn),完成A、D之間的數據轉發(fā)功能。當B節點(diǎn)出現故障時(shí),C能自動(dòng)代替B成為新的中繼節點(diǎn),維持A、D之間的通信。
該ARM平臺除了路由協(xié)議以外,同時(shí)完成了ftp、iptables等工具的移植,還可以繼續增添語(yǔ)音、視頻等服務(wù)。
硬件平臺
以處理器為核心,無(wú)線(xiàn)網(wǎng)卡收到數據包后交給上層處理,需要發(fā)出的數據包也由處理器控制無(wú)線(xiàn)網(wǎng)卡來(lái)發(fā)出。當然SDRAM、閃存、電源這些模塊也是系統不可缺少的。
本文采用ARM920T為內核的三星處理器S3C2410A。S3C2410A 是32位低功耗RISC處理器,同時(shí)支持Thumb 16位壓縮指令集,其工作頻率為203MHz。S3C2410A有292個(gè)管腳,集成了許多片上功能,例如以太網(wǎng)控制器、UART控制器、可編程I/O口及中斷控制器等。
考慮到接口體積,該平臺選用USB接口的華碩WL-167g無(wú)線(xiàn)網(wǎng)卡,提供無(wú)線(xiàn)通信功能。
硬件平臺設計結構如圖2所示。

圖2 硬件平臺結構圖
在硬件調試中一個(gè)應該注意的問(wèn)題就是S3C2410A的nWait引腳在不使用時(shí)應接上拉電阻,否則系統在啟動(dòng)模式時(shí)將不能正常啟動(dòng)。
軟件平臺
vivi是韓國MIZI公司開(kāi)發(fā)的Bootloader,適用于A(yíng)RM9處理器,其作用是初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環(huán)境設置成一個(gè)合適的狀態(tài),以便為運行操作系統準備正確的環(huán)境。引導程序執行完后會(huì )將控制權交給內核(zImage),內核是操作系統的核心,內核需要的各種配置文件、數據及上層軟件都存放在根文件系統之中。整個(gè)軟件平臺的結構如圖3所示。

圖3 軟件平臺示意圖
內核鏡像的生成
這里不贅述內核生成方法,需要注意此過(guò)程容易遇到三類(lèi)錯誤:一是編譯出錯,應該檢查庫文件是否齊全,另外gcc版本太高也會(huì )導致編譯錯誤,重新安裝低版本gcc后即可解決;二是內核配置應將Default kernel command string設置為noinitrd root=/dev/mtdblock3 console=ttySAC0,115200 init=/linuxrc,“console=ttySAC0,115200”使內核啟動(dòng)期間的信息全部輸出到串口0上,波特率為115200,“mtdblock3”代表第4個(gè)Nand閃存分區,該分區為根文件系統,init是指定啟動(dòng)腳本,“init=/linuxrc”表示啟動(dòng)初始化文件位置;三是應該在drivers/mtd/nand/s3c2410.c中,設置NAND_ECC_SOFT = NAND_ECC_NONE,這樣就關(guān)閉了ECC校驗。因為內核是通過(guò)vivi寫(xiě)到Nand閃存中的,vivi使用的軟件ECC算法與內核中校驗算法不同。
評論