Перейти к содержанию
    

объясните последовательность действий, что и как нужно применять

tcp_connect(), tcp_arg, tcp_recv(), tcp_sent(), tcp_poll()

 

Нашел ОТЛИЧНЫЙ документ!

 

Small TCP/IP stacks for micro controllers

B_assignment_vanderPloeg.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у меня какие-то проблемы возникли при сборке с DHCP, линкер выдает кучу каких-то варнингов, типа вот таких вот:

 

*** WARNING L25: DATA TYPES DIFFERENT
    SYMBOL:  etharp_arp_input
    MODULE:  .\ethernetif.obj (ethernetif)
   DEFINED:  .\etharp.obj (etharp)

 

Всё правда нормально работает, но не приятно. Хотя с домашним роутером железка почему-то не может договорится (роутер просто не отвечает), но например с DHCP установленном на Win машине, всё работает замечательно.

 

Пока собирал, столкнулся с глюками компилятора по всей видимости, например:

 

В tcp_in.c:

 

seqno = tcphdr->seqno = ntohl(tcphdr->seqno);
ackno = tcphdr->ackno = ntohl(tcphdr->ackno);

 

Не работает, в seqno и ackno пишется хрень, если заменить на:

 

  tcphdr->seqno = ntohl(tcphdr->seqno);
  tcphdr->ackno = ntohl(tcphdr->ackno);
  seqno = tcphdr->seqno;
  ackno = tcphdr->ackno;

 

То всё Ok.

 

В dhcp.c:

 

  if (reply_msg->op != DHCP_BOOTREPLY) {
    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | 1, ("not a DHCP reply message, but type %"U16_F"\n", (u16_t)reply_msg->op));
    goto free_pbuf_and_return;
  }

 

Вообще не собирается, пишет какая-то там internal error...

 

Вот так, всё работает Ok:

 

  i=reply_msg->op;
  if (i != DHCP_BOOTREPLY) {
    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | 1, ("not a DHCP reply message, but type %"U16_F"\n", (u16_t)reply_msg->op));
    goto free_pbuf_and_return;
  }

 

Версия такая:

µVision3 V3.34

Tool Version Numbers:

C Compiler: CA.Exe V2.00f

Assembler: AA.Exe V2.00

Linker/Locator: LA.Exe V2.01e

:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотя с домашним роутером железка почему-то не может договорится (роутер просто не отвечает), но например с DHCP установленном на Win машине, всё работает замечательно.

А если выдернуть и вставить кабель на роутере - работает?

Или предварительно снести таблице arp (arp -d) ?

Пока собирал, столкнулся с глюками компилятора по всей видимости, например:

Я использую ИАР, 5.10 и к меня подобных ворнингов нет

В tcp_in.c:

seqno = tcphdr->seqno = ntohl(tcphdr->seqno);
ackno = tcphdr->ackno = ntohl(tcphdr->ackno);

 

Не работает, в seqno и ackno пишется хрень, если заменить на:

 

  tcphdr->seqno = ntohl(tcphdr->seqno);
  tcphdr->ackno = ntohl(tcphdr->ackno);
  seqno = tcphdr->seqno;
  ackno = tcphdr->ackno;

 

То всё Ok.

Скорее всего оптимизация компилятора, попробуй попереключать, в ИАРе у меня с подобными конструкциями все ок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если выдернуть и вставить кабель на роутере - работает?

Или предварительно снести таблице arp (arp -d) ?

 

А что её чистить, DHCP discover широковещательный, вообщем-то это здесь непричем, скорее всего запрос какой-то не такой...

 

Я использую ИАР, 5.10 и к меня подобных ворнингов нет

 

Скорее всего оптимизация компилятора, попробуй попереключать, в ИАРе у меня с подобными конструкциями все ок.

 

Собрал под последним RealView, теперь тоже все Ok, ни каких варнингов и глюков :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нашел сам, в yahoo tech group.

 

Собственно можно взять на домашней страница автора Адама Дункеля

 

http://www.dunkels.com/adam/

http://www.sics.se/~adam/

 

http://www.sics.se/~adam/software.html

http://www.sics.se/~adam/lwip/

http://www.sics.se/~adam/miniweb/

 

Ещё есть uIP:

http://www.sics.se/~adam/uip/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собственно...

Собственно:

http://www.google.com/search?client=opera&...-8&oe=utf-8

Это я к тому, что америку открывать не надо. И уж тем более рассовывать по всем темам дежурные ссылки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...да еще мертвые.

 

Почему же мёртвые? Все приведённые ссылки живые.

В своё время пришлось именно uIP использовать на железке, правда тогда это было ещё не на ARM, а на AVR ATmega128.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...