W5300 Socket connect 관련 문의

안녕하세요

FPGA를 이용하여 W5300과 interface하고 있습니다.

PC를 TCP 서버로 W5300을 Client로 사용하려고 합니다.

Ping test는 첨부와 같이 되어 연결이 잘 되었다고 생각합니다.

PC에서 포트 설정 후, listen을 수행하고 있을 때, FPGA 프로그램을 올렸습니다.

Socket0 state가 SOCK_SYNSENT 0x15가 되다가 Timeout이 됩니다.

Client 프로그램은
interrupt mask setting,
Source hardware address setting,
ip setting,
subnet, gateway setting,
Tx buffer size setting,
Rx buffer size setting,
socket0의 TCP protocol,
destination hardware address setting,
destination port,
destination ip setting 을 해주었습니다.
그리고 socket0 open을 하면 0x13 상태가 됩니다.
Socket0 connect를 하면 0x15 상태로 유지하다가 time out interrupt가 됩니다.
무슨 문제일까요? :cry:
답변 기다리겠습니다.

안녕하세요.

서버인 PC측으로 syn packet이 도달하지 않거나, PC에서syn을 받았고 ack 패킷을 보냈는데 W5300이 받지 못하거나 한 상황인것 같습니다.
wireshark같은 패킷캡쳐 프로그램을 이용하여 connection하는 과정에서 패킷이 정상적으로 주고 받는지 확인해 보면서 디버깅을 해 봐야 문제점을 파악할 수 있을 것 같네요.

안녕하세요?

위에 적은 것과 같이 초기 셋팅을 했는데, 저렇게 하면 문제는 없는지 알려주시면 감사하겠습니다.

네 문제없습니다.

다만 destination hardware address의 경우 PPPoE를 사용할 때만 필요하므로 따로 설정을 해줄 필요는 없습니다.

답변감사합니다.

지금 확인해본 결과, Destination port와 Destination IP가 설정이 안되는 것을 발견하였습니다.

Source port는 설정이 되어서 Read해도 출력이 되는데, Destination port를 5000으로 임의로 설정한다음

값을 불러오니 항상 0x0000 이 Read 되는 것이 확인되었고, Destination IP도 다른 값을 설정해 주어도 0x0000, 0x0000이 출력되는 것을 확인하였는데요,

이와 같은 문제는 어떻게 해결하나요?

W5300을 Server로 동작시키니 연결이 잘되었고 State도 Establish 되었습니다.

하지만, Client로 동작 시켰을때 잘 안되는 것은 의문으로 남네요…

왜 Destination buffer 가 재대로 동작이 안되었는지…

Destination port, IP의 경우 연결이 성립된 이후에 업데이트가 됩니다.
따라서 쓴 다음 바로 읽을 경우 0으로 읽힙니다.

client로 동작 시켰을때 연결이 안되는 것은 제가 말씀드린데로 디버깅을 해봐야 정확한 문제점을 파악 할 수 있을 겁니다.