目前嵌入式技術已經廣泛應用于各個領域,設計采用S3C2440處理器和Linux系統實現的無線撥號上網終端在各個領域有著廣泛的應用空間。例如在視頻監控方面,結合無線網絡技術,使監控的方式更加多元化,使監控的面積和距離都得到了大幅提高,擺脫了物理通道的約束,可以說是未來監控系統的發展方向。終端采用ARM9嵌入式處理器,主頻最高可達400 MHz,而且其內部集成了LCD控制器、內存控制器、Flash接口電路以及雙通道的USB總線,處理器也支持Linux操作系統,而Linux操作系統也擁有現代操作系統所具備的內容:搶先式多任務處理、內存保護、虛擬內存并支持TCP/IP的眾多協議。因此,將它們用于無線撥號上網終端中時,可以利用ARM9低功耗,高性能的特點和Linux良好的網絡支持功能完成撥號上網和進一步的具體應用。
1 終端硬件平臺
硬件部分采用核心板加底板的結構,核心板是以S3C2440作為處理器,并配有64 MB的SDRAM,256 MB/1 CB的Nand Flash和2 MB的Nor Flash;底板上添加了串口、USB接口、100 Mbit·s-1以太網RJ-45接口和SD卡等基本外圍電路。另外,單獨開發了3G模塊的電路板,目的是把3G模塊的miniPCI接口通過硬件轉化為USB接口,這樣不僅方便3G模塊與核心板的連接,而且也方便了對3C模塊在Linux系統下驅動的處理,3G模塊采用華為EM770W。
2 軟件平臺
2.1 PC機軟件平臺
系統軟件平臺以Linux操作系統為基礎,在PC機上安裝虛擬機,然后在VMware Workstation上安裝Redhat Enterprise 5,內核采用Lin ux-2.6.32.2,然后在Red hat5的Linux上建立ARM—Linux—gcc的交叉編譯環境,ftp以及samba服務器等。
2.2 終端的系統移植
系統移植包括:配置Linux內核,向內核中添加3G模塊的驅動和PPP協議的支持,并重新編譯和下載。
在內核配置之前,首先要進入內核目錄,執行make distclean命令將以前相關的臨時文件、配置文件、中間文件和路徑文件等清除。再開始配置內核:第一步,cp config_mini2440_w35.config;第二步,make menu config進入基于文本模式的菜單型選項,添加USB轉串口的驅動和PPPD協議支持的選項;第三步,對內核進行編譯,執行命令make zImage,編譯成功后在/arch/arm/boot目錄下將生成zImage燒寫文件;第四步,制作目標板的文件系統映像,在mini2440的目錄下執行命令mkyaffszimage-128M rootfs-qtopia-qt4 rootfs-qtopia-qt 4.img,這樣在當前目錄下就生成了相應的文件系統映像;第五步,燒寫文件,連接好串口和USB電纜,打開超級終端和DNW軟件,硬件上電并選擇為NOR Flash啟動,進入BIOS功能菜單。首先選擇功能號[f]開始對Nand Flash進行分區;然后選擇功能號[v]開始下載supervivi,下載完畢,BIOS會自動燒寫supervivi到NAND Flash分區中,并返回主菜單;安裝Linux內核,在BIOS主菜單中選擇功能號[k],開始下載Linux內核zlmage;安裝根文件系統,在BIOS主菜單選擇功能號[y],開始下載ysffs根文件系統映像文件rootfs—qtopia—qt4.img,此過程大概需要2 min,下載的文件越大,燒寫的時間就會越長;下載完畢后,拔下USB連接線,在BIOS主菜單選擇功能號[b],啟動系統,進一步進行屏幕校正和相關設置。
3 撥號程序分析
3.1 PPPD撥號程序的簡要分析
PPPD是一個用戶空間的后臺服務進程(Daemon),負責與3C模塊進行通信會話來進行必要的初始化設置,然后開始按照協議要求的步驟進行撥號。初始化設置是由PPPD自帶的輔助工具CHAT完成,這個程序利用AT指令和3G模塊進行通信,主要是交互一些撥號的參數設置、進行撥號的用戶名和密碼、是否采用數據加密等連網參數。
撥號流程和主要函數如下:
(1)主程序pppd_start(),這個函數首先是做初始化工作,對幾個所使用的協議進行初始化,這里所用到的分別是lcp_protent,chap_ protent,ipcp_protent。
(2)完成初始化后,正式開始進行協議的協商,PPPD協議協商流程,如圖1所示。
(3)接下來開始發起lcp通信,start_link->lcp_lowerup(),這個函數首先和內核的PPP協議進行協商,主要是MTU等鏈路參數,協商后設置LCPDE-LAYED_UP標志,把lcp_delayed_up函數設置給一個定時器,這個定時器會根據DELAYED_UP標志周期執行前賦給lcp_delayed_up,在這里函數將主動發起lcp協議請求,之后等待對方回應。start_link函數結束返回到pppd_start()主函數繼續執行。
(4)主函數pppd_start會進入一個無限循環,這個循環主要執行函數handle_events()和get_input()。handle_events主要處理接收到的信號,get_input負責處理接收到的數據包。
3.2 配置撥號腳本
(1)需要配置的撥號腳本文件有3個,分別是:wcdma,chat—wcdma—connect和chat—wcdma—disconnect。把它們存放在/etc/PPP /peers目錄下。注意要在wcdma中添加persist命令,保證3G網絡在一段時間斷開后能自動再連接。
(2)設置開機自動撥號上網,在系統的開機啟動腳本中添加shell命令:/etc/PPP/rmlock,判斷并刪除無效的串口的lock文件,保證成功撥號。/usr/bin/pppd call wcdma,使其自動撥號。/usr/bin/sleep 15,保證15 s的撥號時間
4 測試
4.1 驅動檢測
將電路板的啟動模式設置為Nand Flash啟動,則Linux系統會在通電后自動運行。系統啟動后,會在/dev目錄下生成PPP設備節點,可用ls/dev/PPP-1命令查看是否存在。在電路板的USB HOST口連接3C模塊的電路板,若超級終端上有如圖2所示的信息輸出,則可知3G模塊的驅動已經正確添加到內核中了。
4.2 撥號測試
在超級終端命令行下,輸入命令:pppd call wcdma&,結果如圖3所示,說明撥號成功。
然后記錄出現的兩個DNS地址,找到/etc目錄下的resolv.conf文件,將分配得到的兩個DNS服務器地址:202.102.224.68和202. 102.227.68添加到文件中,這樣就可以進行域名解析了。Ping外網測試,ping119.75.217.56檢查是否能夠正常訪問網絡。結果如圖4所示,說明網絡連接正常。
5 結束語
設計和實現了基于S3C2440和Linux的無線撥號上網終端,對其中3G撥號上網所用到技術進行了探討和分析。利用ARM高速的實時數據處理能力和Linux的網絡支持功能,保證了終端設備工作的穩定性和實時性,具有一定的實際意義。有待注意之處:(1)硬件3G模塊的電路板有必要集成到底板上,這樣可以簡化系統設計,降低成本。(2)Linux系統內核要根據具體的實際應用情況進行裁剪,這樣不僅節省了存儲資源,而且還提高了系統的處理速度。