LC5730 3G模块在ARM板上的调试&GPRS拨号上网
最近一两个星期一直在ARM板上调试LC5730,今天终于可以GPRS拨号上网了。
我板子上的linux内核版本是2.6.14
ARM板上有MiniPCI接口,LC5730 3G模块就插在MiniPCI接口上;虽说是MiniPCI接口,但却不是用PCI总线进行通信的,而是采用的USB总线进行通信,有的3G模块还带有串口,LC5730上没有串口。
既然用的是USB,所以在linux下和3G模块进行通信用到usbserial.ko也不奇怪了。
首先插入这个模块(注意usbserial.ko依赖于usbcore.ko,请确保usbcore.ko已经插入到内核):
#insmod usbserial.ko vendor=0x1ab7 product=0x5730
按 道理说就会看到出现ttyUSB0, ttyUSB1, ttyUSB2,ttyUSB3四个设备,不过我的板子不是出现这四。个设备,而是/dev/usb/tts/0,/dev/usb /tts/1,/dev/usb/tts/2,/dev/usb/tts/3四个设备,害得我手动mknod了四个设备节点。。。。。。。。
既然linux已经识别了3G模块,我们就要发送AT命令给3G模块试试了,不过我不想自己写linux串口程序区测试,这样出了问题很难定位是我程序的 问题还是3G模块的问题,所以我移植了minicom到ARM板上,这里就不详述移植过程了,稍微提一下,除了把minicom这个应用程序拷贝到ARM 板上的文件系统上外,还要把minicom的默认配置文件minirc.dfl也拷贝过去,内容如下:
# Machine-generated file - use "minicom -s" to change parameters.
pr port /dev/usb/tts/0
pu baudrate 9600
pu minit
pu rtscts No
还要在/usr/share/terminfo建一个目录,取决于你的终端类型,我这里是v,然后将PC机上linux的vt102(也取决与你的终端类型)拷贝到该目录下。
然后直接敲minicom,也可以minicom -s设置你的串口。然后打开回显。输入AT,立刻看到一个OK,说明ARM板与3G模块通信正常;然后插入SIM卡(不要带电操作,我忘记了也会带电插拔 SIM卡),输入AT+CPIN?来检查3G模块和SIM卡的通信是否正常,如果看到READY就说明OK。
接下来测试了发短信,打电话,收短信等命令都可以正常执行。不过每当发短信,打电话时ARM板就会重启,怀疑与电源不稳定有关,因为3G模块在发射或接 受信号时功率比较大,LC5730大约要1.1A的电流,我看了下ARM板上MiniPCI上3.3V电源上的电解电容只有可怜的22uF,立马并了两个 470uF的电容上去,重启现象就没有了。
接下来就是GPRS拨号上网了,到这里我有两个方案,主要是关于拨号软件的,我一开始想移植wvdial这个拨号软件的,移植到最后,发现 getcontext(),setcontext()这两个函数没有在ARM上实现,只能放弃,还有就是我使用的C库是uclibc也导致了一些问题,所 以到最后还是放弃了wvdial。
还是老老实实的采用ppp拨号吧。ppp比较麻烦的就是写配置脚本,这里我移植的是ppp-2.4.5,然后将交叉编译的 pppd,chat,pppstats,pppdump拷贝到/usr/sbin目录下,接下来写配置脚本,我在/etc/ppp/peers下增加了个 options文件如下:
noauth
connect "/usr/sbin/chat -v -f /etc/ppp/connect"
disconnect "/usr/sbin/chat -v -f /etc/ppp/disconnect"
debug
/dev/usb/tts/0
115200
defaultroute
nodetach
usepeerdns
在/etc/ppp/下添加connect,disconnet文件,connect文件如下:
ABORT 'BUSY'
ABORT 'ERROR'
ABORT 'NO CARRIER'
ABORT 'NO ANSWER'
ABORT 'NO DIALTONE'
ABORT 'RINGING'
SAY 'start connect script/n'
SAY 'send AT.../n'
"" 'AT'
SAY 'seng AT+CFUN=1.../n'
OK 'AT+CFUN=1'
TIMEOUT 60
SAY 'Setting APN.../n'
OK 'AT+CGDCONT=1,"IP","CMNET"'
SAY 'Dialing.../n'
OK 'ATD*99***1#'
CONNECT
当然还有其他一些文件,就不详述了。
准备好以后,直接pppd call options就可以啦
这时用ifconfig 命令就可看到多了一个ppp0,然后ifconfig eht0 down关掉eth0,接着就可ping www.baidu.com即可。
今天先写到这里。。。