[ST_MICRO]/STM32F43x2014. 9. 7. 22:11

STM32F429 - W5300 을 이용한 TCP/IP 전송 속도 테스트

STM32F429 - W5300 을 이용한 TCP/IP 전송 속도 테스트



STM32F429 는 최대 180Mhz로 구동된다. W5300을 이용하여 TCP/IP 전송 속도 테스트 결과 37Mbps 정도로 측정된다.




STM32F429 W5300 드라이버 코드

//-----------------------------------------------------------------------------

#define W5300_BANK_ADDR                 ((uint32_t)0x64000000)

#define W5300_DATA_ADDR                 (*(uint16_t *) (W5300_BANK_ADDR))

                                        

#define _W5300_DATA(p)                    (*(__IO uint16_t*) (W5300_BANK_ADDR + (p<<1)))


#define W5300_RST_PORT GPIOA

#define W5300_RST_BIT BIT9


#define IINCHIP_RSToff() cbi(W5300_RST_PORT, W5300_RST_BIT)

#define IINCHIP_RSTon() sbi(W5300_RST_PORT, W5300_RST_BIT)



#define W5300_IO_INIT()

//-----------------------------------------------------------------------------




Posted by nexp

댓글을 달아 주세요

[DSP]/DSP283462014. 1. 11. 22:30

[TMS320C28346] W5300을 이용한 TCP/IP 전송속도 테스트

[TMS320C28346] W5300을 이용한 TCP/IP 전송속도 테스트



TMS320C28346 은 C28코어로 (C2834x) Delfino시리즈중 가장 성능이 좋은 MCU이다. 최대 300Mhz로 동작하고 512KB RAM의 풍부한 리소스를 가지고 있다. 
코어 자체가 C28 이므로 F28335와 코드는 거의 호환이된다.

TMS320F28335코드에서 약간의 수정만 해 주면 기존 TCP/IP코드가 동작한다.
init_zone() 함수에서 XTIMCK 를 1로 설정하니 정상 동작한다.
XintfRegs.XINTCNF2.bit.XTIMCLK = 1;
 
 
옵티마이즈 레벨3으로 설정시 32Mbsp 정도로 구동된다.






TMC320C28346을 이용하여 W5300에서 TCP/IP 전송 속도 테스트 결과 32MBps정도 측정된다.

 

[1] iInChip Send: 32.8414 Mbps(62999139 bytes, 14.6353 sec)
iInChip Recv: 33.1076 Mbps(62999139 bytes, 14.5177 sec)
------------------------------------------------------------
[2] iInChip Send: 32.4111 Mbps(62999139 bytes, 14.8297 sec)
iInChip Recv: 32.6400 Mbps(62999139 bytes, 14.7257 sec)


Posted by nexp

댓글을 달아 주세요

[DSP]/DSP283352011. 11. 13. 23:30

[DSP28335 EVM] Hardware TCP/IP W5300 TCP전송 테스트 - TMS320F28335 [EXP-ALL EVM]

[DSP28335 EVM] Hardware TCP/IP W5300 TCP전송 테스트 - TMS320F28335 [EXP-ALL EVM]



[EXP-ALL EVM] 보드에는 wiznet사의 고속 Hardwired TCP/IP  W5300모듈을 연결할 수 있다.
TMS320F28335 외부 메모리 인터페이스로 제어 하면 고속의 이더넷 데이터를 전송할 수 있기 때문에 여러가지 실험해 볼것이 많을것 같다.
(좀더 자세한 내용은 TM320F28335 W5300포팅 참고)

[EXP-ALL EVM] 의 W5300모듈 연결 회로도
TMS320F28335는 16비트 모드를 지원하기 때문에 R49, R1을 제거한다. W5300의 CS는 TMS320F28335 의 CS0에 연결한다.





TMS320F28335를 이용하여 W5300 TCP 서버 루푸백 전송 속도 테스트 결과
대략 28Mbps 정도 출력된다.  55Mbyte 동영상 전송시 15초 정도 걸린다.
저렴하고 OS없는 임베디드 보드에서 간단한 코드로 TCP전송 속도가 이정도 이면.. 상당히 빠르다. (참고로 ARM9 2410으로 테스트시 45Mbps정도 나온다) .
물론 비교 대상은 아니지만 ATmega128(8Mhz) 에서 W5300 속도 테스트 결과(2.6Mbps)와 비교해 보면 아주 많은 차이가 난다.







TCP Server 처리 함수
Wiznet칩 제어를 위한 함수를 통합했다. 앞으로 손을 좀더 봐야 겠지만 이 코드로 수정 해 나갈 예정인다.
//-----------------------------------------------------------------------------
//TCP Server 처리함수
void ProcessTCPS(SOCKET s, unsigned int port)
{
 unsigned long len;
 unsigned int mode = 0;

 //TCP SOCKET status
 switch(getSn_SSR(s))               
 {     
  //초기에
  case SOCK_INIT:
   //접속대기
   temp = listen(s);
   if(!gTcpStatus)DebugPrint("%d : LOOPBACK_TCPS(%d) Started.\r\n",s,temp);
   gTcpStatus = 1;
   break; 
  
  // Socket CLOSED일 경우
  case SOCK_CLOSED:
   
   //닫고
   _close(s);  //C2000에서 close() 함수는 예약되어 있어서 함수명 변경했다.
  
   //새롭게 Open
   DebugPrint("TCP Server Opne.\r\n");
   socket(s,Sn_MR_TCP,port,mode);
   gTcpStatus = 0;
   break;
   
  //ESTABLISH?
  case SOCK_ESTABLISHED:          
   //수신된 데이터가 있으면
   if((len=getSn_RX_RSR(s)) > 0)
   {
    //수신하고
    len = recv(s,data_buf,len);

    //재전송(루프백 테스트)
    send(s, data_buf, len);
   }
   break;

  // PASSIVE CLOSED
  case SOCK_CLOSE_WAIT:              
    disconnect(s);
    break; 
  
  default:
   break;
 }
}
//-----------------------------------------------------------------------------



W5300초기화 함수
//WIZENT Chip 초기화함수
void IINCHIP_NetInit(void)
{
 uint8 tx_mem_conf[8] = {8,8,8,8,8,8,8,8};          // for setting TMSR regsiter
 uint8 rx_mem_conf[8] = {8,8,8,8,8,8,8,8};          // for setting RMSR regsiter

 unsigned char addr[6] = MY_NET_MAC;

 //initiate W5300
 iinchip_init(); 

 /* allocate internal TX/RX Memory of W5300 */
 if(!sysinit(tx_mem_conf,rx_mem_conf))          
 {
  DebugPrint("MEMORY CONFIG ERR.\r\n");
  while(1);
 }

 // If Little-endian, set MR_FS.
    setMR(getMR() | MR_FS|BIT10|BIT11|BIT12);
 Delay(100);

 //set MAC
 IINCHIP_SET_MAC(addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]); 

 //set subnet
    MY_SUBNET_SET();
 IINCHIP_SET_SUB(addr[0], addr[1], addr[2], addr[3]);
 
 //set Gateway
    MY_GWIP_SET(); 
 IINCHIP_SET_GAR(addr[0], addr[1], addr[2], addr[3]);
 
 //set IP
    MY_IP_SET();
 IINCHIP_SET_IP(addr[0], addr[1], addr[2], addr[3]); 
}



TMS320F28335 W5300 TCP Server 테스트 예제코드
void main(void)
{
 short data = 0;
 unsigned int flag = 0;

 //DSP System Initialize
 SystemInit();

 Led1Init();
 Led1On();

 DebugInit(BAUD_115200);
 DebugPrint("W5300 Test\r\n");

 //TMS320F28335 외부 메모리 초기화
 init_zone();  

 //W5300 초기화
 IINCHIP_NetInit();
 DisplayConfig();

 while(1)
 {
  //TCP 서버 루프백 처리함수
  ProcessTCPS(SOCK_TCPS, MY_LISTEN_PORT); 
 }
}  


Posted by nexp

댓글을 달아 주세요

[INTERFACE]/WIZNET_EVM2008. 11. 14. 02:42

[W5300] TCP 전송 속도 테스트 결과

[W5300] TCP 전송 속도 테스트 결과

W5300을 이용하여 TCP/IP 루프백 전송 속도 테스트 결과를 정리해 보았다.
(MCU별로 기존에 테스트 했던 자료가 없어져 찾고 있는데... 왠만하면 웹으로 정리 해둘 필요가 있는것 같다.)




ATmega128 W5300 모듈 속도 테스트

8Mhz 8bit 다이렉트 모드로 W5300 속도 테스트 시


------------------------------------------------------------

->옵티마이즈 옵션 설정 수정후 2.6Mbps 나옴

[1] iInChip Send: 2.6742 Mbps(1007370 bytes, 2.8740 sec)
iInChip Recv: 2.6547 Mbps(1007370 bytes, 2.8951 sec)
------------------------------------------------------------





TMS320F28335를 이용하여 W5300 TCP 서버 루푸백 전송 속도 테스트 결과
대략 28Mbps 정도 출력된다.
  55Mbyte 동영상 전송시 15초 정도 걸린다.




Posted by nexp

댓글을 달아 주세요