Linux下3G模組驅動載入方法

2021-06-20 04:42:06 字數 3116 閱讀 6155

模組型號:中興mc2716

核心版本:linux-2.6.36

載入過程如下:

1、模組id號新增

進入核心**「/linux-2.6.36/driver/usb/serial」目錄,開啟「option.c」檔案,檢視是否已經定義了此模組產品的裝置id

資訊,並且這些資訊是否已經新增到「 static struct usb_device_id option_ids」結構體中。

如果**中沒有模組產品裝置id

資訊,則在**中增加模組產品裝置

id資訊的定義,並新增到「static struct usb_device_id option_ids」結構體中。如以下**紅色字型:

option.c檔案 

產品裝置id

資訊的定義:

/* qcmd products */

#define qcmd_vendor_id              0x1c9e

#define qcmd_product_u6300v         0x9603

#define qcmd_product_u6300          0x9000

/* zte products */

#define zte_vendor_id               0x19d2

#define zte_product_mf628           0x0015

#define zte_product_cdma_tech           0xfffe

#define zte_product_mf210           0x0117  //20110127 add

#define zte_product_mc2716          0xffed  //20110516 add

把產品型號新增到「static struct usb_device_id option_ids

」結構體中:

static struct usb_device_id option_ids = ,

,, //20110127 

, //20110516 

,//2011021

,//20110215 

/* terminating entry */

2、新增

usb驅動

回到根目錄/linux-2.6.36/下,執行「make menuconfig」命令,修改核心編譯配置,進入以下配置選單配置相關選項:

進入選單 device drivers --->

usb support --->

usb serial converter support --->

圖3.3 usb

驅動配置選單圖

選上「usb driver for gsm and cdma modems

」和「usb generic serial driver

」兩個配置選項。

圖3.4 usb

驅動選項圖

目錄下會看到生成的

/ttyusb0~/ttyusb3的4

個裝置節點。

3、優化模組

usb驅動

把中興提供的zte.ev.c

和zte_ev.h

拷到核心目錄

/dirvers/usb/serial

下,修改該目錄下

generi.c

檔案,在

int usb_serial_generic_open

函式中新增執行

zte_ev_usb_serial_init

()函式。在

usb_serial_generic_close

函式中新增執行

zte_ev_usb_serial_exit

()函式。修改該目錄下的

makefile

檔案,把

zte_et.o

新增進去編譯。

4、應用程式的使用 (1

)各usb

埠的作用

ttyusb0用於

moderm

ttyusb1用於發

at指令

ttyusb2用於

vousb

ttyusb3用於

debug (2

)pppd的撥號指令碼檔案中使用

ttyusb0

進行撥號。

5、使用

pppd

撥號中遇到的問題 (1

)找不到usb介面

現象:拔號時找不到ttyusb0

,裝置重啟。

解決方法:拔號前執行mdev 

命令重新生成裝置節點。

實現:在初始化gpio

之後新增

mdev -s

命令。

(2)多次拔號不成功

現象:mc2716

模組拔號成功後再次拔號發

at指令時回應的是亂碼。

解決方法:每次重新拔號前給模組發ath

指令結束通話,然後再開始拔號。因為拔號開啟的是

/ttyusb0

,發+ath

回不到命令端、指令無效,所以需開啟

ttyusb1

給模組發

ath指令結束通話**。

實現:在根檔案系統/etc/ppp

目錄下新增結束通話**的指令碼配置檔案

disgprschat

。給模組復位時新增斷開

pppd

連線的處理,執行

pppd

程序:pppd /dev/ttyusb1 115200 connect 'chat -f /etc/ppp/gprs-disconnect-chat' user pppuser。

(3)出現找不到裝置現象

現象:at

無回應,提示無裝置,但

/dev

目錄有下有

ttyusb0

,出現這種情況以後,重拔多次都不成功,無法恢復。現象如下圖所示:

解決方法:測試過程中發現出現以上問題後,執行mdev -s

命令提示以下資訊:

圖3.5 

裝置錯誤資訊圖

在模組復位處理中新增對/sys/class/tty/ttyusb0/device

目錄下的檔案判斷,如果該目錄下的檔案不存在則對裝置發重啟命令。

WinCE下3G模組的除錯

這兩天在wince6.0上除錯了下3g模組,華為的em730,它支援gprs和wcdma。雖然沒有涉及到驅動的移植 沒有源 但除錯過程還是幾經周折,記下來以便後用。em730是mini pci介面的,也支援usb。於是先請硬體工程師幫忙飛了一堆線,在pc上測試了一下,工作完全正常,證明模組本身沒有問...

WinCE下3G模組的除錯

這兩天在wince6.0上除錯了下3g模組,華為的em730,它支援gprs和wcdma。雖然沒有涉及到驅動的移植 沒有源 但除錯過程還是幾經周折,記下來以便後用。em730是mini pci介面的,也支援usb。於是先請硬體工程師幫忙飛了一堆線,在pc上測試了一下,工作完全正常,證明模組本身沒有問...

Linux下3G的應用

弄了幾天的3g和簡訊,簡單記錄一下。用的3g模組是華為的e1750 wcdma無線資料終端。在linux下,插入3g模組,系統會自動識別為ttyusb0,ttyusb1,ttyusb2,其中ttyusb1不知道有什麼用處,不可讀寫,而其他兩個介面都是可讀寫的,ttyusb0用作3g無線上網的介面,在...