Estou tentando conectar dois dispositivos juntos via ethernet, mas estou tendo problemas com as etapas necessárias. Os dispositivos são um PC e um microcontrolador. Ambos os dispositivos terão IPs estáticos, pelo menos o microcontrolador. Estou executando o LWIP no microcontrolador. O que estou preso são as etapas que preciso executar para que os dois dispositivos se comuniquem. Preciso que o microcontrolador faça uma transmissão ARP ou algo assim para que ambos os dispositivos possam se ver e se comunicar?
E: A negociação automática está habilitada no controlador
Já faz um tempo, mas usei um PIC de 8 bits com um controlador ethernet integrado. Não estou certo em qual etapa você está tendo problemas, configurando o LWIP ou a configuração de hardware ou ambos.
Você deve ser capaz de usar apenas soquetes TCP padrão em ambas as extremidades, mas precisará conectar os dois dispositivos a um hub ou switch ou precisará usar um cabo ethernet crossover se desejar conectar os dois dispositivos diretamente . Os controladores ethernet modernos podem ter a capacidade de crossover incorporada. Você terá que verificar o manual da placa de rede do seu computador e o controlador ethernet no MCU. A Ethernet básica, mais antiga, tem um par de fios de transmissão e um par de recepção. Portanto, você não pode conectar dois controladores diretamente com um cabo reto ou então conectará um par de transmissão a outro par de transmissão em vez de um par de recepção. Mas verifique com seus controladores, isso pode ser resolvido (e você pode transformar um cabo ethernet comum em um crossover, é fácil de fazer).
Não usei o LWIP, usei a pilha proprietária da Microchip, mas imagino que sejam um pouco semelhantes. Eu recomendaria certificar-se de ativar o ping no MCU, para que você possa facilmente usar o ping para verificar se possui conectividade adequada. A pilha do Microchip exigia que você chamasse continuamente uma função que lida com o processamento da pilha de rede. Imagino que o LWIP tenha algo semelhante, onde você terá que ter uma tarefa, um thread ou algum tipo de configuração multitarefa cooperativa no mcu que chama a função de processamento do LWIP. Portanto, você não pode simplesmente chamar send repetidamente no soquete, deve chamar a função de processamento de pilha, que é quando os bytes serão realmente enviados.