W5100 프로그램 소스 개발 문의 입니다.


#1

다름이 아니오라 기존에 사용하던 WIZ810MJ를 이용하여 신규 제품을 Design중입니다.
진행을 하는 과장에서 다소 난관에 부딪히는 부분이 있어서 이렇게 연락을 드립니다.

우선 WIZNET 사의 W5100 EVM API Code를 참고하여 프로그램 Coding 중입니다.

API의 web_server라는 Function 에서 붉은색 표기된 부분에 의해서 원활한 web page Control이 되질 않습니다.
이를 해결 할수 있는 방법이 어떤한 것이 있는지문의드립니다.

switch(getSn_SR(ch))
{
case SOCK_ESTABLISHED:
if(bchannel_start[ch]==1)
{
PRINTLN3("%d : Connected by %s(%u)",ch,inet_ntoa(GetDestAddr(ch)),GetDestPort(ch));
bchannel_start[ch] = 2;
}
if ((len = getSn_RX_RSR(ch)) > 0)
{
if ((u_int)len > MAX_URI_SIZE) len = MAX_URI_SIZE;
len = recv(ch, (u_char*)http_request, len);
(((u_char)http_request)+len) = 0;
proc_http(ch, (u_char*)http_request, len); // request is processed
[color=#FF0000] while(getSn_TX_FSR(ch)!= getIINCHIP_TxMAX(ch))
{
if(wait_send++ > 1500) break;
wait_1ms(1);
// wait_send를 over하여 while문의 빠져 나옴.
// wait_send를 60000 까지도 진행하였으나 동일한 현상임.
}[/color] disconnect(ch);
}
break;


#2

상기 코드는 http type에 대한 응답을 전송하고 그 응답이 실제로 상대방에게 정확히 전달되었는지 확인 하는 코드입니다.
정상적인 통신이 이루어 졌다면, 해당 부분에서 block될수는 없습니다.

우선 getSn_TX_FSR() 값과 getIINCHIP_TxMAX() 값을 확인하고,
같아 지지 않을 경우, 상대방이 수신을 하지 못하는 상황이기 때문에 패킷전송이 Timeout 이 발생하게 됩니다.

우선, 기본 code를 제대로 포팅하였다면, 통신상의 문제 일 가능성이 크지만, 한번더 socket API와 관련 부분들이 제대로 포팅되었는지 확인바랍니다. 또한 해당부분을 삭제하고 동작시킬때 제대로 동작하는지도 확인바랍니다.