WIZwiki-W7500 보드에서 MACRAW 모드로 loopback 동작테스트 중입니다.
예제 소스(LoopbackTest)를 수정하여 MACRAW모드로 loopback 테스트를 하였고 wireshark로 이상없음을 확인하였습니다.
실제 적용할 구조는 다음과 같습니다.
dev_a (mii data) ----------------------> w7500 -------------------> dev_b (mii data)를 보내는 구조입니다.
(mii_rx_clk, rx_dv, rx_d0~d3) (mii_tx_clk, tx_en, tx_do~d3)
여기서 w7500보드에 붙어 있는 U3_IP101GA 를 들어내고, dev_a와 dev_b의 mii data를 연결 하였습니다.
dev_a의 mii rx 데이터는 recvfrom()에서 정상 확인하였습니다만, sendto()의 while(1){… getSn_IR(sn) …}에서 무한루프에 빠져 버립니다.
부팅후 데이터가 2번 정상 동작하다가 3번째에 증상이 나옵니다.
sendto를 빼고 recvfrom만 실행하면 계속해서 동작됨을 확인하였습니다.
해당 증상관련 하여 검토 부탁드리겠습니다. 소스는 첨부하였습니다.
int32_t sendto(uint8_t sn, uint8_t * buf, uint16_t len, uint8_t * addr, uint16_t port)
{
…
…
while(1)
{
tmp = getSn_IR(sn);
if(tmp & Sn_IR_SENDOK)
{
setSn_IR(sn, Sn_IR_SENDOK);
break;
}
//M:20131104
//else if(tmp & Sn_IR_TIMEOUT) return SOCKERR_TIMEOUT;
else if(tmp & Sn_IR_TIMEOUT)
{
setSn_IR(sn, Sn_IR_TIMEOUT);
return SOCKERR_TIMEOUT;
}
////////////
}
}
*참고로 dev_a의 mii데이터를 wireshark로 캡처하여 pc에서 확인하였음.
PC(colasoft packet player로 전송) <---------> WIZwiki-W7500 에서 loopback(macraw) 동작을 wireshark로 확인.
W7500x_Library_Examples_macraw.zip (1.85 MB)