android 3G移植【轉】

來源:互聯網
上載者:User

標籤:mode   帶來   命令   ppp協議   tle   核心   eth   4.6   rip   

本文轉載自:http://blog.csdn.net/hanmengaidudu/article/details/17028383

一 開發環境簡介

內容                                              

                    說明

3G模組

             華為EM820W(WCDMA)

3G SIM卡

             中國聯通3G卡

嵌入式Linux版本

             linux-2.6.37

主機開發環境

             Ubutun 10.04

 

二 主要步驟

1

向linux核心中添加3G模組驅動(USB轉串口的option驅動)和ppp網路通訊協定的支援

                                                                   2                                                                                                                                          

交叉編譯ppp-2.4.4原始碼

將撥接所需的兩個應用程式pppd和chat拷貝到開發板/usr/sbin檔案夾下,

編寫ppp撥號指令碼wcdma、wcdma-chat-connect、wcdma-chat-disconnect並存放在/etc/ppp/peers目錄下。將DNS寫入到/etc/resolv.conf檔案中

3

執行“pppd call wcdma”命令進行撥號

 

三 配置3G模組驅動和ppp網路通訊協定棧

首先進入make menuconfig介面

1 配置3G模組驅動

                     圖 1

1首先選擇Device Drivers

 

                     圖2

2進入USB support

                      圖 3

進入USB support之後一直往下直到找到圖3並選擇USB轉串口

                      圖4

最後選擇USB driver for GSM and CDMA modems到此3G卡驅動已經添加完畢

主要是添加了driver/usb/serial/option.c和driver/usb/serial/usb_wwan.c

兩個檔案,儘管驅動添加了,但是這僅僅只是一個usb轉串口驅動,並不能作為網路裝置直接使用,此時就需要ppp網路通訊協定的支援,他將ttyUSB*等裝置類比成網路裝置使用也即(/dev/ttyUSB0<---->ppp0)

 

2 添加ppp協議

同樣也是進入make menuconfig介面

                         圖5

首先同樣也是進入驅動配置介面Device Drivers

                         圖6

6選擇網路裝置支援

                         圖7

7選擇ppp

到這一步驅動和協議就都已經配置成功了接下來就是編譯下載到板子

登入到linux, dmesg查看核心列印資訊

                         圖8

同時查看/dev/目錄下已經建立了

/dev/ttyUSB0,/dev/ttyUSB1,/dev/ttyUSB2,/dev/ttyUSB3,/dev/ttyUSB4,/dev/ttyUSB5

/dev/ppp等7個裝置檔案表明核心正確識別了EM820W3G模組

 

四 編寫ppp撥號指令碼

由於該撥號指令碼需要使用chat,pppd,等命令,所以需要下載ppp-2.4.4

下載成功之後首先便是編譯

1 編譯 ppp-2.4.4

./configure

Make CC=arm-none-linux-gnueabi-gcc

編譯成功後將編譯產生的chat,pppd,pppdump等命令拷貝到板子檔案系統的/usr/sbin目錄下邊去

 

2 編寫撥號指令碼

在板子檔案系統/etc/ppp/peers目錄下邊建立三個檔案如下

wcdma,chat-wcdma-connect,chat-wcdma-disconnect

wcdma設定檔內容

debug

nodetach

/dev/ttyUSB0

115200

usepeerdns

noauth

noipdefault

novj

novjccomp

noccp

defaultroute

ipcp-accept-local

ipcp-accept-remote

connect ‘/usr/sbin/chat -s -v -f /etc/ppp/peers/chat-wcdma-connect‘

disconnect ‘/usr/sbin/chat -s -v -f/etc/ppp/peers/chat-wcdma-disconnect‘

 

wcdma-chat-connect設定檔內容

TIMEOUT 5

ABORT ‘NO CARRIER‘

ABORT ‘ERROR‘

ABORT ‘NODIALTONE‘

ABORT ‘BUSY‘

ABORT ‘NO ANSWER‘

‘‘  \rAT

OK  \rATZ

OK \rAT+CGDCONT=1,"IP","3GNET",,0,0

OK-AT-OK ATDT*99#

CONNECT \d\c

 

wcdma-chat-disconnect設定檔內容

ABORT"ERROR"

ABORT "NODIALTONE"

SAY"\nSending break to the modem\n"

‘‘ "\K"

‘‘"+++ATH"

SAY"\nGoodbay\n"

建立好撥號指令碼之後就是正式撥號了

 pppd call wcdma&

 (加上&符號主要是因為撥號成功後,程式會一直執行不退出,所以採用後台啟動並執行方式執行,假如有多個3G卡可能就會產生多個ttyUSB*的裝置檔案,同時會需要多個wcdma檔案此時可以採用pppd call wcdma1來為3G模組1進行ppp撥號),pppd call wcdma是作用是建立協議,並產生網路介面ppp0

撥號成功會出現如所示列印

                                                        圖9

出現9的列印後在/etc/resocv.conf中間添加DNS地址vi /etc/resolv.conf,加入內容:

nameserver 202.99.160.68

nameserver 202.99.166.4

使用ifconfig –a查看是否有ppp0的網路裝置

最後測試ppp0網路裝置是否能夠使用

Ping –I ppp0 www.baidu.com

能夠ping通就表示3G卡移植驅動成功

到此階段3G卡驅動已經移植完畢

五 調試

在移植該驅動時候出現過諸多問題

1 pppd call wcdma調用失敗

[email protected]:~# pppd call wcdma&

timeout set to 5 seconds

abort on (NO CARRIER)

abort on (ERROR)

abort on (NO DIALTONE)

abort on (BUSY)

abort on (NO ANSWER)

send (^MAT^M)

expect (OK)

AT^M^M

OK

 -- got it

 

send (^MATZ^M)

expect (OK)

^M

ATZ^M^M

OK

 -- got it

send(^MAT+CGDCONT=1,"IP","3GNET",,0,0^M)

expect (OK)

^M

AT+CGDCONT=1,"IP","3GNET",,0,0^M^M

ERROR

 -- failed

Failed (ERROR)

Connect script failed

調用AT+CGDCONT=1,"IP","3GNET",,0,0^M^M

這個指令失敗,為了測試串口(命令發送通道)能否正常使用

在chat-wcdma-connect中間添加幾個其他的AT命令

比如 OK \rAT+CGMI (廠家認證請求,返回模組廠家資訊)

     OK \rAT+CGSN (查看產品 IMEI 序號)

然後在調用pppd call wcdma&發現加上去的那幾條AT命令都能正常執行

這說明很可能是EM820W模組沒有正確識別SIM卡

後來我又添加了OK \rAT+CSQ指令(查看網路訊號品質)發現會調用失敗

得出初步結論凡是涉及到SIM卡相關的AT指令都會調用失敗,相反其他都能成功執行,這說明板子與EM820W模組之間是能夠正確互動資料的,

同時由於EM820W沒能識別SIM卡導致相關指令執行失敗

 

後來請教了相關人員,說我的測試方法不正確,我是利用pppd程式來判斷某些命令是否能夠正常執行,這樣就不能排除pppd程式是否能夠解析該命令所帶來的幹擾,所以改為使用一個更為純粹的辦法來進行測試了

Cat/dev/ttyUSB0&

echo “AT+CGSN”> /dev/ttyUSB0

echo “AT+CGMI”> /dev/ttyUSB0

echo “AT+CSQ”  > /dev/ttyUSB0

觀察串口得到的response與pppd call wcdma一樣

所以還是覺得EM820W沒能正確識別SIM卡(不過以後測試還是需要選用正確的方法)

 測試SIM卡電路的5根訊號線不管是否有SIM卡,5根線各自表現都是一樣的,這說明卻是沒有識別SIM卡,而且SIM_VCC和SIM_RESET的時序一樣,這和網上貼出的時序不一樣如所示,很明顯複位訊號要比VCC慢半拍

                                   圖10

                            圖10

硬體工程師此時修改了電路,在SIM_RESET線上加了一個大電容,增加了些許延時

然後調用ppd call wcdma&

發現撥號成功了,同時使用ifconfig –a 命令出現了一個ppp0的網路裝置

接著使用ping –I  ppp0 www.baidu.com進行測試,發現網路不通

哎 問題挺多

2 網路不通

網路不通的問題從一開始就覺得肯定與卡沒有關係了,很有可能是網路本身的問題,為了排除乙太網路口eth0的幹擾我進行了如下測試

Ifconfig eth0 down

pppd call wcdma&

Ifconfig eth0 up

Ping –I www.baidu.com

經過上面的折騰居然網路也通了,神奇。

上網查詢說是雙網卡造成的路由問題

果然在ppp0不通的時候route命令發現路由表如下

 # route
     Kernel IP routing table
        Destination    Gateway        Genmask           Flags Metric Ref    UseIface
        10.64.64.64    *                255.255.255.255  UH     0     0        0 ppp0
        192.168.7.0    *                255.255.255.0     U       0     0        0 eth0
        default        192.168.7.1    0.0.0.0              UG     0     0        0 eth0

ppp0通的時候路由表如下

 # route
       Kernel IProuting table
      Destination    Gateway        Genmask           Flags Metric Ref    Use Iface
      10.64.64.64      *                255.255.255.255   UH   0      0        0ppp0
      192.168.7.0      *                255.255.255.0      U      0     0        0 eth0
      default             *                0.0.0.0             U      0     0        0 ppp0

由上面可以知道ppp0不通因為預設的路由是eth0的,這肯定不通啊

 

六 注釋

android 3G移植【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.