안녕하세요
dm9000a 관련해서 질문 드립니다.
S3C2440 와 직접관련이 있는 내용이 아니라서 죄송합니다.
위의 칩을 사용할때 동작중에 불규칙 적으로 dm9000a 의 수신및 전송처리에 문제가 생깁니다. 그래서 상태 레지스터값을 읽어보면 문제 발생시에는 Rx FIFO overflow 이 발생하는거 같습니다. 위의 상황이 발생하면 네트웍을 통한 수신및 전송이 되지 않습니다. 문제 발생 후에도 칩의 레지스터값을 읽어오는거 보면 칩이 죽은거는 아닌거 같습니다. phy쪽만 죽는거 같습니다
혹 사용하시다가 이런 문제가 생긴적은 없는지요?
기존에 RTL 와 SMSC 의 네트웍칩을 계속 사용하다가 가격때문에 dm9000a로 변경할려고 하는데 위의 문제가 생깁니다.
혹 사용하시다가 비슷한 경우가 발생했다면 관련내용에 대해서 조언을 부탁드립니다.
리눅스에서는 전혀 그런문제는 없는것 같습니다.
리눅스에서는 ping -f로 몇백만개의 패킷을 날려봐도, drop은 하나도 없었습니다. 그리고, netperf로 벤치마크할때도, 문제가 발생하지 않았습니다.
ifconfig에서 확인한결과 모든 패킷이 정상이었습니다.
그리고, dm9000a가 16비트 버스에도 불구하고 속도가 잘나오더군요
간단한게 결과를 알려드리면, ftp로 2440의 램디스크에 있는 6메가짜리 파일을 리눅스 서버로 업로드할대 초당 4.7메가바이트가 나왔습니다. 다운로드는 업로드보단 30%~40% 정도 작게 나왔습니다.
이 속도가 나오기 위해서, 버퍼에 데이터 쓰는 루틴이 for로 되어있는것을 writesw로 고쳤습니다. 이것만해도 약 50%는 빨라지는것 같더군요
그리고, 하드웨어 crc기능을 온시켰더니, 이건 속도향상이 몇%안되더군요
uboot에서 잘안되는 부분은 계속 찝찝하네요.