ezboot 2.3.04를 받아서 새로 컴파일해서 쓰고 있습니다.

기본 IP 주소 등을 변경하려고 새로 컴파일을 시도하였고요.

보드는 ez-s3c2440이고,
vmware에 CentOS 5.2를 설치하고
falinux에서 제공하는 크로스컴파일러를 사용하였습니다.

그러던 중 제가 임의로 수정한 부분이 있는데, 참고가 되실 분이
있을 것 같아서 몇 자 적어봅니다.


1. cpu 속도

arch_s3c2440/setup.h 에서
#define  CPU_SPEED 부분이 있는데요.
현재 소스는 S3C2440_CPU_296M로 되어 있어서

#define CPU_SPEED    S3C2440_CPU_400M

과 같이 바꾸었습니다. 아직까지는 이상없이 쓰고 있고요. ^^


2. tftp 관련

리눅스의 tftpd를 사용하면 ezboot에서 종종 깨지는 문제가 있어서 살펴보니

ezboot에서 동시에 도착한 이더넷 프레임을 같은 버퍼에 받아서 처리하기 때문에
데이터가 잘못 된 것으로 인식되더군요.

윈도우용 tftp 서버는 ack가 없으면 재전송을 하는데
리눅스 용은 재전송을 하지 않아 결국 ack 미수신에 의한 timeout이 발생하네요.

그래서 ezboot에서 이더넷을 사용할 때 한 프레임 이상의 데이터를 연속하여
수신하는 경우가 없는 것으로 생각하고
한 번에 한 프레임만 읽도록 수정하였습니다.

현재까지는 잘 되는 것 같네요.

main/ax88796b.c 파일에서

int ax88796b_receive(void *pRxBuf, int len) 함수에서


                next_frame = rxframe.next;
                ax_writeb(next_frame-1, EN0_BOUNDARY);

                total += packetlength;

                break; // mhkang
        }

        return total;
}

와 같이 while 루프를 바로 빠져나가서 한 번에 한 프레임만 읽도록 수정하였습니다.


혹시 같은 문제를 가지고 계셨던 분이 있으시면 적용해 보시고
결과도 같이 공유했으면 좋겠습니다. ^^