본문 바로가기

[INTERFACE]/iMCU_W7100

[W7100 EVM] TCP/IP 테스트 (TCP 전송 속도 테스트)

[iMCU W7100 EVM] TCP/IP 테스트 (TCP 전송 속도 테스트)



W7100은 W5100코어가 포함되어 있기 때문에 기존 하드웨어 독립적으로 작성한 예제를 이용하면 수정없이 사용가능하다.
일단 이더넷 속도 테스를위해 루프백(수신 데이터를 그대로 전송) 테스트를 해 보았다.


TCP 서버 데이터 처리
ProcessTcpSever() 함수에서 TCP 시퀀스를 폴링으로 처리 한다.
소켓의 상태를 검사 하다 데이터가 수신되면 recv()함수로 수신된 바이트를 읽어오면 된다.
//TCP-Server 처리
void ProcessTcpSever(void)
{
 int len;      
 unsigned char data_buf[TX_RX_MAX_BUF_SIZE];
 unsigned int port = MY_LISTEN_PORT;
 
 switch (getSn_SR(SOCK_TCPS))
 {
 case SOCK_ESTABLISHED:
  //데이터 수신 검사
  if((len = getSn_RX_RSR(SOCK_TCPS)) > 0)   
  {
   //if Rx data size is lager than TX_RX_MAX_BUF_SIZE
   if (len > TX_RX_MAX_BUF_SIZE) len = TX_RX_MAX_BUF_SIZE;
  
   //데이터 수신
   len = recv(SOCK_TCPS, data_buf, len);  
  
   send the received data
   send(SOCK_MYTEST, data_buf, len);
   } 
  break;
 
 case SOCK_CLOSE_WAIT:                            
  //If the client request to close
  disconnect(SOCK_TCPS);
 
  m_SokStatus1 = 0;
  break;
 
 case SOCK_CLOSED:
  if(!m_SokStatus1)
  {
   m_SokStatus1 = 1;
  }
 
  //reinitialize the socket
  if(socket(SOCK_TCPS,Sn_MR_TCP, port,0x00) == 0)
  {
   DebugPrint("Fail to create socket.");
   m_SokStatus1 = 0;
  }
  else
  {
   listen(SOCK_TCPS);
  }
  break;
 }
}




테스트로 3.4M byte 이미지 데이터 연속적으로 전송하고 송수신 시간을 측정해 보았다.
5.4Mps가 나오다. 0.5초만에 이미지 전송이 가능하다. [AVR-Mega128  EVM 이더넷 전송 속도테스트] 와 비교해 보면 알수 있듯이 16Mhz AVR보다 빠른 전송 속도가 나온다. 요즘 AVR 가격이 많이 올라 소매가 9000원 정도 한다. MCU+W5100이 포함된 W7100이 소매가 6500원에 판매 되니 가격대 성능비로는 나쁘지 않은것 같다. (물론 단점도 만이 있지만...)
반응형