新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于S3C2410的CDMA無線數(shù)據(jù)傳輸方法

基于S3C2410的CDMA無線數(shù)據(jù)傳輸方法

作者: 時間:2016-12-05 來源:網(wǎng)絡(luò) 收藏

  1 引言

本文引用地址:http://m.butianyuan.cn/article/201612/341121.htm

  Linux嵌入式系統(tǒng),具有高性能、低功耗、體積小、可靠性高、源代碼開放等優(yōu)點,逐漸被越來越多的人認(rèn)可并使用,原先只有在PC機上實現(xiàn)的功能,如今也被移植到了更加方便的嵌入式系統(tǒng)上。近些年嵌入式系統(tǒng)已經(jīng)應(yīng)用十分廣泛,而隨著網(wǎng)絡(luò)特別是無線網(wǎng)絡(luò)的興起和發(fā)展,將更加快捷方便的無線網(wǎng)絡(luò)與嵌入式系統(tǒng)相結(jié)合更成為了當(dāng)前研究的熱點。(碼分多址)無線網(wǎng)絡(luò)具有覆蓋面廣、速度穩(wěn)定、效率高、成本低等優(yōu)點,的網(wǎng)絡(luò)速度最大可達(dá)200k/s。本文著重介紹了ARM9與無線網(wǎng)絡(luò)相結(jié)合的,進行無線數(shù)據(jù)傳輸?shù)姆椒ā?/p>

  2 軟硬件平臺設(shè)計

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

  Linux為嵌入式系統(tǒng)提供了一個極有價值的選擇,它與Unix相似,是一個多任務(wù)多進程操作系統(tǒng),支持非常廣泛的硬件,并且源碼完全公開,可以方便的根據(jù)需要修改,而且Linux提供了強大的網(wǎng)絡(luò)功能,使其具有了同其他操作系統(tǒng)相同的地位。Linux可以用于多種硬件平臺,并且受開銷和時間限制小,通過剪裁、編譯后的Linux內(nèi)核文件非常小,只有2MB左右,可以方便地?zé)龑懭隖LASH中,適合嵌入式系統(tǒng)的應(yīng)用。最重要的是可以在PC機上開發(fā),然后移植到硬件平臺上運行。因此,這里我們選擇Linux2.4作為嵌入式的操作系統(tǒng)。

  2.1 系統(tǒng)結(jié)構(gòu)設(shè)計

  該系統(tǒng)為實時監(jiān)控系統(tǒng),也就是說當(dāng)發(fā)生異常情況的是時候,圖片采集終端自動拍攝圖片后,將圖片存儲到系統(tǒng)SDRAM中,并通過無線CDMA模塊,將采集到的圖片上傳至Internet,也就是發(fā)送到指定的Email地址中。

  2.2 硬件結(jié)構(gòu)設(shè)計

  本嵌入式系統(tǒng)自帶32MB SDRAM和8MB FLASH,將編譯好的Linux內(nèi)核文件和ramdisk文件系統(tǒng)分別燒寫入FALSH中,運行時再由系統(tǒng)自動調(diào)入到SDRAM中。引出一個USB Host連接USB攝像頭用于圖片采集,通過一個UART接口連接CDMA無線Modem,另一個UART連接PC主機

  3 軟件設(shè)計

  3.1 Linux內(nèi)核編譯

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

  3.2 PPP移植[1]

  PPP(Point-to-Point Protocol)點到點,是為在點對點連接上傳輸多協(xié)議數(shù)據(jù)包提供了一個標(biāo)準(zhǔn)方法。本文用到的CDMA無線連網(wǎng)方法,就需要PPP協(xié)議的支持,這里用的版本是PPP-2.4.1和rp-PPPoE-3.7。其編譯方法就是在建立的交叉編譯環(huán)境下編譯,生成pppd和chat等可執(zhí)行文件,并寫入文件系統(tǒng)ramdisk的/bin目錄中。編寫三個撥號腳本文件放在文件系統(tǒng)/ppp目錄下。

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

  “card” * “card”

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

  第二個腳本文件為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工作在調(diào)試模式

  nodetach #表示不讓pppd轉(zhuǎn)入后臺工作

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

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

  defaultroute #表示把服務(wù)器指定的IP地址設(shè)定為默認(rèn)的路由

  user card #表示認(rèn)證時用戶名card,pppd根據(jù)該用戶名,從chat-secrets文件中取得密碼

  第三個腳本文件為cdma2:

  ABORT “NO CARRIER”

  ABORT “NO DIALTONE”

  ABORT “ERROR”

  ABORT “NO ANSWER”

  ABORT “BUSY”

  TIMEOUT 120

  “”at

  OK atdt#777

  connect

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

  設(shè)置好后,在開發(fā)板環(huán)境下輸入pppd,如果出現(xiàn)亂碼,則說明ppp移植正確。鍵入撥號命令pppd call cdma1,生成一個新的網(wǎng)絡(luò)接口ppp0,服務(wù)器自動分配一個IP地址。此時PPP的移植及設(shè)置結(jié)束,也就是說現(xiàn)在已經(jīng)創(chuàng)造好了一個可以上網(wǎng)的嵌入式系統(tǒng)。

  3.3 Email發(fā)送程序設(shè)計[2]

  圖片采集終端采集的圖片要發(fā)送到Email中,需要以附件的形式發(fā)送。郵件發(fā)送過程中,需要對郵件地址、用戶密碼和附件內(nèi)容進行加密處理,這里采用了Base64加密法。Base64算法就是以3個字節(jié)為單位,當(dāng)剩下的字符數(shù)量不足3個字節(jié)時,則應(yīng)使用0進行填充,依次取6位數(shù)據(jù)并在前面補上兩個0形成新的8位編碼,由于3*8=4*6,這樣3個字節(jié)的輸入會變成4個字節(jié)的輸出,長度上增加了1/3。相應(yīng)地,輸出字符則使用‘=’占位,因此編碼后輸出的文本末尾可能會出現(xiàn)1至2個‘=’。

  郵件發(fā)送程序經(jīng)過了以下幾個過程[3]:

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

  該函數(shù)建立新的socket,以建立一個新的通信端口并獲得文件描述符。函數(shù)中的參數(shù)domain確定一個協(xié)議族,這里定義為AF_INET,type指定套接字類型,該處使用SOCK_STREAM,protocol一般為0,使用默認(rèn)協(xié)議。

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

  當(dāng)調(diào)用socket建立傳輸端口后,調(diào)用connect函數(shù)建立與遠(yuǎn)程服務(wù)器相連的連接線路。

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

  該函數(shù)用于接收從套接口傳來的信息,socket用connect連接的套接口,buf是指向內(nèi)存塊的指針,用于存儲接受的消息,len指明內(nèi)存塊的大小,flags是一個操作標(biāo)志。

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

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

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

  4 總結(jié)

  實驗證明用CDMA無線網(wǎng)絡(luò)發(fā)送數(shù)據(jù),速度比較穩(wěn)定,有時會由于網(wǎng)絡(luò)原因發(fā)送失敗,但是成功率較高,收到的圖片數(shù)據(jù)丟幀現(xiàn)象不明顯。該方法可用于工業(yè)現(xiàn)場的監(jiān)視以及家庭監(jiān)控系統(tǒng)以及遠(yuǎn)程的數(shù)據(jù)采集。由于圖片是發(fā)送到Email中的,因此運行成本較低,有較大的推廣空間。

  本文創(chuàng)新點:目前基于GPRS的無線數(shù)據(jù)傳輸方法研究的較多,而CDMA網(wǎng)絡(luò)的高性能特性,逐漸引起了研究者的注意,本文就結(jié)合CDMA網(wǎng)絡(luò)設(shè)計了一套與嵌入式相結(jié)合的系統(tǒng),,將采集的現(xiàn)場圖片,以附件的形式發(fā)送到Email中。



關(guān)鍵詞: S3C2410 CDMA

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉