[MCU]/CANTUS2011. 11. 20. 16:51

[CANTUS EX EVM] W5100 외부 메모리로 제어하기 - W5100 Direct Mode TCP전송 속도

[CANTUS EX EVM]  W5100 외부 메모리로 제어하기 - W5100 Direct Mode TCP전송 속도



[CANTUS-EX EVM] 보드의 W5200 CS는 nCS2(6008_0000h)에 할당되어 있다.




일단 간단히 W5100 제어 레지스터에 값을 읽고 쓰는 테스를 해 보자
 #define COMMON_BASE                              0x60080000
#define SHAR0                                                 (COMMON_BASE + 0x0009)


while(1)
{
        //W5100 MAC 레지스터에 값 쓰기
        *((vuint8*)(COMMON_BASE+SHAR0 )) = data;
        Delay(500);

        //MAC 레즈스터값 읽기
        temp =  *((vuint8*)(COMMON_BASE+SHAR0 ));
        DebugPrint("read=%x\r\n", tenp);
       Delay(500);
}



정상 동작한다.

W5100 TCP Server 루프백 테스트 예제를 포팅하여 테스트 해 보았다.

의외로 속도가 그리 빠르지 않다.
옵티마이즈나? 메모리 타이밍 설정이 필요 할것 같다.
[7] iInChip Send: 4.8839 Mbps(1193338 bytes, 1.8642 sec)
iInChip Recv: 4.0566 Mbps(1193338 bytes, 2.2443 sec)
------------------------------------------------------------
[8] iInChip Send: 4.3536 Mbps(1193338 bytes, 2.0913 sec)
iInChip Recv: 4.0821 Mbps(1193338 bytes, 2.2303 sec)
--------------------------------------------------------




한가지 문제가 발생했다.
데이터 전송을 잘 되는데... 수신이 문제가 있는것 같다.(송신이 이상한가?)
루프백 테스트시 read에서 invaild가 발생한다.

물론 한번에 100000Byte 이상 보내는것은 문제가 없이 송수신된다.

PC 소프트웨어 문제이가?
하드웨어적 이상인가?

패킷 캡쳐해본 결과 데이터 자체는 문제가 없는것 같다. 송수신 데이터는 같은데...
소프트웨어 문제 인가?

10kbye정도의 작은 데이터 전소 성공후 또 잘 된다.
메모리 엑세스 타이밍 조절으로 최대 6.2Mbps까지 출력은 되는데...
기대하던 속도는 아니다.(이정도면 SPI 방식보다 그리 빠르지 않은데... 뭔가 좀 이상하다.)




옵티마이즈와 메모리 엑세스 타이밍을 적절히 조절 후 최종 7MBps이상 나온다.
한가지 의심스러운것은 direct모드와 indirect 모드에서 속도차이가 별로 나지 않는다는 것인데... 그렇다면 어쩌면 속도는 더 나올지도 모르겠다.

[1] iInChip Send: 7.4276 Mbps(11983617 bytes, 12.3092 sec)
iInChip Recv: 7.4303 Mbps(11983617 bytes, 12.3048 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_EVM2011. 9. 9. 23:30

[W5200 EVM] TCP 전송 속도 테스트

[W5200 EVM] TCP 전송 속도 테스트


W5200을 이용하여 MCU별로 TCP/IP Loopback 전송 속도를 테스트 해 보았다.
MCU별 SPI최대 속도도 참고 할 수 있는 자료가 될것 같다.
TCP/IP 전송 속도 테스트 결과 참고 

PIC32
마이크로 칩사의 PIC32는 SPI최대 속도가 20Mhz임에도 불구 하고 4MBps정도 까지 출력된다. SPI로 데이터 읽고 쓰는데 상당히 빠른것 같다. 저렴하면서 성능이 좋아 가장 마음에 든다.




dsPIC33
SPI클럭 13Mhz 에서 최대로 나오며 2.4Mbps 정도 출력 된다.

[3] iInChip Send: 2.3772 Mbps(6596649 bytes, 21.1710 sec)
iInChip Recv: 2.4131 Mbps(6596649 bytes, 20.8568 sec)
------------------------------------------------------------
[4] iInChip Send: 2.3933 Mbps(6596649 bytes, 21.0288 sec)
iInChip Recv: 2.4132 Mbps(6596649 bytes, 20.8557 sec)
------------------------------------------------------------


STM32
최대 SPI클럭 18Mhz 인 [STM32 EVM]에서 전송 속도는 2.5Mbps정도 출력된다.





CANTUS
국산 32bit MCU코어인 CANTUS는 SPI 최대 클럭이 23Mhz이고 이때 전송 속도는 2.38Mbps가 출력 된다.
 ar

인다이렉트/다이렉트 모드로 테스트시

[1] iInChip Send: 7.4276 Mbps(11983617 bytes, 12.3092 sec)
iInChip Recv: 7.4303 Mbps(11983617 bytes, 12.3048 sec)
------------------------------------------------------------


[adStar]

108Mhz로 동작하는 adStar에서는 W5200에서 TPC송수신 속도가 3Mbps정도로 측정된다. 





LPC1LK
Cortex-M0코어의 저렴한 LPC1113의 SPI최대 속도가 12Mhz이고 W5200 TCP전송 속도는 1.5Mbps정도 나온다.
[1] iInChip Send: 1.5744 Mbps(3966014 bytes, 19.2184 sec)
iInChip Recv: 1.5546 Mbps(3966014 bytes, 19.4632 sec)
------------------------------------------------------------
[2] iInChip Send: 1.5687 Mbps(3966014 bytes, 19.2887 sec)
iInChip Recv: 1.5694 Mbps(3966014 bytes, 19.2800 sec)
------------------------------------------------------------


LM3S5732
TI의 Cortex-M3 LM3S5732의 12Mhz일 때 TCP 전송 속도는 1.79Mbps정도 된다. 
[1] iInChip Send: 1.7998 Mbps(3966014 bytes, 16.8116 sec)
iInChip Recv: 1.7996 Mbps(3966014 bytes, 16.8136 sec)
------------------------------------------------------------


DSP (TMS320F2808)
TMS320F2808의 SPI 최대 속도는 6.2Mhz 정도 이고 이때 TCP 전송 속도는 1.5831 Mbps 정도 나온다.


DSP(TMS320F28335)
TMS32F28335에서 SPI방식의 W5200을 이용하여 TCP Server 전송 속도 테스트 결과 SPI Clock 10MHz에서 대략 2.3Mbps정도 출력된다.


LPC1756 (Cortex-M3)
SPI클럭 24Mhz에서 2.8Mbps 정도 출력된다.

[31] iInChip Send: 2.8086 Mbps(348160 bytes, 0.9457 sec)
iInChip Recv: 2.5316 Mbps(348160 bytes, 1.0492 sec)
------------------------------------------------------------
[32] iInChip Send: 2.8575 Mbps(348160 bytes, 0.9296 sec)
iInChip Recv: 2.4732 Mbps(348160 bytes, 1.0740 sec)
-------------------------------------------------------


MSP430 (MSP430F5529)
메인 클럭을 32Mhz로 설정하고 SPI클럭을 16Mhz로 설정하여 테스트한 결과 2.2Mbps 정도의 전송 속도가 나온다.

-----------------------------------------------------------
[8] iInChip Send: 2.2657 Mbps(3880723 bytes, 13.0676 sec)
iInChip Recv: 2.1496 Mbps(3880723 bytes, 13.7736 sec)
------------------------------------------------------------
[9] iInChip Send: 2.1323 Mbps(3880723 bytes, 13.8855 sec)
iInChip Recv: 2.2160 Mbps(3880723 bytes, 13.3608 sec)
-------------------------------------------------------



Cortex-M4 STM32F4
SPI 최대 클럭 21Mhz에서 3.5Mbps 정도 나온다
------------------------------------------------------------
[7] iInChip Send: 3.5567 Mbps(5278574 bytes, 11.3230 sec)
iInChip Recv: 3.5074 Mbps(5278574 bytes, 11.4822 sec)
------------------------------------------------------------
[8] iInChip Send: 3.5647 Mbps(5278574 bytes, 11.2975 sec)
iInChip Recv: 3.3565 Mbps(5278574 bytes, 11.9982 sec)
--------------------------------------------------------


EFM32G210 - 저전력 Cortex-M3

EFM32를 이용하여 TCP/IP 전송율 테스트 결과 1.4Mbps 정도

Posted by nexp

댓글을 달아 주세요

  1. 캐럴리

    관리자의 승인을 기다리고 있는 댓글입니다

    2011.09.14 17:55 [ ADDR : EDIT/ DEL : REPLY ]
  2. december

    관리자의 승인을 기다리고 있는 댓글입니다

    2012.07.18 12:52 [ ADDR : EDIT/ DEL : REPLY ]

[INTERFACE]/WIZNET_EVM2011. 9. 9. 08:30

[W5200 EVM] 보드 제작

[W5200 EVM] 보드 제작


하드웨어 TCP/IP 스택을 지원하는 W5100의 신버전 W5200 테스트 보드를 제작했다. SPI방식만 지원해서 더 소형 으로 제작 가능하다. SPI 클럭속도가 훨씩 더 빨라지고 8개의 스택을 지원하므로 웹서와 같은 어플리케이션에 저렴하고 간단하게 적용할 수 있다. 




기존 W5100 EVM과 비교해서 크기가 더 작아지고



기존 보드와 핀맵을 동일하게 제작하여 확장보드에 연결 가능하다.



W5200, W5100 확장 테스트 보드 [NET-EVM]



[W5200 EVM] 핀맵 회로도



Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC322011. 9. 2. 22:00

[PIC32] W5200(W5100) TCP/IP Boopback 전송 속도 Test

[PIC32] W5200(W5100) TCP/IP Boopback 전송 속도 Test





마이크로 칩사의 PIC32는 SPI최대 속도가 20Mhz임에도 불구 하고 4MBps정도 까지 출력된다. SPI로 데이터 읽고 쓰는데 다른 MCU보다 상당히 빠른것 같다. 저렴하면서 성능이 좋아 가장 마음에 든다. (SPI 효율은 가장 뛰어난것 같다.)
TCP/IP 전송 속도 테스트 결과 참고 





PIC32 W5200 제어 HAL 드라이버 코드
#define _SPI0_ENABLE    1

//-----------------------------------------------------------------------------
// W5100 HAL
#define W5100_CS_PORT     LATG
#define W5100_CS_BIT     BIT9


#define W5100_RST_PORT     LATD
#define W5100_RST_BIT     BIT1

#define IINCHIP_RSToff()    Cbi(W5100_RST_PORT, W5100_RST_BIT) 
#define IINCHIP_RSTon()     Sbi(W5100_RST_PORT, W5100_RST_BIT)


#define W5100_IO_INIT()     Cbi(TRISG,  W5100_CS_BIT );Cbi(TRISD,  W5100_RST_BIT);

#define IINCHIP_CSoff()     Cbi(W5100_CS_PORT, W5100_CS_BIT)
#define IINCHIP_CSon()     Sbi(W5100_CS_PORT, W5100_CS_BIT)

#define IINCHIP_SPI_INIT()    SPI0_Init();IINCHIP_SpiSpeed()
#define IINCHIP_SpiSendData    SPI0_WriteReadByte
#define IINCHIP_SpiRecvData    SPI0_WriteReadByte
#define IINCHIP_SpiSpeed()              SPI0_SetSpeed(SPI_SPEED_MAX)
//-----------------------------------------------------------------------------


Posted by nexp

댓글을 달아 주세요