W5500 에 dhcp 를 올렸는데 send_DHCP_DISCOVER 가 응답이 없습니다

W5500 을 사용한 저희 개발보드에 dhcp 를 올렸는데 문제가 있어 문의합니다.

dhcp.c 의 dhcp_run 에서 첫단계인 send_DHCP_DISCOVER 를 보냈는데 공유기에서 응답이 없습니다.
w5500 init, udp socket open 등 정상으로 열리고, discover message 도 정상으로 생성됩니다.

그래서 동일한 환경에서 WIZNET 의 W5500_ebv 를 사용해 dhcp 를 실행하면
send_DHCP_DISCOVER 는 물론 ip 를 새로 할당받는 정상동작을 합니다.

W5500_ebv program 을 수정해 send_DHCP_DISCOVER messgae 를 까 보았습니다.
그랬더니 저희 개발보드의 message 와 동일합니다.
w5500 init, udp socket open 등 여러가지 사항을 면밀히 비교해도 두 Code 간에 차이가 없습니다.

사용한 저희 개발보드의 W5500 function 및 initialize routine 을 그대로 사용해서
다른 시험(udp, tcp, ping test)을 하면 정상 동작합니다.
그럿로 봐서 w5500 routine 들은 문제가 없는것 같습니다.

왜 udp (send_DHCP_DISCOVER) 가 안될까요?
몇일째 삽질하고 있는데 조언 부탁드립니다.

그리고 w5500-evb 보드의 SWD 에는 어떤 tool 을 사용하나요? (예, st-link or ulink2 등)
또 W7500-evb 의 SWD 에는 어떤 tool 을 사용하나요?

W5500-EVB의 경우 NXP사의 Flash magic이라는 ISP툴을 사용합니다.
아래사이트 참조
wizwiki.net/wiki/doku.php?id=pro … ew_program

WIZwiki-W7500의 경우 WIZnet에서 자체 제작한 ISP Tool과 KEIL에서 Debug가 가능한 Ulink2 그리고 CMSIS-DAP이 있습니다. CMSIS-DAP의 경우 KEIL에서 Debug가 가능하고 간단하게 bin 파일을 Drag & Drop 하는 방식으로 펌웨어 다운로드를 할 수 있습니다.
아래사이트 참조
wizwiki.net/wiki/doku.php?id=pro … e_firmware

먼저 Wire Shark로 패킷이 나가는지 여부를 확인하시는게 좋을 것 같습니다.

DHCP Discover 등 DHCP 패킷이 정상적으로 출력되는지 확인해보세요.

그리고 UDP/TCP/PING 다 되는데 DHCP만 되지 않는다면 정말 사소한 곳에서 실수가 있을 수 있습니다.

어차피 DHCP야 UDP 위에서 동작하는 프로토콜이니까요.

W5500 EVB용 디버거는 SWD를 지원하는 디버거 아무거나 쓰셔도 무방할 듯 싶습니다. SWD 자체가 표준이니까요.

W7500 EVB는 Wizwiki 7500을 이야기 하시는 건가요? Wizwiki-7500에는 CMSIS-DAP이 내장되어 있습니다.

따라서 별도의 디버거가 필요없습니다. 다른 툴을 사용하고 싶으시면 Wizwiki-7500 보드 내의 디버거 관련 점퍼를

모두 제거하신 후에 사용하시면 됩니다.

또 궁금하신 점이 있으면 언제든지 문의해주세요.

감사합니다. ^^

안녕하세요.

우선 W5500-EVB dhcp 어떤 코드를 참조하셨는지요?

github.com/Wiznet/W5500_EVB 여기 github링크로 따라가셔서 보시는 것과 같은 코드이신지요?

제가 Test를 해본 결과, 정상적으로 동작하였습니다.

말씀하신 것으로 유추해본 결과, 정상적으로 Socket 생성 및 메세지 작성도 되었다면 왜 Discover수신이 제대로 안되었을까요?

그리고 Client로 동작을 시도하려고 하시는 것 같은데, 맞나요? 문제는 DHCP Server 공유기 문제일 것으로 보입니다.

우선 dhcp server 측 공유기가 정상적으로 ip를 할당하는지 확인이 필요합니다.

client쪽에서 discover 메세지를 보냈다면, 분명 server에서 offer를 보낼텐데 오지 않았다면 말이죠.

감사합니다.
Edward

아 SWD 질문에 제가 착각하고 펌웨어 다운로드에 대한 Tool을 설명했네요 ㅠㅡㅠ 죄송합니다

bangbh님 말씀대로 SWD는 원하시는 것 사용하시면 됩니다. Ulink2 사용하셔두 되구요 WIZwiki-W7500의 경우에는 그냥 USB 연결만으로 CMSIS-DAP Debuger가 사용 가능합니다.

감사합니다.

dhcp client 가 드디어 성공했습니다.

조언을 주신대로 Wire Shark로 패킷을 분석해 추적해보니
discover message 가 전송되지 않았습니다.

수많은 삽질후 엉뚱한데서 이유를 알았는데,
UDP socket open 후 4초 후에 discover 등 후속 protocol 을 실행하면
dhcp lease 가 성공했습니다.

어찌된 일인지 4초 이상의 delay 주어야 합니다. ㅜ.ㅜ
W5500-EVB 는 delay 없이 바로 되더군요.
저희 개발보드에서도 다른 소켓들은(tcp 등)은 이런현상이 없었습니다.

저희 개발보드에 어떤 문제가 있는것인가요?

좋은 의견부탁합니다.

W5500_EVB 프로그램을 수정하셨다고 했는데 그 프로그램을 수정하지 않고 그대로 올리셔서도 4초가 나오나요?

그렇다면 보드에 어떤 문제가 있을 수도 있다고 생각합니다. 하지만 수정한 코드를 사용하셨다면 소스코드를 다시한번 확인해주세요.

대부분이 수정한 소스코드에서 문제가 발생합니다.

감사합니다. :slight_smile:

W5500_EVB 에서 원래코드 및 수정한 code 는 delay 없이 잘 나옵니다.

저희 가 개발한 w5500 응용 보드에서 delay 문제가 발생합니다.
그런데 이보드에서 tcp/udp/ping 등은 delay 없이 잘됨니다.

어떤이유에서 이러는걸까요?

어떤 종류의 MCU를 사용하고 계신지요?

같은 코드로 다른 Device에 동작시켰을 때 어떠한 다른 동작이 나오는 경우는 보통 H/W적인 Feature가 다를 수도 있구요.

SPI신호를 사용하실 때 buffer나 MUX같은 device를 사용해서 그만큼 Delay가 될 수도 있는 가능성이 있습니다.

제 생각이 틀렸을 경우도 있기 때문에 확인부탁드립니다.

감사합니다

CPU 는 STM32F207 이구요 120MHz 로 돌리고 있습니다.

문제의 dhcp client 와 정상 udp 는 같은 initialize routine (open)을 사용합니다.

혹 이럼 사례가 있나요?

안녕하세요.

답장이 늦어서 죄송합니다.

이런 사례는 저도 처음 접해봅니다만… 예측해보자면 MCU가 다르다는 점.

MDI신호들의 배치 간격이 멀어 Delay가 되고 있는 점이 아닌가 생각이 듭니다만…

정확한 사유는 정작 회로나 PCB 설계를 확인해보지 않고서야 모르겠네요…

안녕하세요. Wiznet의 Peter입니다.

오컴의 면도날이라는 말을 아시나요? 경제성의 원리를 이야기하는 것이지만 문제 해결 방식에 대한 이야기이기도 합니다.

양치기가 양 발자국을 발견했습니다. 양치기는 어떻게 생각할까요?

  1. 양을 훔치기 위해 늑대가 양의 가죽을 쓰고 돌아다니다 찍힌 발자국이다.
  2. 양의 발자국이다.

우습기도 하지만 당연히 2번이라고 생각하는 것이 의사결정에 있어 더 합리적이다라는 것이죠.

더 쉽게 표현하자면 Simple is Best라는 것입니다. ^^ 서론이 너무 길었네요. 죄송죄송.

telee5212님 말대로 프로그램이 다 똑같다면 문제는 하드웨어겠죠?

Link 나 ACT LED가 늦게 불이 들어오는지 확인 바랍니다. 그리고 Wire Shark도 packet을 100% 완벽하게 못 잡을 수도 있습니다.

일부 PC에서 그런 문제가 발생하는 것처럼 보이는데 저도 그 이유는 자세히 모르겠습니다.(그러니까 너무 믿지는 마세요. ^^;:wink:

그럼 수고하시고 문제 해결되었는지 가르쳐주시면 감사하겠습니다.