реклама на сайте
подробности

 
 
> LWIP. Установка TCP соединения в сервером, LWIP + TCP + PPP Over Serial Line
Grigorij
сообщение Sep 22 2016, 09:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 10-03-07
Пользователь №: 26 038



Добрый день.

Нужна помощь с библиотекой LWIP, неделю воюю с ней и никак не могу забороть.

Суть в следующем. Есть плата с GSM-модемом SARA G300. Сам модем умеет только данные передавать, при этом встроенного TCP стека у него нет.
Надо установить TCP соединение с сервером и отправить пакет с данными.

В итоге получилось настроить модем и установить PPP соединение (PPP Over Serial Line). Собственно ниже лог установки соединения.
CODE

[016.160] PPP-DEBUG: lcp_init: xmit_accm=0 0 0 0
[016.160] PPP-DEBUG: pppMain: unit 0: Connecting
[016.170] PPP-DEBUG: pppStartCB: unit 0
[016.180] PPP-DEBUG: ppp_set_xaccm[0]: outACCM=0 0 0 0
[016.190] PPP-DEBUG: ppp_send_config[0]: outACCM=FF FF FF FF
[016.200] PPP-DEBUG: ppp_recv_config[0]: inACCM=0 0 0 0
[016.210] PPP-DEBUG: lcp_lowerup: asyncmap=0 0 0 0
[016.220] PPP-DEBUG: LCP: lowerup state 0 (LS_INITIAL) -> 2 (LS_CLOSED)
[016.230] PPP-DEBUG: auth_reset: 0
[016.240] PPP-DEBUG: lcp_addci: L opt=2 0
[016.250] PPP-DEBUG: lcp_addci: L opt=5 24F8B455
[016.260] PPP-DEBUG: lcp_addci: opt=7
[016.270] PPP-DEBUG: lcp_addci: opt=8
[016.280] PPP-DEBUG: pppWrite[0]: len=45
[016.290] PPP-DEBUG: fsm_sdata(LCP): Sent code 1,1,20.
[016.300] PPP-DEBUG: LCP: sending Configure-Request, id 1
[016.310] PPP-DEBUG: LCP: open state 2 (LS_CLOSED) -> 6 (LS_REQSENT)
[017.190] PPP-DEBUG: pppInProc[0]: got 92 bytes
[017.190] PPP-DEBUG: pppInput[0]: LCP len=20
[017.200] PPP-DEBUG: fsm_input(LCP):1,1,20
[017.210] PPP-DEBUG: fsm_rconfreq(LCP): Rcvd id 1 state=6 (LS_REQSENT)
[017.220] PPP-DEBUG: lcp_reqci: rcvd ASYNCMAP=0 MAGICNUMBER (C5402872) PCOMPRES
[017.230] PPP-DEBUG: lcp_reqci: returning CONFACK.
[017.240] PPP-DEBUG: fsm_sdata(LCP): Sent code 2,1,20.
[017.250] PPP-DEBUG: pppInput[0]: LCP len=20
[017.260] PPP-DEBUG: fsm_input(LCP):2,1,20
[017.270] PPP-DEBUG: fsm_rconfack(LCP): Rcvd id 1 state=8 (LS_ACKSENT)
[017.280] PPP-DEBUG: lcp_acki: Ack
[017.290] PPP-DEBUG: ppp_send_config[0]: outACCM=0 0 0 0
[017.300] PPP-DEBUG: ppp_recv_config[0]: inACCM=0 0 0 0
[017.310] PPP-DEBUG: link_established: 0
[017.320] PPP-DEBUG: upap_lowerup: 0 s=0
[017.330] PPP-DEBUG: IPCP: lowerup state 0 (LS_INITIAL) -> 2 (LS_CLOSED)
[017.340] PPP-DEBUG: pppWrite[0]: len=30
[017.350] PPP-DEBUG: fsm_sdata(IPCP): Sent code 1,1,22.
[017.360] PPP-DEBUG: IPCP: sending Configure-Request, id 1
[017.370] PPP-DEBUG: IPCP: open state 2 (LS_CLOSED) -> 6 (LS_REQSENT)
[023.310] PPP-DEBUG: pppInProc[0]: got 46 bytes
[023.310] PPP-DEBUG: pppInput[0]: LCP len=20
[023.320] PPP-DEBUG: fsm_input(LCP):1,1,20
[023.330] PPP-DEBUG: fsm_rconfreq(LCP): Rcvd id 1 state=9 (LS_OPENED)
[023.340] PPP-DEBUG: link_down: 0
[023.350] PPP-DEBUG: upap_lowerdown: 0 s=1
[023.360] PPP-DEBUG: IPCP: lowerdown state 6 (LS_REQSENT) -> 1 (LS_STARTING)
[023.370] PPP-DEBUG: IPCP: close reason=LCP down state 1 (LS_STARTING) -> 0 (LS
[023.380] PPP-DEBUG: pppLinkDown: unit 0
[023.390] PPP-DEBUG: pppMainWakeup: unit 0
[023.400] PPP-DEBUG: ppp_send_config[0]: outACCM=FF FF FF FF
[023.410] PPP-DEBUG: ppp_recv_config[0]: inACCM=0 0 0 0
[023.420] PPP-DEBUG: auth_reset: 0
[023.430] PPP-DEBUG: lcp_addci: L opt=2 0
[023.440] PPP-DEBUG: lcp_addci: L opt=5 FB82D078
[023.450] PPP-DEBUG: lcp_addci: opt=7
[023.460] PPP-DEBUG: lcp_addci: opt=8
[023.470] PPP-DEBUG: pppWrite[0]: len=45
[023.480] PPP-DEBUG: fsm_sdata(LCP): Sent code 1,2,20.
[023.490] PPP-DEBUG: LCP: sending Configure-Request, id 2
[023.500] PPP-DEBUG: lcp_reqci: rcvd ASYNCMAP=0 MAGICNUMBER (C5402872) PCOMPRES
[023.510] PPP-DEBUG: lcp_reqci: returning CONFACK.
[023.520] PPP-DEBUG: pppWrite[0]: len=45
[023.530] PPP-DEBUG: fsm_sdata(LCP): Sent code 2,1,20.
[024.430] PPP-DEBUG: pppInProc[0]: got 45 bytes
[024.430] PPP-DEBUG: pppInput[0]: LCP len=20
[024.440] PPP-DEBUG: fsm_input(LCP):2,2,20
[024.450] PPP-DEBUG: fsm_rconfack(LCP): Rcvd id 2 state=8 (LS_ACKSENT)
[024.460] PPP-DEBUG: lcp_acki: Ack
[024.470] PPP-DEBUG: ppp_send_config[0]: outACCM=0 0 0 0
[024.480] PPP-DEBUG: ppp_recv_config[0]: inACCM=0 0 0 0
[024.490] PPP-DEBUG: link_established: 0
[024.500] PPP-DEBUG: upap_lowerup: 0 s=0
[024.510] PPP-DEBUG: IPCP: lowerup state 0 (LS_INITIAL) -> 2 (LS_CLOSED)
[024.520] PPP-DEBUG: pppWrite[0]: len=30
[024.530] PPP-DEBUG: fsm_sdata(IPCP): Sent code 1,2,22.
[024.540] PPP-DEBUG: IPCP: sending Configure-Request, id 2
[024.550] PPP-DEBUG: IPCP: open state 2 (LS_CLOSED) -> 6 (LS_REQSENT)
[025.450] PPP-DEBUG: pppInProc[0]: got 42 bytes
[025.450] PPP-DEBUG: pppInput[0]: IPCP len=10
[025.460] PPP-DEBUG: fsm_input(IPCP):1,1,10
[025.470] PPP-DEBUG: fsm_rconfreq(IPCP): Rcvd id 1 state=6 (LS_REQSENT)
[025.480] PPP-DEBUG: ipcp_reqci: ADDR 10.213.160.235
[025.490] PPP-DEBUG: ipcp_reqci: returning Configure-ACK
[025.500] PPP-DEBUG: fsm_sdata(IPCP): Sent code 2,1,10.
[025.510] PPP-DEBUG: pppInput[0]: IPCP len=16
[025.520] PPP-DEBUG: fsm_input(IPCP):4,2,16
[025.530] PPP-DEBUG: fsm_rconfnakrej(IPCP): Rcvd id 2 state=8 (LS_ACKSENT)
[025.540] PPP-DEBUG: pppWrite[0]: len=18
[025.550] PPP-DEBUG: fsm_sdata(IPCP): Sent code 1,3,10.
[025.560] PPP-DEBUG: IPCP: sending Configure-Request, id 3
[026.470] PPP-DEBUG: pppInProc[0]: got 18 bytes
[026.470] PPP-DEBUG: pppInput[0]: IPCP len=10
[026.480] PPP-DEBUG: fsm_input(IPCP):3,3,10
[026.490] PPP-DEBUG: fsm_rconfnakrej(IPCP): Rcvd id 3 state=8 (LS_ACKSENT)
[026.500] PPP-DEBUG: local IP address 10.213.160.235
[026.510] PPP-DEBUG: pppWrite[0]: len=18
[026.520] PPP-DEBUG: fsm_sdata(IPCP): Sent code 1,4,10.
[026.530] PPP-DEBUG: IPCP: sending Configure-Request, id 4
[027.490] PPP-DEBUG: pppInProc[0]: got 18 bytes
[027.490] PPP-DEBUG: pppInput[0]: IPCP len=10
[027.500] PPP-DEBUG: fsm_input(IPCP):2,4,10
[027.510] PPP-DEBUG: fsm_rconfack(IPCP): Rcvd id 4 state=8 (LS_ACKSENT)
[027.520] PPP-DEBUG: np_up: 0 proto=21
[027.530] PPP-DEBUG: np_up: maxconnect=0 idle_time_limit=0
[027.540] PPP-DEBUG: ipcp: up
[027.550] PPP-DEBUG: sifup: unit 0: linkStatusCB=8037a89 errCode=0
[027.560] network: PPP connection was established
[027.570] network: ip_addr = 10.213.160.235
[027.580] network: netmask = 255.255.255.0
[027.590] network: dns1 = 0.0.0.0
[027.600] network: dns2 = 0.0.0.0

Судя по логу, вроде как PPP установлено.
Далее пытаюсь с помощью следующего кода установить TCP соединение с сервером (IP - в пример не настоящий):
Код
void NetworkOpenTCP(void)
{
    struct ip_addr server_ip;
    IP4_ADDR(&server_ip, 13,14,15,16);
    tcpDesc = tcp_new();
    if (tcpDesc)
    {
        tcp_err(tcpDesc, TCPError);
        tcp_recv(tcpDesc, TCPReceive);

        if (tcp_connect(tcpDesc, &server_ip, 9100, TCPConnected) == ERR_OK)
        {
                DBG("Establishing TCP connection with server\n");
        }
    }
}

static err_t TCPConnected(void *arg, struct tcp_pcb *pcb, err_t err)
{
    LWIP_UNUSED_ARG(arg);
    if (err == ERR_OK)
    {
        DBG("TCP Socket was opened\n");
    }
    else
    {
        DBG("TCP Socket was not opened\n");
    }

    return err;
}

В итоге получаю следующий лог:
CODE

680] LWIP-DEBUG: tcp_connect to port 20485
[027.680] PPP-DEBUG: pppifOutput[0]: proto=0x0021
[027.690] network: Establishing TCP connection with server
[028.510] PPP-DEBUG: pppInProc[0]: got 162 bytes
[028.510] PPP-DEBUG: pppInput[0]: IPCP len=10
[028.520] PPP-DEBUG: fsm_input(IPCP):1,1,10
[028.530] PPP-DEBUG: fsm_rconfreq(IPCP): Rcvd id 1 state=9 (LS_OPENED)
[028.540] PPP-DEBUG: ipcp: down
[028.550] PPP-DEBUG: np_down: 0 proto=21
[028.560] PPP-DEBUG: sifdown: unit 0: linkStatusCB=8037a89 errCode=0
[028.570] network: PPP connection was lost
[028.580] PPP-DEBUG: fsm_sdata(IPCP): Sent code 1,5,22.
[028.590] PPP-DEBUG: IPCP: sending Configure-Request, id 5
[028.600] PPP-DEBUG: ipcp_reqci: ADDR 10.213.160.235
[028.610] PPP-DEBUG: ipcp_reqci: returning Configure-ACK
[028.620] PPP-DEBUG: fsm_sdata(IPCP): Sent code 2,1,10.
[028.630] PPP-DEBUG: pppInput[0]: IPCP len=10
[028.640] PPP-DEBUG: fsm_input(IPCP):1,1,10
[028.650] PPP-DEBUG: fsm_rconfreq(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
[028.660] PPP-DEBUG: ipcp_reqci: ADDR 10.213.160.235
[028.670] PPP-DEBUG: ipcp_reqci: returning Configure-ACK
[028.680] PPP-DEBUG: fsm_sdata(IPCP): Sent code 2,1,10.
[028.690] PPP-DEBUG: pppInput[0]: IPCP len=10
[028.700] PPP-DEBUG: fsm_input(IPCP):1,1,10
[028.710] PPP-DEBUG: fsm_rconfreq(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
[028.720] PPP-DEBUG: ipcp_reqci: ADDR 10.213.160.235
[028.730] PPP-DEBUG: ipcp_reqci: returning Configure-ACK
[028.740] PPP-DEBUG: fsm_sdata(IPCP): Sent code 2,1,10.
[028.750] PPP-DEBUG: pppInput[0]: IPCP len=10
[028.760] PPP-DEBUG: fsm_input(IPCP):1,1,10
[028.770] PPP-DEBUG: fsm_rconfreq(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
[028.780] PPP-DEBUG: ipcp_reqci: ADDR 10.213.160.235
[028.790] PPP-DEBUG: ipcp_reqci: returning Configure-ACK
[028.800] PPP-DEBUG: fsm_sdata(IPCP): Sent code 2,1,10.
[028.810] PPP-DEBUG: pppInput[0]: IPCP len=10
[028.820] PPP-DEBUG: fsm_input(IPCP):1,1,10
[028.830] PPP-DEBUG: fsm_rconfreq(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
[028.840] PPP-DEBUG: ipcp_reqci: ADDR 10.213.160.235
[028.850] PPP-DEBUG: ipcp_reqci: returning Configure-ACK
[028.860] PPP-DEBUG: pppWrite[0]: len=18
[028.870] PPP-DEBUG: fsm_sdata(IPCP): Sent code 2,1,10.
[029.870] PPP-DEBUG: pppInProc[0]: got 18 bytes
[029.870] PPP-DEBUG: pppInput[0]: IPCP len=10
[029.880] PPP-DEBUG: fsm_input(IPCP):2,1,10
[029.890] PPP-DEBUG: fsm_rconfack(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
[034.910] PPP-DEBUG: IPCP: timeout resending Config-Request state=8 (LS_ACKSENT
[034.910] PPP-DEBUG: pppWrite[0]: len=30
[034.920] PPP-DEBUG: fsm_sdata(IPCP): Sent code 1,5,22.
[034.930] PPP-DEBUG: IPCP: sending Configure-Request, id 5
[034.970] PPP-DEBUG: pppInProc[0]: got 30 bytes
[034.970] PPP-DEBUG: pppInput[0]: IPCP len=22
[034.980] PPP-DEBUG: fsm_input(IPCP):1,5,22
[034.990] PPP-DEBUG: fsm_rconfreq(IPCP): Rcvd id 5 state=8 (LS_ACKSENT)
[b][b][035.000] PPP-DEBUG: ipcp_reqci: Reject ADDR 0.0.0.0
[035.010] PPP-DEBUG: ipcp_reqci: Rejecting DNS1 Request
[035.020] PPP-DEBUG: ipcp_reqci: Rejecting DNS2 Request
[035.030] PPP-DEBUG: ipcp_reqci: returning Configure-REJ
[035.040] PPP-DEBUG: pppWrite[0]: len=30

[/b][/b][035.050] PPP-DEBUG: fsm_sdata(IPCP): Sent code 4,5,22.
[035.990] PPP-DEBUG: pppInProc[0]: got 30 bytes
[035.990] PPP-DEBUG: pppInput[0]: IPCP len=22
[036.000] PPP-DEBUG: fsm_input(IPCP):4,5,22
[036.010] PPP-DEBUG: fsm_rconfnakrej(IPCP): Rcvd id 5 state=6 (LS_REQSENT)
[036.020] PPP-DEBUG: pppWrite[0]: len=22
[036.030] PPP-DEBUG: fsm_sdata(IPCP): Sent code 1,6,14.
[036.040] PPP-DEBUG: IPCP: sending Configure-Request, id 6
[037.010] PPP-DEBUG: pppInProc[0]: got 22 bytes
[037.010] PPP-DEBUG: pppInput[0]: IPCP len=14
[037.020] PPP-DEBUG: fsm_input(IPCP):1,6,14
[037.030] PPP-DEBUG: fsm_rconfreq(IPCP): Rcvd id 6 state=6 (LS_REQSENT)
[037.040] PPP-DEBUG: ipcp_reqci: Rejecting unknown CI type 1
[037.050] PPP-DEBUG: ipcp_reqci: returning Configure-REJ
[037.060] PPP-DEBUG: pppWrite[0]: len=22
[037.070] PPP-DEBUG: fsm_sdata(IPCP): Sent code 4,6,14.
[038.030] PPP-DEBUG: pppInProc[0]: got 22 bytes
[038.030] PPP-DEBUG: pppInput[0]: IPCP len=14
[038.040] PPP-DEBUG: fsm_input(IPCP):4,6,14
[038.050] PPP-DEBUG: fsm_rconfnakrej(IPCP): Rcvd id 6 state=6 (LS_REQSENT)
[038.060] PPP-DEBUG: pppWrite[0]: len=12
[038.070] PPP-DEBUG: fsm_sdata(IPCP): Sent code 1,7,4.
[038.080] PPP-DEBUG: IPCP: sending Configure-Request, id 7
[039.050] PPP-DEBUG: pppInProc[0]: got 12 bytes
[039.050] PPP-DEBUG: pppInput[0]: IPCP len=4
[039.060] PPP-DEBUG: fsm_input(IPCP):1,7,4
[039.070] PPP-DEBUG: fsm_rconfreq(IPCP): Rcvd id 7 state=6 (LS_REQSENT)
[039.080] PPP-DEBUG: ipcp_reqci: returning Configure-ACK
[039.090] PPP-DEBUG: pppWrite[0]: len=12
[039.100] PPP-DEBUG: fsm_sdata(IPCP): Sent code 2,7,4.
[044.150] PPP-DEBUG: IPCP: timeout resending Config-Request state=8 (LS_ACKSENT
[044.150] PPP-DEBUG: pppWrite[0]: len=12
[044.160] PPP-DEBUG: fsm_sdata(IPCP): Sent code 1,7,4.
[044.170] PPP-DEBUG: IPCP: sending Configure-Request, id 7
[050.180] PPP-DEBUG: IPCP: timeout resending Config-Request state=8 (LS_ACKSENT
[050.180] PPP-DEBUG: pppWrite[0]: len=12
[050.190] PPP-DEBUG: fsm_sdata(IPCP): Sent code 1,7,4.
[050.200] PPP-DEBUG: IPCP: sending Configure-Request, id 7
[056.210] PPP-DEBUG: IPCP: timeout resending Config-Request state=8 (LS_ACKSENT
[056.210] PPP-DEBUG: pppWrite[0]: len=12
[056.220] PPP-DEBUG: fsm_sdata(IPCP): Sent code 1,7,4.
[056.230] PPP-DEBUG: IPCP: sending Configure-Request, id 7
[062.240] PPP-DEBUG: IPCP: timeout resending Config-Request state=8 (LS_ACKSENT
[062.240] PPP-DEBUG: pppWrite[0]: len=12
....
[219.030] PPP-DEBUG: fsm_sdata(IPCP): Sent code 1,7,4.
[219.040] PPP-DEBUG: IPCP: sending Configure-Request, id 7
[225.050] PPP-DEBUG: IPCP: timeout resending Config-Request state=8 (LS_ACKSENT
[225.050] PPP-DEBUG: pppWrite[0]: len=12


дальше выделенная часть постоянно повторяется


В итоге соединение не устанавливается. В TCPConnected я не попадаю. Собственно нужна помощь, ну или хотя бы направление, куда/где смотреть.
Версия библиотеки LWIP 1.4.1.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
alex2103
сообщение Sep 22 2016, 10:29
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 7-03-07
Из: г. Запорожье
Пользователь №: 25 945



Использую netconn примерно так.

Код
struct netconn * conn_Serv;
conn_Serv = netconn_new_with_callback(NETCONN_TCP, callback);
netconn_connect(conn_Serv, &ServerAddr, ServerPort);

Ждем пока не сработает колбек. В колбеке проверяем успешность подключения или ошибку.
Так же надо завести таймаут на connect.

void callback(struct netconn *pconn, enum netconn_evt event, u16_t len)
{

    switch (event)
    {        
...
        case NETCONN_EVT_SENDPLUS:
        {    
            if (len == 0)
                TCPconnected = 1;
            break;
        }
        
...
    }

}
Go to the top of the page
 
+Quote Post
Grigorij
сообщение Sep 22 2016, 11:21
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 10-03-07
Пользователь №: 26 038



Цитата(alex2103 @ Sep 22 2016, 14:29) *
Использую netconn примерно так...

Попробовал так, пока не завелось. Дополнительно получил в логе:

CODE

[041.480] PPP-DEBUG: Could not determine remote IP address
[041.490] PPP-DEBUG: ipcp: down
[041.500] PPP-DEBUG: np_down: 0 proto=21
[041.510] PPP-DEBUG: sifdown: unit 0: linkStatusCB=8037ba9 errCode=0
[041.520] network: PPP connection was lost
[041.530] PPP-DEBUG: pppWrite[0]: len=49
[041.540] PPP-DEBUG: fsm_sdata(IPCP): Sent code 5,8,41.
[041.550] PPP-DEBUG: IPCP: close reason=Could not determine remote IP address s
[041.860] LWIP-DEBUG: tcp_slowtmr: processing active pcb
[042.360] LWIP-DEBUG: tcp_slowtmr: processing active pcb
[042.440] PPP-DEBUG: pppInProc[0]: got 49 bytes
[042.440] PPP-DEBUG: pppInput[0]: IPCP len=41
[042.450] PPP-DEBUG: fsm_input(IPCP):5,8,41
[042.460] PPP-DEBUG: fsm_rtermreq(IPCP): Rcvd id 8 state=4 (LS_CLOSING)
[042.470] PPP-DEBUG: pppWrite[0]: len=12
[042.480] PPP-DEBUG: fsm_sdata(IPCP): Sent code 6,8,4.
[042.910] LWIP-DEBUG: tcp_slowtmr: processing active pcb
[042.910] LWIP-DEBUG: tcp_slowtmr: polling application
[043.420] LWIP-DEBUG: tcp_slowtmr: processing active pcb
[043.460] PPP-DEBUG: pppInProc[0]: got 12 bytes
[043.460] PPP-DEBUG: pppInput[0]: IPCP len=4
[043.470] PPP-DEBUG: fsm_input(IPCP):6,8,4
[043.480] PPP-DEBUG: fsm_rtermack(IPCP): state=4 (LS_CLOSING)
[043.490] PPP-DEBUG: np_finished: 0 proto=21
[043.500] PPP-DEBUG: link_down: 0
[043.510] PPP-DEBUG: upap_lowerdown: 0 s=1
[043.520] PPP-DEBUG: IPCP: lowerdown state 2 (LS_CLOSED) -> 0 (LS_INITIAL)
[043.530] PPP-DEBUG: IPCP: close reason=LCP down state 0 (LS_INITIAL) -> 0 (LS_
[043.540] PPP-DEBUG: pppLinkDown: unit 0
[043.550] PPP-DEBUG: pppMainWakeup: unit 0
[043.560] PPP-DEBUG: ppp_send_config[0]: outACCM=FF FF FF FF
[043.570] PPP-DEBUG: ppp_recv_config[0]: inACCM=0 0 0 0
[043.580] PPP-DEBUG: pppWrite[0]: len=44
[043.590] PPP-DEBUG: fsm_sdata(LCP): Sent code 5,3,32.
[043.600] PPP-DEBUG: LCP: close reason=No network protocols running state 9 (LS
[044.070] LWIP-DEBUG: tcp_slowtmr: processing active pcb
[044.570] LWIP-DEBUG: tcp_slowtmr: processing active pcb
[044.600] PPP-DEBUG: pppInProc[0]: got 44 bytes

[044.600] PPP-DEBUG: pppInput[0]: LCP len=32
[044.610] PPP-DEBUG: fsm_input(LCP):5,3,32
[044.620] PPP-DEBUG: fsm_rtermreq(LCP): Rcvd id 3 state=4 (LS_CLOSING)
[044.630] PPP-DEBUG: pppWrite[0]: len=17
[044.640] PPP-DEBUG: fsm_sdata(LCP): Sent code 6,3,4.
[045.120] LWIP-DEBUG: tcp_slowtmr: processing active pcb
[045.120] LWIP-DEBUG: tcp_slowtmr: polling application
[045.620] PPP-DEBUG: pppInProc[0]: got 17 bytes
[045.620] PPP-DEBUG: pppInput[0]: LCP len=4
[045.630] PPP-DEBUG: fsm_input(LCP):6,3,4
[045.640] PPP-DEBUG: fsm_rtermack(LCP): state=4 (LS_CLOSING)
[045.650] PPP-DEBUG: link_terminated: 0
[045.660] PPP-DEBUG: Connection terminated.
[045.670] PPP-DEBUG: pppLinkTerminated: unit 0
[045.680] PPP-DEBUG: pppMainWakeup: unit 0
[045.700] PPP-DEBUG: pppMain: unit 0: PHASE_DEAD
[045.700] PPP-DEBUG: pppMain: unit 0: linkStatusCB=8037ba9 errCode=0
[045.710] network: PPP connection was lost

Может у меня с настройками что-то не то в lwipopt. Сейчас этот файл у меня выглядит следующим образом:
CODE

#ifndef __LWIPOPTS_H__
#define __LWIPOPTS_H__

/**
* SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain
* critical regions during buffer allocation, deallocation and memory
* allocation and deallocation.
*/

#define SYS_LIGHTWEIGHT_PROT 1

#define ETHARP_TRUST_IP_MAC 0
#define IP_REASSEMBLY 0
#define IP_FRAG 0
#define ARP_QUEUEING 0

#define LWIP_TIMEVAL_PRIVATE 0

#define LWIP_NETIF_API 1

/**
* NO_SYS==1: Provides VERY minimal functionality. Otherwise,
* use lwIP facilities.
*/

#define NO_SYS 0

/* ---------- Memory options ---------- */

/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
byte alignment -> define MEM_ALIGNMENT to 2. */
#define MEM_ALIGNMENT 4

/* MEM_SIZE: the size of the heap memory. If the application will send
a lot of data that needs to be copied, this should be set high. */
#define MEM_SIZE (4 * 1024)

/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
sends a lot of data out of ROM (or other static memory), this
should be set high. */
#define MEMP_NUM_PBUF 2
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
per active UDP "connection". */
#define MEMP_NUM_UDP_PCB 2
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
connections. */
#define MEMP_NUM_TCP_PCB 2
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
connections. */
#define MEMP_NUM_TCP_PCB_LISTEN 6
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
segments. */
#define MEMP_NUM_TCP_SEG 10
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
timeouts. */
#define MEMP_NUM_SYS_TIMEOUT 7

/* ---------- Pbuf options ---------- */

/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
#define PBUF_POOL_SIZE 2

/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
#define PBUF_POOL_BUFSIZE 1500

/* ---------- Netbuf options ---------- */

/* MEMP_NUM_NETBUF: the number of struct netbufs.*/
#define MEMP_NUM_NETBUF 2

/* MEMP_NUM_NETCONN: the number of struct netconns.*/
#define MEMP_NUM_NETCONN 2

/* ---------- TCP options ---------- */

#define LWIP_TCP 1
#define TCP_TTL 255

/* Controls if TCP should queue segments that arrive out of
order. Define to 0 if your device is low on memory. */
#define TCP_QUEUE_OOSEQ 0

/* TCP Maximum segment size. */
#define TCP_MSS (1500 - 40) /* TCP_MSS = (Ethernet MTU - IP header size - TCP header size) */

/* TCP sender buffer space (bytes). */
#define TCP_SND_BUF (2 * TCP_MSS)

/* TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */
#define TCP_SND_QUEUELEN (4 * TCP_SND_BUF/TCP_MSS)

/* TCP receive window. */
#define TCP_WND (2 * TCP_MSS)


/* ---------- PPP options ---------- */

#define PPP_SUPPORT 1
#define PPPOS_SUPPORT 1
#define PPP_THREAD_STACKSIZE 1000
#define PPP_THREAD_PRIO (configMAX_PRIORITIES - 2)

#define FSM_DEFMAXCONFREQS 1000

#define PAP_SUPPORT 1
#define CHAP_SUPPORT 1

/* ---------- DNS options ---------- */

#define LWIP_DNS 1

/* ---------- ICMP options ---------- */

#define LWIP_ICMP 1

/* ---------- UDP options ---------- */

#define LWIP_UDP 1
#define UDP_TTL 255

/* ---------- Statistics options ---------- */

#define LWIP_STATS 0
#define LWIP_PROVIDE_ERRNO 1

/*
--------------------------------------
---------- Checksum options ----------
--------------------------------------
*/

/*
The STM32F2x7 allows computing and verifying the IP, UDP, TCP and ICMP checksums by hardware:
- To use this feature let the following define uncommented.
- To disable it and process by CPU comment the the checksum.
*/
#define CHECKSUM_BY_HARDWARE

#ifdef CHECKSUM_BY_HARDWARE
/* CHECKSUM_GEN_IP==0: Generate checksums by hardware for outgoing IP packets.*/
#define CHECKSUM_GEN_IP 0
/* CHECKSUM_GEN_UDP==0: Generate checksums by hardware for outgoing UDP packets.*/
#define CHECKSUM_GEN_UDP 0
/* CHECKSUM_GEN_TCP==0: Generate checksums by hardware for outgoing TCP packets.*/
#define CHECKSUM_GEN_TCP 0
/* CHECKSUM_CHECK_IP==0: Check checksums by hardware for incoming IP packets.*/
#define CHECKSUM_CHECK_IP 0
/* CHECKSUM_CHECK_UDP==0: Check checksums by hardware for incoming UDP packets.*/
#define CHECKSUM_CHECK_UDP 0
/* CHECKSUM_CHECK_TCP==0: Check checksums by hardware for incoming TCP packets.*/
#define CHECKSUM_CHECK_TCP 0
#else
/* CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.*/
#define CHECKSUM_GEN_IP 1
/* CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.*/
#define CHECKSUM_GEN_UDP 1
/* CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.*/
#define CHECKSUM_GEN_TCP 1
/* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.*/
#define CHECKSUM_CHECK_IP 1
/* CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.*/
#define CHECKSUM_CHECK_UDP 1
/* CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.*/
#define CHECKSUM_CHECK_TCP 1
#endif

/*
----------------------------------------------
---------- Sequential layer options ----------
----------------------------------------------
*/
/**
* LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
*/

#define LWIP_NETCONN 1

/*
------------------------------------
---------- Socket options ----------
------------------------------------
*/
/**
* LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
*/

#define LWIP_SOCKET 1

/*
-----------------------------------
---------- DEBUG options ----------
-----------------------------------
*/

#define LWIP_DEBUG LWIP_DBG_ON
#define PPP_DEBUG LWIP_DBG_ON
#define TCP_DEBUG LWIP_DBG_ON

//#define PPP_DEBUG_RAW

/*
---------------------------------
---------- OS options ----------
---------------------------------
*/

#define TCPIP_THREAD_STACKSIZE 1000
#define TCPIP_MBOX_SIZE 5
#define DEFAULT_UDP_RECVMBOX_SIZE 2000
#define DEFAULT_TCP_RECVMBOX_SIZE 2000
#define DEFAULT_ACCEPTMBOX_SIZE 2000
#define DEFAULT_THREAD_STACKSIZE 500
#define TCPIP_THREAD_PRIO (configMAX_PRIORITIES - 2)

#endif /* __LWIPOPTS_H__ */

alex2103, а можете привести свои настройки lwip для сравнения?
Go to the top of the page
 
+Quote Post
alex2103
сообщение Sep 23 2016, 07:51
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 7-03-07
Из: г. Запорожье
Пользователь №: 25 945



Получается PPP всегда падает после попытки TCP соединения?
Go to the top of the page
 
+Quote Post
Grigorij
сообщение Sep 26 2016, 09:23
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 10-03-07
Пользователь №: 26 038



Цитата(alex2103 @ Sep 23 2016, 11:51) *
Получается PPP всегда падает после попытки TCP соединения?

Похоже на то. После попытки установить TCP соединения я почему-то в какой-то момент попадаю в callback на установку PPP, т.е. вот сюда:
Код
...
pppDesc = pppOverSerialOpen(0, linkStatusCB, ctx);
...

static void linkStatusCB(void *ctx, int errCode, void *arg)
{
    struct ppp_addrs *addrs = arg;

    if (errCode == PPPERR_NONE)
    {
        DBG("PPP connection was established\n");
        DBG("ip_addr = %s\n",   ip_ntoa(&addrs->our_ipaddr) );
        DBG("netmask = %s\n",   ip_ntoa(&addrs->netmask)    );
        DBG("dns1    = %s\n",   ip_ntoa(&addrs->dns1)       );
        DBG("dns2    = %s\n\n", ip_ntoa(&addrs->dns2)       );

        isPPPConnected = 1;
    }
    else
    {
        // вот сюда попадаю в какой-то момент при попытке установить
        // TCP соединения

        DBG("PPP connection was lost\n");

        isPPPConnected = 0;
    }
}

Сейчас хочу посмотреть, какая именно ошибка (errCode) у меня появляется, а не просто отсутствие ошибки.

Сообщение отредактировал Grigorij - Sep 26 2016, 09:24
Go to the top of the page
 
+Quote Post
Grigorij
сообщение Oct 26 2016, 07:29
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 10-03-07
Пользователь №: 26 038



После почти месяца изучения LWIP проблема нашлась. Все дело оказалось в 1) некорректной настройке самой библиотеке 2) некорректной передачи данных в TCPIP Thread.
В конечном итоге данные на сервер благополучно ушли. Попутно выяснилось, что версия 2.0 библиотеки несколько более дружелюбна с точки зрения поднятия PPP Over Serial Line и TCP поверх него (скорее всего субъективное мнение, но на этой версии оказалось все проще и понятнее).

Однако осталась одна проблема - не могу получить DNS от оператора. Всегда имею следующие результаты (за исключением IP адреса).
Код
[017.190] network:    our_ipaddr  = 10.209.46.17
[017.200] network:    his_ipaddr  = 10.209.46.17
[017.210] network:    netmask     = 255.255.255.255
[017.220] network:    dns1        = 0.0.0.0
[017.230] network:    dns2        = 0.0.0.0

Хотя DNS и UPD разрешены.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 08:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01449 секунд с 7
ELECTRONIX ©2004-2016