기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
현재 kernel 2.6.18을 기반으로 하여서 TCPIP 통신프로그램을 구현해 테스트 중에
문제가 발생해 조언을 구할수 있을까 해서 질문을 드립니다.
정확한 테스트 환경은 OMAP-L137이라는 ARM9과 DSP 멀티코어 CPU에 커널 2,6.18버전을 올렸습니다.
부팅이 되면 TCPIP 통신프로그램(서버)이 실행이 됩니다.
통신프로그램은 pthread로 구현을 하였으며 사용자(클라이언트)가 어떤 명령어를 입력하면
read()함수를 이용해 TCP수신 버퍼에 저장된 명령어를 읽어와
해당하는 결과 값을 사용자에게 전송하는 프로그램입니다.
문제가 발생하는 부분은 사용자에게 전송하는 부분으로 결과값을 write()함수를 이용해 TCP송신버퍼에
저장까지는 하는데 막상 사용자까지는 전송이 되지 않습니다.
wireshark로 확인을 해봐도 패킷이 전송된 흔적이 없었습니다.
그리고 write()함수의 리턴값을 확인해 보면 전송하려는 바이트수가 넘어와
수신버퍼에 정상적으로 저장이 된것 같습니다.
즉, 현재 테스트결과 판단되는 부분은 프로토콜상에서 전송을 안하는 것이 아닌가 하는 상황입니다.
이런 상황은 계속 발생하는 것은 아니고 명령어를 10만번 정도 주고 받다가 한번씩 발생합니다.
문제가 발생할수 있는 부분이 광범위하긴 하지만
혹시 이런 경험을 해보셨다거나 관련된 내용을 아신다면 조언부탁드리겠습니다.
사용하는 lan chip은 TI사의 DP83848인데 혹시 그 chip은 아니겠죠^^.
사용하는 lan chip은 TI사의 DP83848입니다. lan chip은 전혀 의심하지 않았는데 한번 확인해 봐야겠습니다.
L138 로 개발 의뢰 받아 2년전쯤에 수정 해준 적이 있는데,
그 당시에도 네트웍에 문제가 많이 나와 고생 한 기억이 나네요.
언급한 파이칩을 보시는게 맞는듯 하고,
스코프로 rx, tx, mdc, mdio 전부 찍어 봐야 할겁니다.
장치를 인식 하면 mdc 나 mdio 쪽은 이상 없다고 생각 될수도 있는데,
그게 또 여러 상황이 있는지라 그때 그때 다르더군요.
S/W 쪽은 파이 인식 부분부터 드라이버 디버깅 하면서 보시고,
H/W 쪽은 위에 말한것처럼 스코프 찍고 파형 확인 하면 원인 파악이 금방 될실듯 하네요.
lan driver나 lan의 문제로 보여집니다.
대부분 위와 같은 경우 그렇습니다.
예전 2006년도 모회사 칩을을 aesop-2440 board에 사용하려고 하다가 위와 같은 문제 때문에 포기한 적이 있습니다.
물론, 현재는 버그를 잡았는지 모르겠지만, 여하튼 유사 증상이 있었습니다.