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

 
 
> LwIP + LPC2468 без OS, Помогите прикрутить.
virfis
сообщение Oct 28 2008, 07:25
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 17-10-05
Из: Краснодар
Пользователь №: 9 732



Я смог запустить uIP, работает всё, но почитал здесь пишут что LwIP побысрее будет. Скачал версию 1.3, взял для примера проект lwIPWeb (выкладывали ссылку в одной из тем). Прием TCP есть, а предачи нет. Подскажите где копать.
При установлении TCP соединения вызывается функция:
Код
err_t accept(void *arg, struct tcp_pcb *newpcb, err_t err)
{
    tcp_err(newpcb, err_callback);
    tcp_arg(newpcb, NULL);
    tcp_recv(newpcb, recv_callback);
    tcp_sent(newpcb, send_callback);
    tcp_poll(newpcb, poll_callback, 1);

    return ERR_OK;
}

Далее при получении пакета вызываеся:
Код
err_t recv_callback(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
{
char* rq;
  u32_t* newarg;

    if (p != NULL)
    {
        if ( p->len ) {
            newarg = (u32_t*) mem_malloc(sizeof(u32_t));
            *newarg = 5;    

            if (tcp_write(tpcb, &MyBuf[0], 5, 0) != ERR_OK)
            {
                mem_free(newarg);
                tcp_close(tpcb);                
            }
            else
            {
                tcp_arg(tpcb, newarg);
            }
        }
        tcp_recved(tpcb, p->len);
        pbuf_free(p);        
    }

    return ERR_OK;
Пробовал   sdf}

tcp_write возвращает ERR_OK, но на компе я не вижу ничего. Пинги идут. Опции lwipopts.h стандартные кроме того что я сам выставил
Код
#define SYS_LIGHTWEIGHT_PROT            0
#define NO_SYS                          1
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
virfis
сообщение Nov 5 2008, 07:09
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 17-10-05
Из: Краснодар
Пользователь №: 9 732



Прошу прощения что не отвечал. Интернет, да и вообще плата на работе.
Все это происходит на плате Olimex LPC-E2468. Я подозревал что проблема контрольной суммы не в LwIP, потому что уже сам калькулятором пересчитывал и просматривал исходящий пакет при отладке через Jtag. Аппаратно отключить не удалось в свойсвах сетевой карты. Опцию "Аппаратный контроль суммы"отключил, но все равно пишет что неверная сумма. Может надо перегрузить систему, не пробовал. Я отключил валидацию TCP в Wireshark.
Значит получается ситуация такая: Я попробовал соединиться с сервером на другом компе и сделать тот же обмен что и с контроллером. Вот что в логе снифера:
1 0.000000 192.168.0.7 192.168.0.11 TCP vpsipport > iec-104 [PSH, ACK] Seq=1 Ack=1 Win=65535 Len=6
2 0.027790 192.168.0.11 192.168.0.7 TCP iec-104 > vpsipport [PSH, ACK] Seq=1 Ack=7 Win=65529 Len=6
3 0.218945 192.168.0.7 192.168.0.11 TCP vpsipport > iec-104 [ACK] Seq=7 Ack=7 Win=65529 Len=0
И вроде все нормально.
Теперь лог с контроллером:
1 0.000000 192.168.0.7 192.168.0.250 TCP 2194 > iec-104 [PSH, ACK] Seq=1 Ack=1 Win=65535 Len=6
2 0.001688 192.168.0.250 192.168.0.7 TCP iec-104 > 2194 [PSH, ACK] Seq=1 Ack=7 Win=1500 Len=6
3 2.390097 192.168.0.250 192.168.0.7 TCP [TCP Retransmission] iec-104 > 2194 [PSH, ACK] Seq=1 Ack=7 Win=1500 Len=6
4 2.994343 192.168.0.7 192.168.0.250 TCP [TCP Retransmission] 2194 > iec-104 [PSH, ACK] Seq=1 Ack=1 Win=65535 Len=6
5 2.994923 192.168.0.250 192.168.0.7 TCP [TCP Dup ACK 3#1] iec-104 > 2194 [ACK] Seq=7 Ack=7 Win=1500 Len=0
6 7.389978 192.168.0.250 192.168.0.7 TCP [TCP Retransmission] iec-104 > 2194 [PSH, ACK] Seq=1 Ack=7 Win=1500 Len=6
7 8.889848 192.168.0.250 192.168.0.7 TCP iec-104 > 2194 [PSH, ACK] Seq=7 Ack=7 Win=1500 Len=6

Значит здесь так: 7-й адрес мой, 11-й другой комп, 250-контроллер.
Единственную разницу что вижу, это в ответе от контроллера window size не 65529, а 1500. И еще - в ответе от контроллера вместо нужных 6-ти байт нули. Вот такое вот дела у меня.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- virfis   LwIP + LPC2468 без OS   Oct 28 2008, 07:25
- - KRS   а tcp_tmr или tcp_slowtmr tcp_fasttmr вы вызываете...   Oct 28 2008, 13:17
|- - virfis   Цитата(KRS @ Oct 28 2008, 17:17) а tcp_tm...   Oct 28 2008, 13:45
- - lebiga   write только записывает в буфферы нужно еще заста...   Oct 29 2008, 10:35
- - virfis   tcp_output вызываеся потом из tcp_slowtmr и возвра...   Oct 30 2008, 08:06
|- - lebiga   Цитата(virfis @ Oct 30 2008, 11:06) tcp_o...   Nov 2 2008, 11:30
- - sergeeff   Чего-нибудь напахано с настройкой проекта под ARM....   Nov 2 2008, 11:55
|- - lebiga   Цитата(sergeeff @ Nov 2 2008, 14:55) Чего...   Nov 3 2008, 09:00
- - _dem   По поводу TCP checksum offload спросите у Гугля, э...   Nov 2 2008, 14:43
- - sergeeff   TCP checksum считает стек (LWIP, в данном случае),...   Nov 2 2008, 18:59
|- - _dem   Цитата(sergeeff @ Nov 2 2008, 22:59) TCP ...   Nov 3 2008, 08:47
|- - lebiga   Цитата(virfis @ Nov 5 2008, 10:09) Прошу ...   Nov 5 2008, 08:35
- - virfis   Интересное наблюдение. Изменил последний параметр ...   Nov 5 2008, 08:09
- - virfis   ЦитатаА это смотрели? как заведен сигнал CRS? Смо...   Nov 5 2008, 09:00


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

 


RSS Текстовая версия Сейчас: 14th August 2025 - 06:07
Рейтинг@Mail.ru


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