TX memory 설정이 잘못되었습니다. 데이타시트 보시면 아시겠지만,
TX memory의 총합과 RX memory의 총합은 각각 최대 64KB 를 초과할수 없습니다. 64KB 이하로 설정하셔야 합니다.
따라서, 상기와같이 설정할 경우 0번은 정상 전송하나, 1번과 2번 채널은 데이타를 정상적으로 전송할 수 없습니다.
[quote]1. 혹시 소켓의 포트가 같으면 사용이 불가능한건가요?
[/quote]
여기서 소켓포트는 Sn_PORTR를 말씀하시는 것인가요 아님 Sn_DPORTR를 말씀하시는 것인가요?
TCP Server를 작성할 경우 Sn_PORTR을 같은 값을 가질수 있습니다. 같은 포트 수 만큼 상대방이 동시에 접속할 수 있습니다.
반대로 TCP Client (아래 코드처럼)를 작성할 경우 Sn_PORTR은 서로 다른 값을 가져야 합니다. 물론 같은 서버에 접속할 경우 Sn_DPORTR는 같은 값을 가져야 합니다.
[quote]2. 데이터 전송 시 소켓의 크기와 동일한 크기의 데이터를 설정해야 하나요?
[/quote]
상관없습니다.
[quote]3. 데이터 일부가 전송되지 않는 원인이 버퍼를 리셋해주지 않아서 그런건가 의심되는데 확인할수 있는 방법이 있나요?
위 3.번이 원인이라면 버퍼를 리셋하는 방법이 있나요?[/quote]
데이타일부가 빠지는 것은 Buffer와 상관이 없습니다. 그리고 W5300은 Buffer flushing을 지원하지 않습니다.
[quote]소켓의 크기를 50Kbyte( 51200byte)로 설정하고 50000byte 크기의 데이터를 전송시키는 테스트를 해보았습니다.
그 결과 데이터 일부가 안나오는 현상을 확인하였습니다.
예로 0~25000이라는 숫자를 전송하는경우 0~12500, 12700~25000 이런 식으로 중간의 데이터를 건너 뛰고 전송이 됩니다.
그런데 데이터의 크기를 소켓의 크기와 동일하게 51200byte로 한 후 데이터를 전송한 경우에는
문제 없이 전송이 잘되는 것을 확인 하였습니다.
[/quote]
이부분은 저도 처음보는 증상인것 같습니다. 좀더 정확한 분석이 필요할 것 같습니다.
50000byte를 한번에 Copy하여 Send command를 처리하는지 궁금합니다. 그리고 매번 할때 마다 동일한 증상이 나타나는지도 궁금하네요.