3G 模块驱动应用开发总结
一:開發(fā)環(huán)境簡述:
?
| 內(nèi)容 | 說明 |
| 3G模塊: | 華為 EM 770W (WCDMA ) |
| 3G SIM 卡: | 中國聯(lián)通3G 卡(WO) |
| 嵌入式開發(fā)板: | 英貝特 MBS-SAM9G45 |
| 核心CPU | ATMEL? AT91SAM9G45 |
| 嵌入式linux 版本: | linux2.6.30 |
| 主機(jī)開發(fā)環(huán)境: | VMWARE 下安裝的 UBUNTU 10.04 ? |
二:應(yīng)用步驟:
3G 模塊驅(qū)動(dòng)應(yīng)用開發(fā)主要分一下3大步
| 1. | 向 linux 內(nèi)核中添加 3G模塊的驅(qū)動(dòng)(USB 轉(zhuǎn)串口的驅(qū)動(dòng))和 PPP 協(xié)議的支持,重新編譯下載內(nèi)核 |
| 2. | 對(duì)ppp-2.4.4 源碼進(jìn)行交叉編譯。 將撥號(hào)上網(wǎng)所需的兩個(gè)應(yīng)用程序pppd 和chat? 拷貝到開發(fā)板 /usr/sbin 文件夾下, 將改好的腳本文件ppp-on? , ppp-on-dialer? 存放在 /etc/ppp 目錄下。 將含有域名解析服務(wù)器地址的文件 resolv.conf 拷貝到? /etc目錄下 |
| 3. | 進(jìn)入 /etc/ppp 目錄,執(zhí)行 ./ppp-on。進(jìn)行網(wǎng)絡(luò)測試 |
?
?
三: 開發(fā)工作主要內(nèi)容:
下面對(duì)開發(fā)工作進(jìn)行了進(jìn)一步細(xì)化:
?
| 1 | 向linux 內(nèi)核添加 3G模塊的驅(qū)動(dòng)(USB 轉(zhuǎn)串口的驅(qū)動(dòng)) |
| 2 | 做一個(gè)應(yīng)用測試程序測試 3G模塊的驅(qū)動(dòng)(USB 轉(zhuǎn)串口的驅(qū)動(dòng)) |
| 3 | 向 linux 內(nèi)核中添加 PPP 協(xié)議的支持 |
| 4 | 交叉編譯撥號(hào)工具 pppd 和 chat |
| 5 | ?? ?配置撥號(hào)的腳本文件 |
| 6 | 測試網(wǎng)絡(luò)連接狀況 |
| ? | ? |
?
各項(xiàng)工作具體說明:
1.?????? 向linux 內(nèi)核添加 3G模塊的驅(qū)動(dòng)(USB 轉(zhuǎn)串口的驅(qū)動(dòng))
參考文檔《Usb Driver Configure.doc》
由于linux2.6.30 內(nèi)核支持“USB driver for GSM and CDMA modems”,所以不需要修改代碼,只修改內(nèi)核配置即可。
Usb Configure
重新編譯內(nèi)核,修改配置如下:
Make menuconfig
?
?加入對(duì)華為3G 模塊的支持
?
然后重新編譯,下載內(nèi)核。內(nèi)核的編譯和下載請(qǐng)參考開發(fā)板廠商提供的使用手冊(cè)《MBC-SAM9G45_Linux使用手冊(cè).pdf》相關(guān)章節(jié)。
內(nèi)核啟動(dòng)后,在開發(fā)板USB HOST1 口插上3G模塊的USB線,會(huì)有打印信息輸出:
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
?
查看設(shè)備節(jié)點(diǎn)ls /dev/tty*, 會(huì)發(fā)現(xiàn)USB虛擬成三串口,在文件系統(tǒng)節(jié)點(diǎn)如下/dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2 ,這說明3G模塊驅(qū)動(dòng)已經(jīng)正確添加到內(nèi)核當(dāng)中。
我們跟 3G 模塊交互主要用的設(shè)備節(jié)點(diǎn)是 /dev/ttyUSB0
?
2.?????? 做一個(gè)應(yīng)用測試程序測試 3G模塊的驅(qū)動(dòng)(USB 轉(zhuǎn)串口的驅(qū)動(dòng))
./test3g? AT? 向? /dev/ttyUSB0 寫入AT 查看回顯信息。
測試程序源代碼參考 huatest3g.c
?
3.?????? 向 linux 內(nèi)核中添加 PPP 協(xié)議的支持
進(jìn)入內(nèi)核目錄下,執(zhí)行 make menuconfig 配置linux 內(nèi)核,添加 PPP 協(xié)議的支持
Device Drivers----àNet Device support
?
?
必須選中的項(xiàng)目:
?????????<*>?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??
然后重新燒寫新生成的內(nèi)核映象。
?
內(nèi)核啟動(dòng)后會(huì)在/dev 下生成ppp 設(shè)備節(jié)點(diǎn)。
ls /dev/ppp -l
crw-rw----??? 1 root???? root???? 108,?? 0 Jan? 1 00:00 /dev/ppp
4.?????? 交叉編譯撥號(hào)上網(wǎng)需要的撥號(hào)工具 pppd 和 chat
下載ppp-2.4.4源碼包,交叉編譯生成撥號(hào)所需的pppd和chat這兩個(gè)程序.
???????解壓源代碼包,進(jìn)入目錄,進(jìn)行交叉編譯,這里所用的板子的交叉編譯器是
?????#cd?/root/gprs/ppp-2.4.1
?????#./configure
?????#make?CC=/usr/local/arm-2007q1/bin/arm-none-linux-gnueabi-gcc???
撥號(hào)所用到的程序就是ppp-2.4.4/pppd/下的pppd,和ppp-2.4.4/chat/下的chat程序
將交叉編譯出來的這兩個(gè)應(yīng)用程序拷貝到開發(fā)板 /usr/sbin 文件夾下,更改其屬性為可執(zhí)行文件。
?
5.?????? 配置撥號(hào)的腳本文件
?
?
?
撥號(hào)上網(wǎng)需要的兩個(gè)配置文件ppp-on? , ppp-on-dialer? (存放位置 /etc/ppp)
紅色部分為修改的內(nèi)容
1)ppp-on配置文件的內(nèi)容:
?
# 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配置文件的內(nèi)容:
?
#!/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):設(shè)置正確的域名解析服務(wù)器地址
將3G 模塊插到計(jì)算機(jī)上。查看聯(lián)通3G 北京地區(qū)的域名解析服務(wù)器地址:
???????? 202.106.195.68? 202.106.46.151
???????? 將這兩個(gè)地址添加到開發(fā)板目錄:/etc/ resolv.conf 中
???????? Vi? /etc/ resolv.conf? 內(nèi)容:
??? nameserver 202.106.195.68
nameserver 202.106.46.151
?
6.?????? 應(yīng)用測試:
1)? 連接好硬件設(shè)備
2)進(jìn)入 /etc/ppp 目錄,執(zhí)行 ./ppp-on
3)執(zhí)行 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 外網(wǎng)測試:
???????? Ping? 61.135.169.105
???????? Ping? www.baidu.com
???????? 5) 可以 telnet bbs.newsmth.net
6) 可以從網(wǎng)站上GET 資源 wget ftp://ftp.denx.de/pub/u-boot/u-boot-1.3.4.tar.bz2
?
四:開發(fā)中出現(xiàn)的小問題及解決辦?A
總結(jié)
以上是生活随笔為你收集整理的3G 模块驱动应用开发总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AutoJs学习-实现日期农历时间显示
- 下一篇: Word 远程调用失败:异常来自 HRE