CDMA無線數據傳輸方法

摘要:本文介紹了一種ARM9系列的微處理器S3C2410,利用CDMA無線Modem進行遠程無線數據傳輸的方法。並對PPP協議的移植以及CDMA無線Modem配置和嵌入式網絡編程進行了詳細介紹。
關鍵詞:S3C2410;CDMA;無線Modem;PPP

1 引言

Linux嵌入式系統,具有高性能、低功耗、體積小、可靠性高、源代碼開放等優點,逐漸被越來越多的人認可並使用,原先只有在PC機上實現的功能,如今也被移植到了更加方便的嵌入式系統上。近些年嵌入式系統已經應用十分廣泛,而隨着網絡特別是無線網絡的興起和發展,將更加快捷方便的無線網絡與嵌入式系統相結合更成爲了當前研究的熱點。CDMA(碼分多址)無線網絡具有覆蓋面廣、速度穩定、效率高、成本低等優點,CDMA的網絡速度最大可達200k/s。本文着重介紹了ARM9與CDMA無線網絡相結合的,進行無線數據傳輸的方法。

2 軟硬件平臺設計

這裏採用的是三星公司的基於S3C2410的高端ARM9處理器芯片,適用於高端手持設備和微型智能控制設備的開發。它的主頻可以達到203MHz,內建有MMU(內存管理單元),擴展總線最大頻率100MHz。S3C2410具有3個UART、4個DMA通道、1個RTC和觸摸屏接口,還具有IIC總線、一個USB Host,可以掛接圖片採集終端設備。

Linux爲嵌入式系統提供了一個極有價值的選擇,它與Unix相似,是一個多任務多進程操作系統,支持非常廣泛的硬件,並且源碼完全公開,可以方便的根據需要修改,而且Linux提供了強大的網絡功能,使其具有了同其他操作系統相同的地位。Linux可以用於多種硬件平臺,並且受開銷和時間限制小,通過剪裁、編譯後的Linux內核文件非常小,只有2MB左右,可以方便地燒寫入FLASH中,適合嵌入式系統的應用。最重要的是可以在PC機上開發,然後移植到硬件平臺上運行。因此,這裏我們選擇Linux2.4作爲嵌入式的操作系統。

2.1 系統結構設計

該系統爲實時監控系統,也就是說當發生異常情況的是時候,圖片採集終端自動拍攝圖片後,將圖片存儲到系統SDRAM中,並通過無線CDMA模塊,將採集到的圖片上傳至Internet,也就是發送到指定的Email地址中。通過登陸Internet就可以查看現場發送來的圖片。系統結構如圖1:

2008061316175281.jpg

圖1系統結構圖

2.2 硬件結構設計

本嵌入式系統自帶32MB SDRAM和8MB FLASH,將編譯好的Linux內核文件和ramdisk文件系統分別燒寫入FALSH中,運行時再由系統自動調入到SDRAM中。S3C2410引出一個USB Host連接USB攝像頭用於圖片採集,通過一個UART接口連接CDMA無線Modem,另一個UART連接PC主機,硬件結構如圖2:

20080613161817403.jpg

圖2硬件結構圖

3 軟件設計

3.1 Linux內核編譯

嵌入式系統資源有限,因此不可能在嵌入式系統之上進行程序的編譯,需要在PC機上將程序編譯成嵌入式系統識別的二進制代碼,然後再移植到其上。交叉編譯環境就是用來在PC機上編譯嵌入式系統可識別代碼的工具。這裏用到的交叉編譯環境是ARM-Linux。把對PPP的支持編譯進Linux內核的方法爲:在kernel目錄,終端下輸入make menuconfig,選擇Network device support,[*]選擇所有關於PPP的選項,然後保存退出編譯即可。

3.2 PPP移植[1]

PPP(Point-to-Point Protocol)點到點,是爲在點對點連接上傳輸多協議數據包提供了一個標準方法。本文用到的CDMA無線連網方法,就需要PPP協議的支持,這裏用的版本是PPP-2.4.1和rp-PPPoE-3.7。其編譯方法就是在建立的交叉編譯環境下編譯,生成pppd和chat等可執行文件,並寫入文件系統ramdisk的/bin目錄中。編寫三個撥號腳本文件放在文件系統/ppp目錄下。

第一個腳本文件爲chap-secrets:

“card”  *  “card”

其中card分別爲用戶名和密碼,*表示對服務器沒有限制。

第二個腳本文件爲cdma1:

ttyS0                     #CDMA Modem連接到串口1上

19200                   #CDMA波特率

nocrtscts                #不採用modem的rts和cts信號線流控

connect ‘/bin/chat –v –f /etc/ppp/chat/cdma2’      #用chat程序完成連接建立的會話過程,會話要通過/etc/ppp/chat/cdma2文件控制

debuf                 #表示pppd工作在調試模式

nodetach              #表示不讓pppd轉入後臺工作

ipcp-accept-local       #表示接受服務器分配的本機IP地址

ipcp-accept-remote     #表示接受服務器指定的服務器IP地址

defaultroute            #表示把服務器指定的IP地址設定爲默認的路由

user card     #表示認證時用戶名card,pppd根據該用戶名,從chat-secrets文件中取得密碼

第三個腳本文件爲cdma2:

ABORT “NO CARRIER”

ABORT “NO DIALTONE”

ABORT “ERROR”

ABORT “NO ANSWER”

ABORT “BUSY”

TIMEOUT 120

“”at

OK atdt#777

connect

以上幾行代碼的意思是如果modem撥號過程中出現了例如NO CARRIER之類的返回信息,則取消chat過程,連接失敗,TIMEOUT 120則表示爲連接超時,atdt#777表示撥號至#777。

設置好後,在開發板環境下輸入pppd,如果出現亂碼,則說明ppp移植正確。鍵入撥號命令pppd call cdma1,生成一個新的網絡接口ppp0,服務器自動分配一個IP地址。此時PPP的移植及設置結束,也就是說現在已經創造好了一個可以上網的嵌入式系統。

3.3 Email發送程序設計[2]

圖片採集終端採集的圖片要發送到Email中,需要以附件的形式發送。郵件發送過程中,需要對郵件地址、用戶密碼和附件內容進行加密處理,這裏採用了Base64加密法。Base64算法就是以3個字節爲單位,當剩下的字符數量不足3個字節時,則應使用0進行填充,依次取6位數據並在前面補上兩個0形成新的8位編碼,由於3*8=4*6,這樣3個字節的輸入會變成4個字節的輸出,長度上增加了1/3。相應地,輸出字符則使用‘=’佔位,因此編碼後輸出的文本末尾可能會出現1至2個‘=’。

郵件發送程序經過了以下幾個過程[3]

(1)socket(int domain,int type,int protocol);

該函數建立新的socket,以建立一個新的通信端口並獲得文件描述符。函數中的參數domain確定一個協議族,這裏定義爲AF_INET,type指定套接字類型,該處使用SOCK_STREAM,protocol一般爲0,使用默認協議。

(2)connect(int sockfd,struct sockaddr *address,size_t address_len);

當調用socket建立傳輸端口後,調用connect函數建立與遠程服務器相連的連接線路。

(3) recv(int sockfd,void *buf,int len,unsigned int flags);

該函數用於接收從套接口傳來的信息,socket用connect連接的套接口,buf是指向內存塊的指針,用於存儲接受的消息,len指明內存塊的大小,flags是一個操作標誌。

(4)Base64_Code();//對登陸信息或附件內容進行加密

(5)send(int sockfd,const void *msg,int len,unsigned int flags);

該函數是用來通過套接口向其它程序傳遞數據的。sockfd是用來傳輸數據的socked描述符,msg是一個指向要發送數據的指針,len是以字節爲單位的數據的長度,flags一般情況下設置爲0。

其中對附件文件的發送需要預先設定每次讀取的字節數和每次發送的字節數,將附件分批讀取編碼發送。程序執行過程如圖3:

20080613161850631.jpg

圖3 數據傳輸流程

4 總結

實驗證明用CDMA無線網絡發送數據,速度比較穩定,有時會由於網絡原因發送失敗,但是成功率較高,收到的圖片數據丟幀現象不明顯。該方法可用於工業現場的監視以及家庭監控系統以及遠程的數據採集。由於圖片是發送到Email中的,因此運行成本較低,有較大的推廣空間。

本文創新點:目前基於GPRS的無線數據傳輸方法研究的較多,而CDMA網絡的高性能特性,逐漸引起了研究者的注意,本文就結合CDMA網絡設計了一套與嵌入式相結合的系統,,將採集的現場圖片,以附件的形式發送到Email中。

參考文獻:

[1]欒昌海,王盟.基於GPRS的嵌入式Internet設計研究[J].微計算機信息,2006,6-2:94-96。

[2]K.Wall等.GNU/LINUX編程指南[M].王勇等譯.北京:清華大學出版社,2000

[3]W.RICHARD STEVENS,BILL FENNER,ANDREW M.RUDOFF.UNIX網絡編程[M].楊繼張譯.北京:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章