А у меня какие-то проблемы возникли при сборке с 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