MAC_RAW Socket 모드 동작에 대하여 문의드립니다
MCU & Boards
No replies yet. Be the first to reply.
Join the discussion.
MCU & Boards
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: MAC_RAW Socket 모드 동작에 대하여 문의드립니다
by Edward ·
안녕하세요.
MAC_RAW모드는 직접 작성한 코드이신가요??
일단 MAC_RAW의 경우에는 직접 프로토콜을 구성하여 사용하신 것이기 때문에 정확한 답변을 드리려면 코드가 필요합니다.
또한, 보통 ethernet packet은 맨 앞에 packetlengh(패킷길이) + Packetdata 순으로 진행됩니다.
기본적으로 정상 통신할 경우, wireshark로 검출이 됩니다.
이 것이 만약 데이터가 올바르지 않다고 해도 검출 됩니다. 다만, 프로토콜이 이상할 경우, 캡쳐하지 못할 수 있습니다.
감사합니다.
RE: MAC_RAW Socket 모드 동작에 대하여 문의드립니다
by xenodigm ·
안녕하세요. 관리자님.
답변 감사합니다.
저희는 주고 받는 패킷은 Mac Raw Packet형태로 그대로 uart를 통하여 퀄컴PLC 칩으로 넘겨주므로,
별도 TCP/IP 나 UDP/IP를 구현하지 않습니다.
(쉽게 말씀드린다면 Mac Raw Packet을 그대로 전달하도록 구현하고 있습니다.)
이에 wiz750SR소스를 mac raw소켓을 받을 수 있도록 수정하며 테스트 중에 있습니다.
소스수정은 비교적 간단하게 수정할 수 있더군요.
(아래 소스 부분중 밑줄부분 참고하시기 바랍니다. 즉, 세군데만 고치면 테스트 가능합니다.)
(수정한 펌웨어 업로딩후 wiz750sr모듈로 ping을 보내면 mac raw소켓을 받아보도록 할 수 있습니다.)
테스트를 해보면 Wiznet구동후 첫번째 수신하는 패킷은 잘 받아오는 것을 확인하였습니다.
즉, PacketLength(2byte) + PacketData 형태로 S0_RX_RD(버퍼 포인터)와 S0RX_RSR(수신 데이터 length) Register가 잘 동작하는 것을 확인하였습니다.
그러나, 정상적인 패킷 수신직후 do_seg()루틴을 다시 거치게 되면 S0_RX_RSR의 값이 65534으로 비정상적인 값을 읽어오면서, S0소켓을 close 및 초기화하기 전까지 S0소켓은 더이상 동작하지 않습니다.
이에 소스도 같이 송부하오니 답변 부탁드리겠습니다.
다시한번 답변 부탁드리겠습니다.
감사합니다.
void proc_SEG_udp(uint8_t sock)
{
DevConfig *s2e = get_DevConfig_pointer();
struct __network_info *net = (struct __network_info *)get_DevConfig_pointer()->network_info;
struct __serial_info *serial = (struct __serial_info *)get_DevConfig_pointer()->serial_info;
}
void ether_to_uart(uint8_t sock)
{
struct __network_info *netinfo = (struct __network_info *)&(get_DevConfig_pointer()->network_info);
struct __serial_info *serial = (struct __serial_info *)get_DevConfig_pointer()->serial_info;
struct __options *option = (struct __options *)&(get_DevConfig_pointer()->options);
uint16_t len;
uint16_t i;
#ifdef USE_GPIO_HARDWARE_FLOWCONTROL
if(get_uart_cts_pin(SEG_DATA_UART) != UART_CTS_LOW) return;
#else
; // check the CTS reg
#endif
}
}
WIZ750SR.zip (3.67 MB)