龍尚3G模組在arm板上的應用

2021-07-25 23:01:19 字數 3155 閱讀 4496

最近專案需要在arm板上裝一塊3g的無線模組,於是查了很多資料,弄了很久才發現是資料中出了些問題,故將整個除錯過程寫成部落格,以後方便查閱。

一、3g模組現在手上的這塊模組是龍尚u7309系列(o(╯□╰)o,沒有打廣告)的,**上這個系列好像都沒得買了。以前沒接觸過這類東西,於是各種查詢資料……

二、移植步驟

簡單說一下這個模組的撥號流程,具體原理性的知識不作展開。這個模組通過usb介面與開發板相連線,在連線過後會在 /dev目錄下生成3個串列埠裝置節點,一般是ttyusb0,ttyusb1與ttyusb2,然後我們需要通過ppp對這幾個裝置進行撥號即可。

但是有些開發板上會識別並將模組上的usb轉換為串列埠,並可以進行ppp撥號,但是也有很多arm並沒有現成的功能,需要我們自己去移植。下面是針對最杯具的情況進行說明。

1、新增usb轉串列埠支援

首先將arm開發板啟動,將模組通過usb連線至開發板,如果/dev目錄下出現了ttyusb0,ttyusb1與ttyusb2,那麼恭喜你可以直接跳過該步驟。如果沒有的話,linux會列印出相關的資訊,其中包括模組的製造商與產品號,idvendor=1c9e, idproduct=9603,記下這兩個號,後面會用到。

接下來需要對核心進行編譯,需要開發板上執行核心的原始碼,當然也可以單獨對核心模組進行編譯,因為後面需要ppp模組,這裡採用編譯整個核心。在編譯核心之前需要對個別檔案進行修改,修改的檔案為/linux/drivers/usb/serial/option.c。

然後,在編譯核心的時候選上與usb轉串列埠相關的選型,與ppp撥號相關的,注意是編譯進核心,是編譯成模組。然後重新編譯核心即可。

2、編譯ppp程式

要在arm板上進行ppp撥號,還需要pppd程式與chat等程式,這裡我選擇自己進行交叉編譯。這裡版本號為ppp-2.4.5,一開始使用ppp-2.4.1進行編譯沒有成功,換用了2.4.5很順利的就編譯成功了。

./configure  

make cc=arm-linux-

之後將chat、pppd、pppdump、pppstats目錄下對應的可執行檔案拷貝出來,放置在開發板中的/bin目錄(先執行pppd,看會不會出現亂碼,有的話就對了,如果按ctrl+c關不掉亂碼,就只能另開乙個終端啦~有些開發板chat是放置在/usr/sbin目錄,具體可以看撥號出錯提示)。

3、新增撥號指令碼

以上各種準備好之後,我們只要準備好撥號指令碼就行了。這裡我給出的是聯通的撥號指令碼。

首先如果/etc下沒有ppp目錄,那麼新建乙個,之後的ppp目錄下需要有chat目錄與peer目錄。

chat目錄新建gprs-connect-chat與gprs-disconnect-chat檔案,檔案內容如下。

gprs-connect-chat:

timeout 15

abort

'no carrier'

abort

'error'

abort

'nodialtone'

abort

'busy'

abort

'no answer'

""'at'

ok at+cgdcont=1,"ip","3gnet",,0,0

ok 'atdt*99#'

connect ''

gprs-disconnect-chat:

abort

"error"

abort

"no dialtone"

say "\nsending break to the modem\n"

''"\k"

''"+++ath"

say "\ngood bye\n"

peer目錄下新建cdma_gprs檔案,檔案內容如下,如果需要除錯,請將nodetach與debug前的『#』去掉。

cdma_gprs:

lock

/dev/ttyusb2

115200

#nodetach

crtscts

modem

#debug

usepeerdns

noipdefault

defaultroute

user "3gnet"

password "card"

noauth

novj

novjccomp

noccp

ipcp-accept-local

0.0.0.0:0.0.0.0

ipcp-accept-remote

connect

'/usr/sbin/chat -v -s -f /etc/ppp/chat/gprs-connect-chat'

disconnect '/usr/sbin/chat -v -s -f /etc/ppp/chat/gprs-disconnect-chat'

之後只要執行pppd call cdma_gprs即可,如果撥號失敗,將cdma_gprs檔案中的/dev/ttyusb2更改為/dev/ttyusb0或者/dev/ttyusb1重新嘗試。出現

primary dns address 乙個ip

secondary dns address 乙個ip

說明撥號成功。此時如果只能ping通ip的話,檢視是否是dns配置錯誤,或者關閉乙太網卡重新嘗試。

ARM板和Linux上的3G配置詳解

我們這段時間作了乙個基於arm開發板和開源linux的3g模組,給大家作個參考。3g選用的是華為的ec1261,usb介面,現在市面上的基本都是usb口,據說可以直接去掉在usb modem的usb轉串列埠等模組,直接通過gpio口來控制3g模組,但是由於我們這資源有限,實現不了那麼複雜的工作,所以...

sqlite3 在arm板上的編譯

對於乙個 使用了資料庫的程式,編譯會與普通程式不同,首先編譯會用到sqlite3 解壓編譯之後的buid資料夾下的 檔案庫。編譯 arm linux gnueabif gcc o test test.c test.h i home milan dufan test mx6 build include...

SIP協議在3G網路中的應用

會話起始協議sip是3g的ip 多 子系統中提供多 業務的核心技術。文章首先介紹了sip的基本工作原理,然後對3gppumtsr5定義的ims進行了簡要描述,最後詳細闡述了sip在ims提供服務的過程及對漫遊使用者的處理。會話起始協議 sessioninitiationprotocol 是由ietf...