WIZnet Developer Forum

W7500 socket buffer clear 문의

안녕하세요

W7500을 clinet로 서버 장치와 통신하는데에 사용하려고 합니다.

현재 서버가 W7500을 포함해 2개의 client와 연결을 하고 있는데

각 client의 요청에 대한 응답을 연결된 모든 client에 보내주는 것 같습니다.

그래서 W7500이 연결됨과 동시에 이상한 값들이 socket buffer에 채워지는 것 같구요 이에 따라 통신이 끊기는 현상이 발생합니다. HardFault가 발생하는 것 같습니다.
(초기에 소켓이 established 되고 바로 HardFault가 발생하는 듯 합니다. Sn_SR register로 확인했습니다.)

그래서 W7500에서 요청을 보내고 응답을 받는 사이에 socket buffer로 들어오는 의미없는 값들을 지우려고 하는데

W7500 manual이나 예제에서 buffer clear에 대한 내용이없어서요

현재 tcp_loop back 예제를 토대로 코딩작업을 하고 있습니다. 이 예제에서는 buffer clear에 대한 내용이 없는 것 같아서 여쭈어 봅니다.

일단 먼저 현상이 잘 이해가 되지않습니다.

TCP connection은 1:1연결 기반 통신입니다.
모든 client에게 응답하는게 말이 되지않습니다.
이상 현상이 발생하는 상황에서 패킷을 wire shark 프로그램으로 캡쳐하여 확인해보시기 바랍니다.

W7500의 socket buffer는 recv하면 포인터가 업데이트 되도록 되어있습니다.
socket 버퍼의 free size는 이미 읽은 메모리 주소의 끝지점과 읽기전 메모리 주소의 끝지점의 차이 값을 의미합니다. 따라서 revc를 하시면 읽은 메모리 주소의 끝지점이 읽기전 메모리 주소의 끝지점과 같아지며 freesize가 지정 버퍼사이즈로 늘어납니다. 이는 버퍼를 비운다는 의미와 같습니다.

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.