LusoRobótica - Robótica em Português

Electrónica => Electrónica Geral => Tópico iniciado por: msr em 11 de Junho de 2014, 17:48

Título: STM32F + lwIP
Enviado por: msr em 11 de Junho de 2014, 17:48
Olá,

Alguem daqui já trabalhou com STM32 + lwIP?
Vou precisar de por um STM32F107 + LAN8710A a functionar com a lwIP.
Se houvesse aqui alguem que tenha passado pelo mesmo ou por experiencia identica era giro trocar umas ideias.
Título: Re: STM32F + lwIP
Enviado por: StarRider em 12 de Junho de 2014, 01:10
Boas,

Alguns STM32F107 têm USB OTG FS com PHY interno, e existem STM32F2/F3/F4 com
USB HS/FS e PHY interno.

O recurso a um PHY USB externo (LAN8710A) não se justifica a não ser se for para USB HS
com o STM32F107, mas mesmo assim mais vale optar por um STM32F2/F3/F4.

As minhas implementações usam o stack da Keil (MDK-Pro) pelo que nunca usei o lwIP, de
qualquer forma o principio é o mesmo.

Abraços,
PA
Título: Re: STM32F + lwIP
Enviado por: msr em 12 de Junho de 2014, 01:41
StarRider, é para Ethernet e não USB. E nesse caso nenhum STM32F1/F2/F4 tem PHY incluida daí o chip externo.
A escolha do F107 é por ser o mais barato e por ser perfeitamente suficiente para o que pretendo fazer.

Entretando mandei vir uma placa destas: https://www.olimex.com/Products/ARM/ST/STM32-P107/ (https://www.olimex.com/Products/ARM/ST/STM32-P107/)
Existe alguma documentação na net sobre ports da lwIP para os STM32F, mas o que eu gostava era mesmo de uma board com isto a funcionar out-of-the-box (e com o LNA8710A), visto que estou com algumas limitações de tempo. Os exemplos da Olimex são para IAR e demasiado básicos (uIP).

Um outro requisito que tenho é o desenvolvimento ser feito com toolchain baseada do GCC ARM.
Título: Re: STM32F + lwIP
Enviado por: metRo_ em 12 de Junho de 2014, 10:55
Não usa o que pretendes mas se der para o que queres tens aí tudo pronto http://andybrown.me.uk/wk/2013/07/14/stm32plusnet/ (http://andybrown.me.uk/wk/2013/07/14/stm32plusnet/)
Título: Re: STM32F + lwIP
Enviado por: msr em 12 de Junho de 2014, 14:39
Obrigado pela sugestão. Ja tinha dado uma vista de olhos mas agora dei-lhe mais atenção.
Está ali bastante trabalho/conhecimento e parece-me bastante bem estruturado e completo. No entanto fui ver uns exemplos e os "new" e "deletes" causaram-me alguns arrepios. Parece que o autor usa C++ num STM32 sem grandes limitações e não gostei muito disso (memória dinâmica num MCU com poucos recursos). Mas se tiver tempo vou experimentar.
Título: Re: STM32F + lwIP
Enviado por: KammutierSpule em 12 de Junho de 2014, 15:29
Consideraste o uso de um IC da WIZnet ?
Título: Re: STM32F + lwIP
Enviado por: msr em 12 de Junho de 2014, 16:10
Sim, essa foi a primeira opção. Se a opção de ter a stack TCP/IP embebida no mesmo mcu que usar se complicar provavelmente volto a ela. Mas estou confiante que não seja necessário.
Título: Re: STM32F + lwIP
Enviado por: StarRider em 12 de Junho de 2014, 23:36
StarRider, é para Ethernet e não USB. E nesse caso nenhum STM32F1/F2/F4 tem PHY incluida daí o chip externo.

Estás absolutamente correcto ... troquei o LNA8710A por um PHY de USB   :-[  ... deve ser da
hora em que escrevi o post ... e das Super Bock ;)

Tenho um STM32F4 com o LNA8710A ... mas como disse com o stack da Keil (MDK-Pro),
deixa-me ir procurar esse projecto e já digo qualquer coisa.

Abraços,
PA
Título: Re: STM32F + lwIP
Enviado por: msr em 04 de Julho de 2014, 22:12
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fs4.postimg.org%2Ftfyqyojtp%2Fhabemushttp.png&hash=4437fa9f2b6a0b32d24a7f7f86b73ac337ca6eef)

Habemus TCP/IP + lwIP. E corre com o ChibiOS (http://www.chibios.org/dokuwiki/doku.php), que facilitou bastante a tarefa.
Quanto terminar a minha aplicação colocarei todo o código no github.
Título: Re: STM32F + lwIP
Enviado por: metRo_ em 05 de Julho de 2014, 22:52
boa :) ando a ver se arranjo tempo para o chibios, dizem ser melhor que o freertos
Título: Re: STM32F + lwIP
Enviado por: msr em 19 de Julho de 2014, 20:41
Ainda não está como gostaria...

O exemplo que dei no meu post anterior (servidor HTTP) tem um problema:
Assim que o programa arranca no STM32 o Firefox demora muito tempo a carregar a página e acaba por dar "timeout". Se fizer refresh aparece a página. Faço uns quantos refresh seguidos e tudo OK. No entanto, se esperar algum tempo (~10 segundos) e voltar a fazer refresh o firefox volta a conseguir nao se ligar ao servidor. Espero algum tempo, volto a fazer novas tentativas de ligação (refresh) e volto a ter a página.
Resumindo: dificuldade em ligar-se ao servidor, quando consegue ligação fica estável por algum tempo até voltar ao mesmo.

Alguns detalhes:
- percebo pouco de "redes" (IPs, netmasks, dhcp, arp, etc)
- print do ipconfig: http://s27.postimg.org/w1qrbwo6b/ethernet.png (http://s27.postimg.org/w1qrbwo6b/ethernet.png)
- exemplo anterior defini os seguintes IP:
IP Adress: 169.254.232.150
Netmask: 255.255.0.0
Gateway: 192.168.1.255

O google diz-me que IPs do tipo "169.254.x.x" significam que algo está mal. No entanto, se mudar para o os seguintes, deixo de todo de me conseguir ligar ao servidor:
IP Address: 192.168.1.82
Netmask: 255.255.255.0

Alguem tem alguma ideia do que poderá estar a correr mal?

   
Título: Re: STM32F + lwIP
Enviado por: metRo_ em 19 de Julho de 2014, 21:36
O que te posso aconcelhar é a instalares o wireshark e ver os pacotes que andam de um lado para o outro mas claro que sem se saber o que é suposto ser enviado pode não ajudar muito :s

Tu estas a ligar o stm32 ao pc? a um router/switch?
O "adaptador ethernet ligação de area local" é o que mesmo? é que a interface anterior "placa de rede..." parece ser a placa ethernet pela qual o PC está ligado a um router switch.
Título: Re: STM32F + lwIP
Enviado por: msr em 19 de Julho de 2014, 22:37
Tenho a placa ligada por ethernet ao meu desktop e o "adaptador ethernet ligação de area local" será então a placa de rede de ethernet que o meu desktop tem. É o que deduso. Não tenho acesso à internet por Ethernet mas sim por Wifi (não sei se isto é importante), e a "placa de rede..." que aparece antes deve corresponder ao módulo da Sitecom que uso. Esse sim, tem IPs decentes a começar por 192.168  (está ligado - sem fios - ao router/switch da MEO) mas se uso um IP nessa gama no STM32 não consigo de todo aceder ao server.

Tenho o Wireshark instalado. Usei isto numa cadeira ha uns anos (que acabei por nao concluir) e já só me lembro dos SYN/ACK do TCP.
Mas pondo-o a capturar o "adaptador ethernet ligação de area local" obtenho isto: http://we.tl/Rof4JNDmtD (http://we.tl/Rof4JNDmtD) (ficheiro .pcapng para abrir com o wireshark).
Resumindo:
A partir do momento que o browser consegue estabelecer a ligação, acontece tudo direitinho. O problema é que enquanto não se liga (podendo terminar em timeout, e após uns 10~20 segundos), não aparecem pacotes no wireshark. Fico sem saber o que se está a passar. Terá alguma coisa a ver com o IP ser do tipo 169.254.x.x?
Título: Re: STM32F + lwIP
Enviado por: msr em 19 de Julho de 2014, 23:38
Finalmente!
O problema estava mesmo no IP 169.254.x.x
Bastou definir um endereço estático para o meu "adaptador ethernet" do tipo 192.168.1.x e segundo isto: http://portforward.com/networking/static-win7.htm (http://portforward.com/networking/static-win7.htm)
E na placa uso também um IP desse tipo e agora sim não há problemas de ligação.

Obrigado pela ajuda metRo_



Título: Re: STM32F + lwIP
Enviado por: metRo_ em 20 de Julho de 2014, 03:21
Eu perguntei onde tinhas ligados os dispositivos pois eles têm que estar na mesma gama de ips, isto é, se tens um dispositivo com o ip 192.168.1.1 e o netmask 255.255.255.0, o outro dispositivo pode ser algo entre 192.168.1.2 e 192.168.1.255.

Nem tinha reparado que uma das ligações era sem fios e outra etherenet, pensei que eram as duas ethernet. A partir do momento em que o ip do teu pc é 192.168.1.64 o stm32 tem que ter um ip na mesma gama: 192.168.1.xxx tendo atenção para não interferir com mais nenhum ip da rede.
Título: Re: STM32F + lwIP
Enviado por: msr em 21 de Julho de 2014, 09:52
Nice, já aprendi mais umas coisas sobre redes :)
Eu pensava que só tinha de estar na mesma gama do adaptador a que está ligado, que neste caso tinha um IP do tipo 169.254.x.x. Mas tem que estar tudo com 192.168.1.x que é a gama de IPs que o router usa.

Agora tenho um outro problema. Isto funciona ligando à porta ethernet do meu desktop, mas se ligar directamente ao router não chega a fazer o link (LINK DOWN para sempre).
Ainda não tive tempo de averiguar o que poderá estar a falhar. Assim por alto, alguma ideia do que possa ser?
Já me falaram na possibilidade do router não ser capaz de fazer auto-switch (não faço ideia o que é isso) ou poder ser problema do cabo (que é o mesmo que usei no desktop, por isso não deveria haver problema certo?).
Título: Re: STM32F + lwIP
Enviado por: senso em 21 de Julho de 2014, 10:46
Auto-switch que eu conheço é fazer o cruzamento dos pares Rx/Tx automaticamente/em hardware em vez de teres de fazer tu um cabo com as pontas trocadas, mas isso é comum já faz anos e anos.