3G 模块驱动应用开发总结
一:開發環境簡述:
?
| 內容 | 說明 |
| 3G模塊: | 華為 EM 770W (WCDMA ) |
| 3G SIM 卡: | 中國聯通3G 卡(WO) |
| 嵌入式開發板: | 英貝特 MBS-SAM9G45 |
| 核心CPU | ATMEL? AT91SAM9G45 |
| 嵌入式linux 版本: | linux2.6.30 |
| 主機開發環境: | VMWARE 下安裝的 UBUNTU 10.04 ? |
二:應用步驟:
3G 模塊驅動應用開發主要分一下3大步
| 1. | 向 linux 內核中添加 3G模塊的驅動(USB 轉串口的驅動)和 PPP 協議的支持,重新編譯下載內核 |
| 2. | 對ppp-2.4.4 源碼進行交叉編譯。 將撥號上網所需的兩個應用程序pppd 和chat? 拷貝到開發板 /usr/sbin 文件夾下, 將改好的腳本文件ppp-on? , ppp-on-dialer? 存放在 /etc/ppp 目錄下。 將含有域名解析服務器地址的文件 resolv.conf 拷貝到? /etc目錄下 |
| 3. | 進入 /etc/ppp 目錄,執行 ./ppp-on。進行網絡測試 |
?
?
三: 開發工作主要內容:
下面對開發工作進行了進一步細化:
?
| 1 | 向linux 內核添加 3G模塊的驅動(USB 轉串口的驅動) |
| 2 | 做一個應用測試程序測試 3G模塊的驅動(USB 轉串口的驅動) |
| 3 | 向 linux 內核中添加 PPP 協議的支持 |
| 4 | 交叉編譯撥號工具 pppd 和 chat |
| 5 | ?? ?配置撥號的腳本文件 |
| 6 | 測試網絡連接狀況 |
| ? | ? |
?
各項工作具體說明:
1.?????? 向linux 內核添加 3G模塊的驅動(USB 轉串口的驅動)
參考文檔《Usb Driver Configure.doc》
由于linux2.6.30 內核支持“USB driver for GSM and CDMA modems”,所以不需要修改代碼,只修改內核配置即可。
Usb Configure
重新編譯內核,修改配置如下:
Make menuconfig
?
?加入對華為3G 模塊的支持
?
然后重新編譯,下載內核。內核的編譯和下載請參考開發板廠商提供的使用手冊《MBC-SAM9G45_Linux使用手冊.pdf》相關章節。
內核啟動后,在開發板USB HOST1 口插上3G模塊的USB線,會有打印信息輸出:
usb 1-2: new high speed USB device using atmel-ehci and address 4
usb 1-2: configuration #1 chosen from 1 choice
option 1-2:1.0: GSM modem (1-port) converter detected
usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
option 1-2:1.1: GSM modem (1-port) converter detected
usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
option 1-2:1.2: GSM modem (1-port) converter detected
usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2
?
查看設備節點ls /dev/tty*, 會發現USB虛擬成三串口,在文件系統節點如下/dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2 ,這說明3G模塊驅動已經正確添加到內核當中。
我們跟 3G 模塊交互主要用的設備節點是 /dev/ttyUSB0
?
2.?????? 做一個應用測試程序測試 3G模塊的驅動(USB 轉串口的驅動)
./test3g? AT? 向? /dev/ttyUSB0 寫入AT 查看回顯信息。
測試程序源代碼參考 huatest3g.c
?
3.?????? 向 linux 內核中添加 PPP 協議的支持
進入內核目錄下,執行 make menuconfig 配置linux 內核,添加 PPP 協議的支持
Device Drivers----àNet Device support
?
?
必須選中的項目:
?????????<*>?PPP?(point-to-point?protocol)?support???????????????
????????????????[*]???PPP?multilink?support?(EXPERIMENTAL)????????????????
????????????????<*>???PPP?support?for?async?serial?ports??????????????????
????????????????<*>???PPP?support?for?sync?tty?ports?????????????????????
????????????????<*>???PPP?Deflate?compression?????????????????????????????
????????????????<*>???PPP?BSD-Compress?compression??
然后重新燒寫新生成的內核映象。
?
內核啟動后會在/dev 下生成ppp 設備節點。
ls /dev/ppp -l
crw-rw----??? 1 root???? root???? 108,?? 0 Jan? 1 00:00 /dev/ppp
4.?????? 交叉編譯撥號上網需要的撥號工具 pppd 和 chat
下載ppp-2.4.4源碼包,交叉編譯生成撥號所需的pppd和chat這兩個程序.
???????解壓源代碼包,進入目錄,進行交叉編譯,這里所用的板子的交叉編譯器是
?????#cd?/root/gprs/ppp-2.4.1
?????#./configure
?????#make?CC=/usr/local/arm-2007q1/bin/arm-none-linux-gnueabi-gcc???
撥號所用到的程序就是ppp-2.4.4/pppd/下的pppd,和ppp-2.4.4/chat/下的chat程序
將交叉編譯出來的這兩個應用程序拷貝到開發板 /usr/sbin 文件夾下,更改其屬性為可執行文件。
?
5.?????? 配置撥號的腳本文件
?
?
?
撥號上網需要的兩個配置文件ppp-on? , ppp-on-dialer? (存放位置 /etc/ppp)
紅色部分為修改的內容
1)ppp-on配置文件的內容:
?
# These are the parameters. Change as needed.
TELEPHONE=*99#??? # The telephone number for the connection
ACCOUNT=????? # The account name for logon (as in 'George Burns')
PASSWORD=???? # The password for this account (and 'Gracie Allen')
LOCAL_IP=0.0.0.0? # Local IP address if known. Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0 # Remote IP address if desired. Normally 0.0.0.0
NETMASK=255.255.255.0??? # The proper netmask if needed
?
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
?
exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyUSB0 115200 \
??? asyncmap 20A0000 escape FF kdebug 4 $LOCAL_IP:$REMOTE_IP \
??? noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT
?
2)ppp-on-dialer配置文件的內容:
?
#!/bin/sh
exec chat -v \
TIMEOUT 5 \
ABORT?? "BUSY"? \
ABORT?? "ERROR"? \
ABORT?? "NO CARRIER" \
'' \rAT?? \
OK? 'AT+CGDCONT=1,"IP","3GNET"' \
OK? 'ATDT*99#'? \
CONNECT ''? \
?
???????? 3):設置正確的域名解析服務器地址
將3G 模塊插到計算機上。查看聯通3G 北京地區的域名解析服務器地址:
???????? 202.106.195.68? 202.106.46.151
???????? 將這兩個地址添加到開發板目錄:/etc/ resolv.conf 中
???????? Vi? /etc/ resolv.conf? 內容:
??? nameserver 202.106.195.68
nameserver 202.106.46.151
?
6.?????? 應用測試:
1)? 連接好硬件設備
2)進入 /etc/ppp 目錄,執行 ./ppp-on
3)執行 ifconfig 可以看到:
?
ppp0????? Link encap:Point-to-Point Protocol?
????????? inet addr:172.16.231.7? P-t-P:10.64.64.64? Mask:255.255.255.255
????????? UP POINTOPOINT RUNNING NOARP MULTICAST? MTU:1500? Metric:1
????????? RX packets:7 errors:0 dropped:0 overruns:0 frame:0
???? ?????TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
????????? collisions:0 txqueuelen:3
????????? RX bytes:94 (94.0 B)? TX bytes:97 (97.0 B)
???????? 在/var/log/message 文件末尾可以看到分配的IP 地址
local? IP address 172.20.209.99
remote IP address 10.64.64.64?
???????? 4)可以ping 外網測試:
???????? Ping? 61.135.169.105
???????? Ping? www.baidu.com
???????? 5) 可以 telnet bbs.newsmth.net
6) 可以從網站上GET 資源 wget ftp://ftp.denx.de/pub/u-boot/u-boot-1.3.4.tar.bz2
?
四:開發中出現的小問題及解決辦?A
總結
以上是生活随笔為你收集整理的3G 模块驱动应用开发总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AutoJs学习-实现日期农历时间显示
- 下一篇: Word 远程调用失败:异常来自 HRE