日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

海思3G模块开发

發布時間:2023/12/16 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 海思3G模块开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、開發環境

環境詳細
3G模塊ZTE?MF190(中興)
SIM中國聯通3G
嵌入式Linux內核?Linux?(none)?3.0.8
開發環境Ubuntu10.10

二、開發步驟

修改內核配置,并重新編譯

內核配置增加usb轉串口的驅動,配置成模塊。

內核配置增加ppp協議支持

重新編譯燒寫內核

編譯usb_modeswitch交叉編譯usb_modeswitch,并把可執行文件和配置文件拷貝到開發板上
編譯ppp和編譯撥號腳本文件交叉編譯ppp,并把可執行文件和配置文件拷貝到開發板上
驗證usb轉串口是否成功這部很關鍵,如果轉串口沒有成功或者使用的不是ttyUSB0會使后面的ppp撥號不成功。
運行pppdpppd?call?wcdma-call

三、詳細開發步驟?

1、內核中增加usb轉串口的驅動,配置成模塊。增加ppp協議支持。重新交叉編譯并下載到開發板上。

1.1?增加ppp協議支持

??清除內核配置文件:make?ARCH=arm?CROSS_COMPILE=arm-linux-?clean

CROSS_COMPILE=arm-linux-?這個要根據自己arm編譯器的名字

??配置內核:make?ARCH=arm?CROSS_COMPILE=arm-linux-?menuconfig

進入Device?Drivers-->

Network?device?support-->

<*>PPP?(point-to-point?protocol)?support

選擇所有的PPP協議

?

ppp協議配置完成


1.2、增加usb轉串口的驅動模塊,編譯為模塊

使其選中對USB轉串口的支持

進入Device?Drivers-->USB?support-->USB?Serial?Converter?support?選中USB?Deiver?for?GSM?and?CDMA?Modems

?

?


到此3G卡驅動已經添加完

注:本人這里把USB轉串口驅動配置成模塊,看個人需求也可配置成編譯到內核中。

?

接著要修改option.c文件,在linux-3.0.y/drivers/usb/serial目錄下,然后找到

static?const?struct?usb_device_id?option_ids[]?=?{

}向這里面增加我們的3G模塊設備信息,(有可能你的設備信息已經存在)

本人的3G設備信息添加如下:

#define ZTE_VENDOR_ID 0x19d2 //代碼中已經定義 廠家ID #define ZTE_PRODUCT_MF190 0x2000 //本人3G模塊的設備ID { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF190) },

解釋這兩個參數的意義:

?ZTE_VENDOR_ID:廠家ID(這是中興廠家的ID號)

?ZTE_PRODUCT_MF190:本人3G模塊設備ID

那么如何得知這兩個ID號呢?

3G設備插入開發板上使用?lsusb?命令就可看到兩個ID

#?lsusb

Bus?001?Device?001:?ID?1d6b:0002

Bus?002?Device?001:?ID?1d6b:0001

Bus?001?Device?002:?ID?19d2:2000

?

到這里所有內核的配置都完成。

重新編譯內核make?ARCH=arm?CROSS_COMPILE=arm-linux-?uImage

編譯模塊:make?ARCH=arm?CROSS_COMPILE=arm-linux-?modules?

//因為本人把驅動配置成模塊所以這里需要編譯模塊。在linux-3.0.y/drivers/usb/seria目錄下會出現三個驅動模塊

?

把這三個驅動復制到開發板上,本人復制開發板路徑/lib/modules/3.0.8/serial

在系統啟動腳本中添加驅動加載,在/etc/init.d/rcS中添加下面幾行

insmod /lib/modules/3.0.8/seria/usbserial.ko maxRSize=16384 maxWSize=512 maxISize=64 ##設置緩沖大小,挺高速度。 nsmod /lib/modules/3.0.8/seria/usb_wwan.ko nsmod /lib/modules/3.0.8/seria/option.ko

加載完驅動后/dev目錄下出現ttyUSB0?ttyUSB1?ttyUSB2那么恭喜你usb轉串口已經成功。

?

問題:

(1)、加載完驅動后/dev目錄下沒有出現ttyUSB0?ttyUSB1?ttyUSB2

查看設備:

cat /proc/devices

?

如果沒有ttyUSB那么加載驅動有問題,查看option.c文件添加的設備ID是否有錯誤

如果有ttyUSB跳到(問題解決一


2、測試轉出的串口是否可用

使用Linux串口代碼進行測試。本人測試代碼鏈接:http://download.csdn.net/detail/lin_jianbin/8339773

分別打開串口ttyUSB0?ttyUSB1?ttyUSB2

發送字符串數據“AT\r\n” ?或者十六進制數據?0x41?0x54?0x0D?0x0A?如果接收到數據為OK表示成功

測試出成功的設備比如ttyUSB0?后面配置需要使用到。(不是所有的設備都是使用ttyUSB0發送和接收數據的)所以這需要測試

?

3、交叉編譯pppd,移植

下載路徑:ftp://ftp.samba.org/pub/ppp/

本人下載的是ppp-2.4.5.tar.gz

解壓:tar?-zvxf?ppp-2.4.5.tar.gz

進目錄:cd?ppp-2.4.5

配置:./configure????????生成Makefile文件

編譯:make?CC=arm-liunx-gcc?AR=arm-liunx-ar?LD=arm-liunx-ld?STRIP=arm-liunx-strip

成功后會在pppd目錄下生成可執行文件pppdchat目錄下生成可執行文件chat

?

創建撥號的配置文件

/etc.ppp/目錄下創建文件?wcdma-chat?內容如下:

TIMEOUT?15

ABORT?'NO?CARRIER'

ABORT?'ERROR'

ABORT?'NO?DIALTONE'

ABORT?'BUSY'

ABORT?'NO?ANSWER'

""?'AT'

OK?'ATDT*99#'

CONNECT

?

/etc.ppp/目錄下創建文件?disconnect-chat?內容如下:

ABORT?"BUSY"

ABORT?"ERROR"

ABORT?"NO?DIALTONE"

SAY?"/nSending?break?to?the?modem/n"

''?"/K"

''?"+++ATH"

SAY?"/nGoodbye/n"

?

/etc.ppp/目錄下創建文件?wcdma-call?內容如下:

debug

lock

nodetach

/dev/ttyUSB0??###?這個要根據第二步測試成功的設備結點

115200

user?"card"

password?"card"

crtscts

show-password

usepeerdns

noauth

noipdefault

novj

novjccomp

noccp

defaultroute

ipcp-accept-local

ipcp-accept-remote

connect?'/usr/sbin/chat?-v?-t3?-f?/etc/ppp/chat/wcdma-connect'

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


pppd配置參數可參考:

http://blog.csdn.net/hens007/article/details/7255455

這里的配置文件是針對聯通3G卡的,如果需要支持其他的SIM卡可更改這些配置。

?

移植:

/pppd/pppd??拷貝到開發板?/usr/sbin

/chat/chat???拷貝到開發板?/usr/sbin

/etc.ppp/目錄下的文件?chap-secrets??options?pap-secrets?拷貝到開發板?/etc/ppp目錄下

/etc.ppp/目錄下的文件?wcdma-chat?disconnect-chat??拷貝到開發板?/etc/ppp/chat目錄下

/etc.ppp/目錄下的文件?wcdma-call??拷貝到開發板?/etc/ppp/peers目錄下

?

到這里開發板移植完畢可到開發板上進行撥號:

#pppd call wcdma-call

Script?/usr/sbin/chat?-v?-t3?-f?/etc/ppp/chat/wcdma-connect?finished?(pid?891),?status?=?0x0

Serial?connection?established.

using?channel?1

Using?interface?ppp0

Connect:?ppp0?<-->?/dev/ttyUSB2

sent?[LCP?ConfReq?id=0x1?<asyncmap?0x0>?<magic?0xfd880529>?<pcomp>?<accomp>]

rcvd?[LCP?ConfReq?id=0x0?<asyncmap?0x0>?<auth?chap?MD5>?<magic?0x2bdc467>?<pcomp>?<accomp>]

sent?[LCP?ConfAck?id=0x0?<asyncmap?0x0>?<auth?chap?MD5>?<magic?0x2bdc467>?<pcomp>?<accomp>]

rcvd?[LCP?ConfAck?id=0x1?<asyncmap?0x0>?<magic?0xfd880529>?<pcomp>?<accomp>]

sent?[LCP?EchoReq?id=0x0?magic=0xfd880529]

rcvd?[LCP?DiscReq?id=0x1?magicdc467]

rcvd?[CHAP?Challenge?id=0x1?<ca68bc26a4b9831b18cc10657e6fc731>,?name?=?"UMTS_CHAP_SRVR"]

sent?[CHAP?Response?id=0x1?<606f317e42edafc7e3653ea6b>,?name?=?"card"]

rcvd?[LCP?EchoRep?id=0x0?magic=0x2bdc467?fd?88?05?29]

rcvd?[CHAP?Success?id=0x1?""]

CHAP?authentication?succeeded

CHAP?authentication?succeeded

sent?[IPCP?ConfReq?id=0x1?<addr?0.0.0.0>?<ms-dns1?0.0.0.0>?<ms-dns2?0.0.0.0>]

rcvd?[IPCP?ConfNak?id=0x1?<ms-dns1?10.11.12.13>?<ms-dns2?10.11.12.14>?<ms-wins?10.11.12.13>?<ms-wins?10.11.12.14>]

sent?[IPCP?ConfReq?id=0x2?<addr?0.0.0.0>?<ms-dns1?10.11.12.13>?<ms-dns2?10.11.12.14>?<ms-wins?10.11.?<ms-wins?10.11.12.14>]

rcvd?[IPCP?ConfReq?id=0x0]

sent?[IPCP?ConfNak?id=0x0?<addr?0.0.0.0>]

rcvd?[IPCP?ConfRej?id=0x2?<ms-wins?10.11.12.13>?<ms-wins?12.14>]

sent?[IPCP?ConfReq?id=0x3?<addr?0.0.0.0>?<ms-dns1?10.11.12.13>?<ms-dns2?10.11.12.14>]

rcvd?[IPCP?ConfReq?id=0x1]

sent?[IPCP?ConfAck?id=0x1]

rcvd?[IPCP?ConfNak?id=0x3?<addr?10.30.208.139>?<ms-dns1?218.104.128.106>?<ms-dns66>]

sent?[IPCP?ConfReq?id=0x4?<addr?10.30.208.139>?<ms-dns1?218.104.128.106>?<ms-dns2?58.22.96.66>]

rcvd?[IPCP?ConfAck?id=0x4?<addr?10.30.208.139>?<ms-dns1?218.104.128.106>?<ms-dns2?58.22.96.66>]

Could?not?determine?remote?IP?address:?defaulting?to?10.64.64.64

Cannot?determine?ethernet?addresxy?ARP

local??IP?address?10.30.208.139

remote?IP?address?10.64.64.64

primary???DNS?address?218.104.128.106

secondary?DNS?address?58.22.96.66

?

撥號成功

?

問題解決一

方法一:手動創建設備結點

mknod?/dev/ttyUSB0?c?188?0????

//188即使主設備號?如上的cat?/proc/devices?可以得知。0?為次設備號。

mknod?/dev/ttyUSB1?c?188?1????

mknod?/dev/ttyUSB2?c?188?2????

測試創建的設備結點是否可用:

這種方法只能實現簡單的測試,更為準確的測試最好用自己寫的串口代碼測試。

#?cat?/dev/ttyUSB0????

cat:?can't?open?'ttyUSB0':?No?such?device?//表示設備結點不可用?只能用方法二。

?

方法二:使用usb_modeswitch

usb_modeswitch是對USB設備的工作模式進行轉換usb工作模式:usb存儲模式,usb?serial模式。

我們要把3G模塊轉為usb?serial模式。

參考文章:http://blog.csdn.net/lin_jianbin/article/details/42520419

總結

以上是生活随笔為你收集整理的海思3G模块开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。