我使用rtt系统+lwip+ppp组件进行gprs模块的ppp拨号,gprs模块使用的是sim900a,使用联通的手机卡。现在已经可以拨号出去并且从系统打印的log来看联通的服务器已经给我分配了ip及dns地址了,但是再进一步协商处理时,最终连接过程还是被Terminate掉了。现在不太明白中间的问题出来哪里。下面附上我在控制台打印出来的系统log方便大家帮忙查看和方腊问题!
lcp_init: xmit_accm=0 0 0 0
upap_init: 0
pppOverSerialOpen: unit 0: Connecting
pppStart: unit 0
ppp_set_xaccm[0]: outACCM=0 0 0 0
ppp_send_config[0]: outACCM=FF FF FF FF
ppp_recv_config[0]: inACCM=0 0 0 0
lcp_lowerup: asyncmap=0 0 0 0
LCP: lowerup state 0 (LS_INITIAL) -> 2 (LS_CLOSED)
auth_reset: 0
lcp_addci: L opt=2 0
lcp_addci: L opt=5 52181044
lcp_addci: opt=7
lcp_addci: opt=8
pppWrite[0]: len=47
fsm_sdata(LCP): Sent code 1,1,20.
LCP: sending Configure-Request, id 1
LCP: open state 2 (LS_CLOSED) -> 6 (LS_REQSENT)
pppStart: finished
ppp connecting...
SDCard File System initialized!
pppInProc[0]: got 63 bytes
pppInput[0]: LCP len=14
fsm_input(LCP):4,1,14
fsm_rconfnakrej(LCP): Rcvd id 1 state=6 (LS_REQSENT)
lcp_rejci: long opt 5 rejected
lcp_rejci: void opt 7 rejected
lcp_rejci: void opt 8 rejected
lcp_addci: L opt=2 0
pppWrite[0]: len=28
fsm_sdata(LCP): Sent code 1,2,10.
LCP: sending Configure-Request, id 2
pppInput[0]: packet processed
pppInProc[0]: got 4 bytes
pppInProc[0]: got 25 bytes
pppInput[0]: LCP len=10
fsm_input(LCP):2,2,10
fsm_rconfack(LCP): Rcvd id 2 state=6 (LS_REQSENT)
lcp_acki: Ack
pppInput[0]: packet processed
pppInProc[0]: got 1 bytes
pppInProc[0]: got 26 bytes
pppInProc[0]: got 8 bytes
pppInput[0]: LCP len=14
fsm_input(LCP):1,1,14
fsm_rconfreq(LCP): Rcvd id 1 state=7 (LS_ACKRCVD)
lcp_reqci: ASYNCMAP=A0000 PAP (C023)
lcp_reqci: returning CONFACK.
pppWrite[0]: len=35
fsm_sdata(LCP): Sent code 2,1,14.
ppp_send_config[0]: outACCM=0 0 A 0
ppp_recv_config[0]: inACCM=0 0 0 0
link_established: unit 0; Lowering up all protocols...
upap_lowerup: init 0 clientstate s=0
IPCP: lowerup state 0 (LS_INITIAL) -> 2 (LS_CLOSED)
upap_authwithpeer: 0 user=none password=none s=1
pppWrite[0]: len=21
pap_sauth: Sent id 1
pppInput[0]: packet processed
pppInProc[0]: got 2 bytes
pppInProc[0]: got 19 bytes
pppInput[0]: PAP len=13
pap_rauthack: Rcvd id 1 s=3
Remote message: Login OK
这里已经登录成功
auth_withpeer_success: 0 proto=C023
pppWrite[0]: len=36
fsm_sdata(IPCP): Sent code 1,1,28.
IPCP: sending Configure-Request, id 1
IPCP: open state 2 (LS_CLOSED) -> 6 (LS_REQSENT)
pppInput[0]: packet processed
IPCP: timeout resending Config-Request state=6 (LS_REQSENT)
pppWrite[0]: len=37
fsm_sdata(IPCP): Sent code 1,1,28.
IPCP: sending Configure-Request, id 1
pppInProc[0]: got 3 bytes
pppInProc[0]: got 26 bytes
pppInput[0]: IPCP len=10
fsm_input(IPCP):1,1,10
fsm_rconfreq(IPCP): Rcvd id 1 state=6 (LS_REQSENT)
ipcp_reqci: ADDR 192.200.1.21
ipcp_reqci: returning Configure-ACK
pppWrite[0]: len=17
fsm_sdata(IPCP): Sent code 2,1,10.
pppInput[0]: packet processed
pppInProc[0]: got 7 bytes
pppInput[0]: IPCP len=10
fsm_input(IPCP):4,1,10
fsm_rconfnakrej(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
pppWrite[0]: len=29
fsm_sdata(IPCP): Sent code 1,2,22.
IPCP: sending Configure-Request, id 2
pppInput[0]: packet processed
pppInProc[0]: got 5 bytes
pppInProc[0]: got 25 bytes
pppInput[0]: IPCP len=22
fsm_input(IPCP):3,2,22
fsm_rconfnakrej(IPCP): Rcvd id 2 state=8 (LS_ACKSENT)
local IP address 10.194.146.217
primary DNS address 210.21.196.6
secondary DNS address 221.5.88.88
模块已经分配到了ip
pppWrite[0]: len=29
fsm_sdata(IPCP): Sent code 1,3,22.
IPCP: sending Configure-Request, id 3
pppInput[0]: packet processed
pppInProc[0]: got 12 bytes
pppInProc[0]: got 6 bytes
pppInput[0]: IPCP len=10
fsm_input(IPCP):1,1,10
fsm_rconfreq(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
ipcp_reqci: ADDR 192.200.1.21
ipcp_reqci: returning Configure-ACK
本来上面已经分配得到了ip了,我以为这算是拨号成功得了,但是这里为什么持续重复出现了几个这样的过程,192.200.1.21 应该是联通服务器的ip地址?
pppWrite[0]: len=18
fsm_sdata(IPCP): Sent code 2,1,10.
pppInput[0]: packet processed
pppInProc[0]: got 6 bytes
pppInProc[0]: got 12 bytes
pppInput[0]: IPCP len=10
fsm_input(IPCP):1,1,10
fsm_rconfreq(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
ipcp_reqci: ADDR 192.200.1.21
ipcp_reqci: returning Configure-ACK
pppWrite[0]: len=18
fsm_sdata(IPCP): Sent code 2,1,10.
pppInput[0]: packet processed
IPCP: timeout resending Config-Request state=8 (LS_ACKSENT)
pppWrite[0]: len=29
fsm_sdata(IPCP): Sent code 1,3,22.
IPCP: sending Configure-Request, id 3
pppInProc[0]: got 12 bytes
pppInProc[0]: got 6 bytes
pppInput[0]: IPCP len=10
fsm_input(IPCP):1,1,10
fsm_rconfreq(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
ipcp_reqci: ADDR 192.200.1.21
ipcp_reqci: returning Configure-ACK
pppWrite[0]: len=18
fsm_sdata(IPCP): Sent code 2,1,10.
pppInput[0]: packet processed
pppInProc[0]: got 6 bytes
pppInProc[0]: got 12 bytes
pppInput[0]: IPCP len=10
fsm_input(IPCP):1,1,10
fsm_rconfreq(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
ipcp_reqci: ADDR 192.200.1.21
ipcp_reqci: returning Configure-ACK
pppWrite[0]: len=18
fsm_sdata(IPCP): Sent code 2,1,10.
pppInput[0]: packet processed
IPCP: timeout resending Config-Request state=8 (LS_ACKSENT)
pppWrite[0]: len=30
fsm_sdata(IPCP): Sent code 1,3,22.
IPCP: sending Configure-Request, id 3
pppInProc[0]: got 10 bytes
pppInProc[0]: got 8 bytes
pppInput[0]: IPCP len=10
fsm_input(IPCP):1,1,10
fsm_rconfreq(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
ipcp_reqci: ADDR 192.200.1.21
ipcp_reqci: returning Configure-ACK
pppWrite[0]: len=18
fsm_sdata(IPCP): Sent code 2,1,10.
pppInput[0]: packet processed
pppInProc[0]: got 5 bytes
pppInProc[0]: got 26 bytes
pppInProc[0]: got 28 bytes
pppInput[0]: LCP len=32
fsm_input(LCP):5,2,32
fsm_rtermreq(LCP): Rcvd id 2 state=9 (LS_OPENED)
这里我感觉是被联通发过来的指令给中断了连接了。
LCP terminated by peer (20007654)
link_down: 0
upap_lowerdown: 0 s=4
IPCP: lowerdown state 8 (LS_ACKSENT) -> 1 (LS_STARTING)
IPCP: close reason=LCP down state 1 (LS_STARTING) -> 0 (LS_INITIAL)
pppLinkDown: unit 0
pppRecvWakeup: unit 0
read_abort
ppp_send_config[0]: outACCM=FF FF FF FF
ppp_recv_config[0]: inACCM=0 0 0 0
pppWrite[0]: len=18
fsm_sdata(LCP): Sent code 6,2,4.
pppInput[0]: packet processed
pppInProc[0]: got 1 bytes
LCP: timeout sending Terminate-Request state=5 (LS_STOPPING)
link_terminated: 0
Connection terminated.
pppLinkTerminated: unit 0
pppRecvWakeup: unit 0
read_abort
pppLinkTerminated: unit 0: linkStatusCB=08000d99 errCode=0
We have lost connection
pppLinkTerminated: finished.
连接已经失败
恳请懂的童鞋大侠解答啊!
2013-06-06
补充说明:硬件平台使用stm32f407.代码是直接使用art上的工程,
由于art的工程里面没有ppp的源码,我是从realtouch的工程里面
把ppp的源码拉过来的。
2013-06-07
结贴,发现是我串口先太长误码率太高原因产生。把串口线弄短,
现在已经拨号成功啦!可以ping通外网了,感谢群里及论坛的热血帮助!