안녕하십니까,
현재 버퍼 사이즈는 8KB로 설정되어 있습니다.
기본소스로 테스트한 결과 1472바이트까지 수신이 되고, 그 이후는 수신이 안되네요.
W5300_Drv_AVR_V1.2.2보면 디폴트로 8KB로 설정되어 있는 것으로 보이는데, 제가 잘못 이해하고 있는 부분이 있는지요?
이 부분 때문에 다음으로 넘어갈 수가 없네요… 조언 좀 부탁드립니다. ㅜㅜ
w5300.c 에서 sysinit함수는 디폴트로 아래와 같이 사용 중이며, main.c에서
uint8 rx_mem_conf[8] = {8,8,8,8,8,8,8,8}; // for setting RMSR regsiter
if(!sysinit(tx_mem_conf,rx_mem_conf))
{
* printf*("MEMORY CONFIG ERR.\r\n");
while(1);
}
위와 같이 8KB로 설정하도록 되어 있네요. 물론 iinchip_conf.h에서 MAX_SOCK_NUM은 8로 설정되어 있습니다.
uint8 sysinit(uint8* tx_size, uint8* rx_size)
{
uint16 i;
uint16 ssum=0,rsum=0;
uint mem_cfg = 0;
for(i=0; i < MAX_SOCK_NUM; i++)
{
if(tx_size[i] > 64)
{
#ifdef __DEF_IINCHIP_DBG__
*printf*("Illegal Channel(%d) TX Memory Size.\r\n",i);
#endif
return 0;
}
if(rx_size[i] > 64)
{
#ifdef __DEF_IINCHIP_DBG__
*printf*("Illegal Channel(%d) RX Memory Size.\r\n",i);
#endif
return 0;
}
ssum += (uint16)tx_size[i];
rsum += (uint16)rx_size[i];
TXMEM_SIZE[i] = ((uint32)tx_size[i]) << 10;
RXMEM_SIZE[i] = ((uint32)rx_size[i]) << 10;
}
if( (ssum % 8) || ((ssum + rsum) != 128) )
{
#ifdef __DEF_IINCHIP_DBG__
*printf*("Illegal Memory Allocation\r\n");
#endif
return 0;
}
IINCHIP_WRITE(TMSR0,tx_size[0]);
IINCHIP_WRITE(TMSR1,tx_size[1]);
IINCHIP_WRITE(TMSR2,tx_size[2]);
IINCHIP_WRITE(TMSR3,tx_size[3]);
IINCHIP_WRITE(TMSR4,tx_size[4]);
IINCHIP_WRITE(TMSR5,tx_size[5]);
IINCHIP_WRITE(TMSR6,tx_size[6]);
IINCHIP_WRITE(TMSR7,tx_size[7]);
IINCHIP_WRITE(RMSR0,rx_size[0]);
IINCHIP_WRITE(RMSR1,rx_size[1]);
IINCHIP_WRITE(RMSR2,rx_size[2]);
IINCHIP_WRITE(RMSR3,rx_size[3]);
IINCHIP_WRITE(RMSR4,rx_size[4]);
IINCHIP_WRITE(RMSR5,rx_size[5]);
IINCHIP_WRITE(RMSR6,rx_size[6]);
IINCHIP_WRITE(RMSR7,rx_size[7]);
for(i=0; i <ssum/8 ; i++)
{
mem_cfg <<= 1;
mem_cfg |= 1;
}
IINCHIP_WRITE(MTYPER,(uint8)(mem_cfg >> 8));
IINCHIP_WRITE(MTYPER1,(uint8)(mem_cfg & 0xff));
#ifdef __DEF_IINCHIP_DBG__
*printf*("Total TX Memory Size = %dKB\r\n",ssum);
*printf*("Total RX Memory Size = %dKB\r\n",rsum);
*printf*("Ch : TX SIZE : RECV SIZE\r\n");
*printf*("%02d : %07dKB : %07dKB \r\n", 0, IINCHIP_READ(TMSR0),IINCHIP_READ(RMSR0));
*printf*("%02d : %07dKB : %07dKB \r\n", 1, IINCHIP_READ(TMSR1),IINCHIP_READ(RMSR1));
*printf*("%02d : %07dKB : %07dKB \r\n", 2, IINCHIP_READ(TMSR2),IINCHIP_READ(RMSR2));
*printf*("%02d : %07dKB : %07dKB \r\n", 3, IINCHIP_READ(TMSR3),IINCHIP_READ(RMSR3));
*printf*("%02d : %07dKB : %07dKB \r\n", 4, IINCHIP_READ(TMSR4),IINCHIP_READ(RMSR4));
*printf*("%02d : %07dKB : %07dKB \r\n", 5, IINCHIP_READ(TMSR5),IINCHIP_READ(RMSR5));
*printf*("%02d : %07dKB : %07dKB \r\n", 6, IINCHIP_READ(TMSR6),IINCHIP_READ(RMSR6));
*printf*("%02d : %07dKB : %07dKB \r\n", 7, IINCHIP_READ(TMSR7),IINCHIP_READ(RMSR7));
*printf*("\r\nMTYPER=%02x%02x\r\n",IINCHIP_READ(MTYPER0),IINCHIP_READ(MTYPER1));
#endif
return 1;
}