W5500 접속 해제 및 전송 관련 문의
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Share projects and connect with makers.
Joined before the site update? first.
New to WIZnet Makers?
We sent a verification link to your address. Open it to activate your account, then log in.
Accounts from this email provider are reviewed by an administrator after verification. Approval usually takes one business day.
Already have an account?
Enter your email address. If it belongs to an account, we'll send a link to set a new password. Members who joined before the site update use this to set their password.
If an account uses that address, we sent a link to set a new password. The link works once and expires in 30 minutes.
Know your password?
Need an account?
RE: W5500 접속 해제 및 전송 관련 문의
by lawrence WIZnet ·
안녕하세요
답변이 늦어져서 죄송합니다.
일단 요청하신 사항을 검토해봤을 때, 이유가 될 수 있는 가능성이 몇가지 있습니다.
첫번째 문의해주신 send 커맨드뒤에 전송중상태로 계속 hold 되어 있다고 말씀하셨는데,
혹시, TCP 소켓을 하나만 사용하고 계신가요? 아니면 다른 채널도 같이 사용하시나요?
여러 채널을 사용하고 계시다면 채널마다의 커맨드가 수행되는 과정에서 socket 내부버퍼가 가득찬경우에는 interrupt를 발생시키지 않고 기다리고 있습니다. (내부 버퍼가 준비가 될때까지 채널들은 기다리게 됩니다)
그래서 hold되는 현상이 생길 수 있습니다.
그리고 또 하나는 간혹가다 고속 mcu중에서 원래 동작하는 코드인데 잘 안되는 경우도 생기더라구요
그런경우에는 기존 io library는 다음 send 커맨드가 들어오면 이전 send에 대한 send ok 를 보고 send가 수행되도록 되어있는데,
그러지 말고 send 커맨드 뒤에 바로 socket에서 send ok가 뜨는지를 기다리는 것이 확실합니다. 대신 그동안에 새로운 send명령을 줄 수 없어서 조금 느려질 수는 있지만, 이 방법이 가장 확실하게 회피할 수 있다고 봅니다.
두번째 증상에 관해서는 제가 패킷을 자세히 확인할 수 없어서 예상한 시나리오만 설명을 드리자면
두가지 경우가 있습니다.
하나는 이미 socket이 close상태로 가버렸기 때문에 rst 패킷이 나갈 수 있다고 봅니다. 이 부분은 rst 패킷이 나가는 시점에서 소켓 상태를 체크하시면 알 수 있을 겁니다.
두번째는 네트워크망에서 IP충돌등에 의해서 같은 IP가 5500에 접속한 경우 혹은 패킷을 보낸경우에 5500은 rst패킷을 보내도록 되어 있습니다.
만약 현재 rst패킷의 목적지 mac주소가 현재 통신하는 pc의 mac주소가 아니라면 두번째인 경우가 확실합니다.
위의 경우를 한번더 고려해보시고 잘 안되시는 부분이 있으면 또 문의해주세요
감사합니다.