도와주세요!!
이지부트에서 이더넷은 인터럽트를 사용하지 않습니다.
패켓을 받기위해 루프를 도는데 루프를 도는 속도가 느릴경우 놓칠수 있습니다.
브로크패켓들도 모두 수신되기 때문에 네트웍 라인에 트래픽이 많으면 최악입니다.
1 대 1로 연결해서 테스트해보세요
인터럽트를 사용하지 않는 이유는 프로그램을 간단하게 하기 위해서 입니다.
인터럽트를 사용하면 구현해야할 것들이 많고 디버깅도 어렵습니다.
ping 이 동작되지 않는건 원인은 너무 많군요
이전의 내용을 보면 RX가 되지 않는것 같은데... 타켓보드의 MAC 주소를 확인해 보세요
맥주소를 칩에 넣었는지 확인...
말씀해주신 MAC주소는 칩에 들어 갔다고 봅니다. 우선적으로 해당 칩의 MAC 부분을 읽어올시 입력된 MAC과 동일하게
나오며, tcpdump 통해 확인하여 보면 ARP Request 상에 해당 MAC 주소가 입력된 MAC과 동일하게 나오는걸 확인하였습니다.그리고 Ping 테스트가 통과될때 ICMP echo request 와 ICMP echo reply 상의 MAC 주소 및 IP 주소도 PC 및 보드와 동일합니다. 역시 tcpdump를 통하여 확인하였습니다.
넉두리를 조금 해보자면,
초기 두어번만 Ping Good메세지를 보이고 이후에는 간혈적으로 Ping Good메세지를 확인할수있습니다.
이런 상태라 확실히 RX가 된다고 보기는 힘든것같습니다. tfb 명령을 통해 부트로더를 다운받으려고하면,
우연히 핑을 통과해도 많은 에러 이후에, 데이터를 받거나 혹은 온전치 못한 상태로 전송이 마무리됩니다.
이더넷 드라이브 부분도 u-boot의 것을 이지부트에 맞춰본것인데, 동작이 잘 되지않아 ... 어떻게 할지 모르겠습니다.
물론, 데이터 시트와 어플리케이션 노트도 확인하였습니다, 부트로더 이후에 리눅스 상에는 동작에 문제가 없는것으로 보여 더 알 수 없네요. 혹시 몰라, lwip 라이브러리를 조금 보았는데, 여기서 수정할부분도 이미 ezbootloader에서 다 잡혀있어서 이더넷 드라이브를 제외하면 사실상 제게 수정할곳이 없는것으로 보여지고요. 솔직히 조금 답답한 상태네요.
모쪼록 답변주셔서 감사드립니다.
현재 칩쪽 드라이브를 올리고 ping test를 진행중에 있습니다.
그런데 Ping을 놓치는 경우가 많은데요. 타겟에서 PC로 Request 요청시 Reply가 가기는 하는데,
해당 핑을 받을때도 있고 못받을 때도있는데요. 어떤부분을 확인해 보는것이 좋을지요?