[W5300] 메모리 클리어 관련 문의드립니다.
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Share projects and connect with makers.
Joined before the site update? first.
New to WIZnet Makers?
We sent a verification link to your address. Open it to activate your account, then log in.
Accounts from this email provider are reviewed by an administrator after verification. Approval usually takes one business day.
Already have an account?
Enter your email address. If it belongs to an account, we'll send a link to set a new password. Members who joined before the site update use this to set their password.
If an account uses that address, we sent a link to set a new password. The link works once and expires in 30 minutes.
Know your password?
Need an account?
RE: [W5300] 메모리 클리어 관련 문의드립니다.
by bangbh ·
안녕하세요.
소켓을 Close후 다시 오픈하면 포인터만 초기화되며 버퍼 자체는 초기화되지 않습니다.
메모리만 클리어할 수 있는 방법은 없습니다.
다만 말씀하신 문제는 메모리 초기화 문제가 아닌 포인터 연산 오류로 보입니다.
정확하게 문제를 파악하기 위해
감사합니다.
RE: RE: [W5300] 메모리 클리어 관련 문의드립니다.
by josephsr WIZnet ·
통화상으로 확인된 내용 정리합니다.
감사합니다.
RE: RE: [W5300] 메모리 클리어 관련 문의드립니다.
by Member 11141 ·
답변 감사합니다.
말씀해주신 부분에 대한 답변 드리면
1. 현장에서 사용 중 발생한 문제라 와이어샤크로 분석하진 못했고, 현장에서 문제를 해결해야 했기에 소켓을 close/open하는 방식을 사용했습니다.
2,3 위즈네트에서 재공하는 공식 Library를 사용했고, 일부 수정하여 사용했습니다. 그래서 코드 공유드립니다.
uint32 sendto(SOCKET s, uint8 * buf, uint32 len, uint8 * addr, uint16 port)
{
uint8 status=0;
uint8 isr=0;
uint32 ret=0;
// #ifdef DEF_IINCHIP_DBG
//printff(“%d : sendto():%d.%d.%d.%d(%d), len=%d\r\n”);
// #endif
// #ifdef DEF_IINCHIP_DBG
//printff(“%d : Fail[%d.%d.%d.%d, %.d, %d]\r\n”);
// #endif
return 0;
}
}
그리고 추가질문있습니다.
이 부분에서 sendok가 안뜨고 while 문 안으로 들어갔을 때
socket이 close된다면 버퍼포인트가 초기화돼서 문제가 없겠지만 만약 timeout이 발생한다면 버퍼가 어떻게 처리되는지 궁금합니다. 이 부분에서 문제가 발생하는게 아닐까 짐작돼 질문드립니다.
RE: [W5300] 메모리 클리어 관련 문의드립니다.
by bangbh ·
안녕하세요. 다들 퇴근해서 ㅎㅎ
내일 검토해서 답변드리도록 하겠습니다.
저녁식사 맛있게 하세요.
감사합니다.
RE: [W5300] 메모리 클리어 관련 문의드립니다.
by josephsr WIZnet ·
첨부해 주신 코드 중에 if(s == 3) setSn_CR(s, Sn_CR_SEND);
라고 되어 있는 부분이 있는데 원본 코드에서는 setSn_CR(sn,Sn_CR_SEND); 호출한 다음에는 while(getSn_CR(sn)); 문으로 SEND 명령 결과가 clear 될 때까지 대기하는 부분이 있습니다.
첨부해주신 코드가 전체인지 부분인지 분간이 안되어 확실하지는 않지만 Sn_CR_SEND 요청 내린 다음에 getSn_CR(s) 문으로 SEND 명령 clear 대기하는 부분이 있는지 확인 부탁드립니다.