Подымаю выход в интернет по GPRS c применением внешнего стека(LWIP v1.3.0) на платформе AVR32 и применением freertos(v4.7.2).
Возникли следующие вопросы:
Что выводит vTaskList ?
первый параметр текущее состояние задачи.
второй приоритет.
третий-четвертый ?
Вопрос по реализации функции чтения данных из модема, на сколько корректно это будет под управлением freertos ?
1. В прерывании от USART (принят байт) - производится запись очередного байта в глобальный буфер.(без каких либо сервисов freertos)
2. В функции чтения данных полученных от модема - при обращении к буферу произвожу отключение всех прерываний, по завершении включаю прерывания.
или лучше сделать пересылку с применением сервиса freertos очеред ?
Freertos поднял, подключил стек LWIP, поднял PPP пробую поднять TCP соединение и не пойму что не так,
пытаюсь произвести подключение к удаленному серверу запускаю netconn_connect() - выхода из netconn_connect() не происходит
при этом нечего в USART не передается и не принимается из него ? В чем может быть проблема ?
На сколько могу судить система жива, тестовая задача мигания светодиодом продолжает работать.
лог соединения:
Код
ppp_con_fd=0
pppMain: unit 0: Connecting
pppStartCB: unit 0
ppp_set_xaccm[0]: outACCM=? ? ? ?
ppp_send_config[0]: outACCM=? ? ? ?
ppp_recv_config[0]: inACCM=? ? ? ?
lcp_lowerup: asyncmap=? ? ? ?
LCP: lowerup state 0 (LS_INITIAL) -> 2 (LS_CLOSED)
auth_reset: 0
lcp_addci: L opt=2 ?
lcp_addci: L opt=5 ?
lcp_addci: opt=7
lcp_addci: opt=8
pppWrite[0]: len=47
sio_write=47
fsm_sdata(LCP): Sent code 1,1,20.
LCP: sending Configure-Request, id 1
LCP: open state 2 (LS_CLOSED) -> 6 (LS_REQSENT)
sio_read paket 1 : 43 54 20 31 31 35 32 30 30 d a 7e ff 7d 23 c0 21 7d 21 7d 21 7d 20 7d 36 7d 21 7d 24 7d 25 dc 7d 22 7d 26 7d 20 7d 20 7d 20 7d 20 7d 27 7d 22 7d 28 7d 22 7d 23 7d 24 c0 23 26 b4 7e
pppInProc[0]: got 61 bytes
pppInput[0]: LCP len=22
fsm_input(LCP):1,1,22
fsm_rconfreq(LCP): Rcvd id 1 state=6 (LS_REQSENT)
lcp_reqci: rcvd MRU 1500 ASYNCMAP=? PCOMPRESSION ACCOMPRESSION PAP (?)
lcp_reqci: returning CONFACK.
pppWrite[0]: len=49
sio_write=49
fsm_sdata(LCP): Sent code 2,1,22.
sio_read paket 1 : 7e ff 7d 23 c0 21 7d 24 7d 21 7d 20 7d 2a 7d 25 7d 26 44 7d 30 7d 38 52 3a 30 7e
pppInProc[0]: got 27 bytes
pppInput[0]: LCP len=10
fsm_input(LCP):4,1,10
fsm_rconfnakrej(LCP): Rcvd id 1 state=8 (LS_ACKSENT)
lcp_rejci: long opt 5 rejected
lcp_addci: L opt=2 ?
lcp_addci: opt=7
lcp_addci: opt=8
pppWrite[0]: len=36
sio_write=36
fsm_sdata(LCP): Sent code 1,2,14.
LCP: sending Configure-Request, id 2
sio_read paket 1 : 7e ff 7d 23 c0 21 7d 22 7d 22 7d 20 7d 2e 7d 22 7d 26 7d 20 7d 20 7d 20 7d 20 7d 27 7d 22 7d 28 7d 22 b9 b9 7e
pppInProc[0]: got 37 bytes
pppInput[0]: LCP len=14
fsm_input(LCP):2,2,14
fsm_rconfack(LCP): Rcvd id 2 state=8 (LS_ACKSENT)
lcp_acki: Ack
ppp_send_config[0]: outACCM=? ? ? ?
ppp_recv_config[0]: inACCM=? ? ? ?
link_established: 0
upap_lowerup: 0 s=0
IPCP: lowerup state 0 (LS_INITIAL) -> 2 (LS_CLOSED)
upap_authwithpeer: 0 user=mts password=mts s=1
pppWrite[0]: len=19
sio_write=19
pap_sauth: Sent id 1
upap_timeout: 0 timeout 6 expired s=3
pppWrite[0]: len=20
sio_write=20
pap_sauth: Sent id 2
sio_read paket 1 : 7e c0 23 7d 22 7d 21 7d 20 7d 2d 7d 28 57 65 6c 63 6f 6d 65 21 4e bc 7e
pppInProc[0]: got 24 bytes
pppInput[0]: PAP len=13
pap_rauthack: Rcvd id 1 s=3
Remote message: Welcome!
auth_withpeer_success: 0 proto=?
pppWrite[0]: len=30
sio_write=30
fsm_sdata(IPCP): Sent code 1,1,22.
IPCP: sending Configure-Request, id 1
IPCP: open state 2 (LS_CLOSED) -> 6 (LS_REQSENT)
sio_read paket 1 : 7e 80 21 7d 21 7d 21 7d 20 7d 2a 7d 23 7d 26 c0 a8 6f 6f cd 49 7e 7e 80 21 7d 23 7d 21 7d 20 7d 36 7d 23 7d 26 7d 2a 7d 38 45 72 81 7d 26 d5 57 7d 20 7d 21 83 7d 26 d5 57 7d 21 7d 21 bd ac 7e
pppInProc[0]: got 64 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.168.111.111
ipcp_reqci: returning Configure-ACK
pppWrite[0]: len=17
sio_write=17
fsm_sdata(IPCP): Sent code 2,1,10.
pppInput[0]: IPCP len=22
fsm_input(IPCP):3,1,22
fsm_rconfnakrej(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
local IP address 10.24.69.114
primary DNS address 213.87.0.1
secondary DNS address 213.87.1.1
pppWrite[0]: len=29
sio_write=29
fsm_sdata(IPCP): Sent code 1,2,22.
IPCP: sending Configure-Request, id 2
sio_read paket 1 : 7e 80 21 7d 22 7d 22 7d 20 7d 36 7d 23 7d 26 7d 2a 7d 38 45 72 81 7d 26 d5 57 7d 20 7d 21 83 7d 26 d5 57 7d 21 7d 21 54 5c 7e
pppInProc[0]: got 42 bytes
pppInput[0]: IPCP len=22
fsm_input(IPCP):2,2,22
fsm_rconfack(IPCP): Rcvd id 2 state=8 (LS_ACKSENT)
np_up: 0 proto=?
np_up: maxconnect=0 idle_time_limit=0
ipcp: up
sifup: unit 0: linkStatusCB=8000476c errCode=0
vPPPStatusCB: error code = none
vPPPStatusCB: PPP link reported connection established.
local IP address 10.24.69.114
remote IP address 192.168.111.111
primary DNS address 213.87.0.1
secondary DNS address 213.87.1.1
Connect to Server <- выводится мною
upap_timeout: 0 timeout 6 expired s=4
pppMain: unit 0: Connecting
pppStartCB: unit 0
ppp_set_xaccm[0]: outACCM=? ? ? ?
ppp_send_config[0]: outACCM=? ? ? ?
ppp_recv_config[0]: inACCM=? ? ? ?
lcp_lowerup: asyncmap=? ? ? ?
LCP: lowerup state 0 (LS_INITIAL) -> 2 (LS_CLOSED)
auth_reset: 0
lcp_addci: L opt=2 ?
lcp_addci: L opt=5 ?
lcp_addci: opt=7
lcp_addci: opt=8
pppWrite[0]: len=47
sio_write=47
fsm_sdata(LCP): Sent code 1,1,20.
LCP: sending Configure-Request, id 1
LCP: open state 2 (LS_CLOSED) -> 6 (LS_REQSENT)
sio_read paket 1 : 43 54 20 31 31 35 32 30 30 d a 7e ff 7d 23 c0 21 7d 21 7d 21 7d 20 7d 36 7d 21 7d 24 7d 25 dc 7d 22 7d 26 7d 20 7d 20 7d 20 7d 20 7d 27 7d 22 7d 28 7d 22 7d 23 7d 24 c0 23 26 b4 7e
pppInProc[0]: got 61 bytes
pppInput[0]: LCP len=22
fsm_input(LCP):1,1,22
fsm_rconfreq(LCP): Rcvd id 1 state=6 (LS_REQSENT)
lcp_reqci: rcvd MRU 1500 ASYNCMAP=? PCOMPRESSION ACCOMPRESSION PAP (?)
lcp_reqci: returning CONFACK.
pppWrite[0]: len=49
sio_write=49
fsm_sdata(LCP): Sent code 2,1,22.
sio_read paket 1 : 7e ff 7d 23 c0 21 7d 24 7d 21 7d 20 7d 2a 7d 25 7d 26 44 7d 30 7d 38 52 3a 30 7e
pppInProc[0]: got 27 bytes
pppInput[0]: LCP len=10
fsm_input(LCP):4,1,10
fsm_rconfnakrej(LCP): Rcvd id 1 state=8 (LS_ACKSENT)
lcp_rejci: long opt 5 rejected
lcp_addci: L opt=2 ?
lcp_addci: opt=7
lcp_addci: opt=8
pppWrite[0]: len=36
sio_write=36
fsm_sdata(LCP): Sent code 1,2,14.
LCP: sending Configure-Request, id 2
sio_read paket 1 : 7e ff 7d 23 c0 21 7d 22 7d 22 7d 20 7d 2e 7d 22 7d 26 7d 20 7d 20 7d 20 7d 20 7d 27 7d 22 7d 28 7d 22 b9 b9 7e
pppInProc[0]: got 37 bytes
pppInput[0]: LCP len=14
fsm_input(LCP):2,2,14
fsm_rconfack(LCP): Rcvd id 2 state=8 (LS_ACKSENT)
lcp_acki: Ack
ppp_send_config[0]: outACCM=? ? ? ?
ppp_recv_config[0]: inACCM=? ? ? ?
link_established: 0
upap_lowerup: 0 s=0
IPCP: lowerup state 0 (LS_INITIAL) -> 2 (LS_CLOSED)
upap_authwithpeer: 0 user=mts password=mts s=1
pppWrite[0]: len=19
sio_write=19
pap_sauth: Sent id 1
upap_timeout: 0 timeout 6 expired s=3
pppWrite[0]: len=20
sio_write=20
pap_sauth: Sent id 2
sio_read paket 1 : 7e c0 23 7d 22 7d 21 7d 20 7d 2d 7d 28 57 65 6c 63 6f 6d 65 21 4e bc 7e
pppInProc[0]: got 24 bytes
pppInput[0]: PAP len=13
pap_rauthack: Rcvd id 1 s=3
Remote message: Welcome!
auth_withpeer_success: 0 proto=?
pppWrite[0]: len=30
sio_write=30
fsm_sdata(IPCP): Sent code 1,1,22.
IPCP: sending Configure-Request, id 1
IPCP: open state 2 (LS_CLOSED) -> 6 (LS_REQSENT)
sio_read paket 1 : 7e 80 21 7d 21 7d 21 7d 20 7d 2a 7d 23 7d 26 c0 a8 6f 6f cd 49 7e 7e 80 21 7d 23 7d 21 7d 20 7d 36 7d 23 7d 26 7d 2a 7d 38 45 72 81 7d 26 d5 57 7d 20 7d 21 83 7d 26 d5 57 7d 21 7d 21 bd ac 7e
pppInProc[0]: got 64 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.168.111.111
ipcp_reqci: returning Configure-ACK
pppWrite[0]: len=17
sio_write=17
fsm_sdata(IPCP): Sent code 2,1,10.
pppInput[0]: IPCP len=22
fsm_input(IPCP):3,1,22
fsm_rconfnakrej(IPCP): Rcvd id 1 state=8 (LS_ACKSENT)
local IP address 10.24.69.114
primary DNS address 213.87.0.1
secondary DNS address 213.87.1.1
pppWrite[0]: len=29
sio_write=29
fsm_sdata(IPCP): Sent code 1,2,22.
IPCP: sending Configure-Request, id 2
sio_read paket 1 : 7e 80 21 7d 22 7d 22 7d 20 7d 36 7d 23 7d 26 7d 2a 7d 38 45 72 81 7d 26 d5 57 7d 20 7d 21 83 7d 26 d5 57 7d 21 7d 21 54 5c 7e
pppInProc[0]: got 42 bytes
pppInput[0]: IPCP len=22
fsm_input(IPCP):2,2,22
fsm_rconfack(IPCP): Rcvd id 2 state=8 (LS_ACKSENT)
np_up: 0 proto=?
np_up: maxconnect=0 idle_time_limit=0
ipcp: up
sifup: unit 0: linkStatusCB=8000476c errCode=0
vPPPStatusCB: error code = none
vPPPStatusCB: PPP link reported connection established.
local IP address 10.24.69.114
remote IP address 192.168.111.111
primary DNS address 213.87.0.1
secondary DNS address 213.87.1.1
Connect to Server <- выводится мною
upap_timeout: 0 timeout 6 expired s=4
Исходник задачи:
Код
static void vTaskPPPStart( void *pvParameters )
{
lwip_init();
tcpip_init(NULL, NULL);
vTaskDelay(20);
pppInit();
pppSetAuth(PPPAUTHTYPE_NONE, "mts", "mts");
for(;; )
{
.....инин модема.....
ppp_link = 0;
ppp_con_fd = pppOverSerialOpen( sioModem, vPPPStatusCB, NULL );
APPIP_TRACE( ( "vAppIP(STATE_PPP_INIT): opening ppp connection\r\n") );
printf("ppp_con_fd=%x\n",ppp_con_fd);
while(ppp_link == 0) vTaskDelay(100);
if (ppp_link == 1){
conn = netconn_new(NETCONN_TCP);
if (conn == NULL)
printf("ERROR conn = netconn_new(NETCONN_TCP)\n");
addr.addr = inet_addr("тут внешний IP");
printf("Connect to Server\n");
error = netconn_connect(conn, &addr, 10000); <- от сюда так и не выходит
printf("netconn_connect result=%d\n",error);
...................
netconn_close(conn);
err = pppClose( ppp_con_fd );
printf("\npppClose result=%d\n",err);
}
for(;;)
vTaskDelay( 200 );
}
}
{
lwip_init();
tcpip_init(NULL, NULL);
vTaskDelay(20);
pppInit();
pppSetAuth(PPPAUTHTYPE_NONE, "mts", "mts");
for(;; )
{
.....инин модема.....
ppp_link = 0;
ppp_con_fd = pppOverSerialOpen( sioModem, vPPPStatusCB, NULL );
APPIP_TRACE( ( "vAppIP(STATE_PPP_INIT): opening ppp connection\r\n") );
printf("ppp_con_fd=%x\n",ppp_con_fd);
while(ppp_link == 0) vTaskDelay(100);
if (ppp_link == 1){
conn = netconn_new(NETCONN_TCP);
if (conn == NULL)
printf("ERROR conn = netconn_new(NETCONN_TCP)\n");
addr.addr = inet_addr("тут внешний IP");
printf("Connect to Server\n");
error = netconn_connect(conn, &addr, 10000); <- от сюда так и не выходит
printf("netconn_connect result=%d\n",error);
...................
netconn_close(conn);
err = pppClose( ppp_con_fd );
printf("\npppClose result=%d\n",err);
}
for(;;)
vTaskDelay( 200 );
}
}