W5100 인터페이스 관련 문의

#1

WIZ811을 구매하고 W5100 chip data sheet를 참조하여 F/W를 개발하고 있습니다.
참고로 사용하는 CPU는 8051계열이고 사용하는 언어는 어셈블입니다.
전화로 문의하려고 하였더니 정책이 바뀌어 이곳을 이용하라고 하여 여쭙니다.

먼저 data sheet를 참조하여 다음의 순서대로 레지스터들을 사용하였습니다.

  1. MR --> Reset실행후 1msec 대기
  2. IMR, RTR0/1, RCR 설정
  3. Gateway(192.168.0.1), SHAR(임의값), Subnet Mask(255.255.255.0), SourceIP(192.168.0.60) 설정
  4. S0_MR(TCP설정), SO_Port(3999설정)
  5. S0_CR(TCP Open으로 설정) --> S0_SR(Socket INIT이면 정상/아니면 Socket Close처리)
  6. S0_CR(TCP LISTEN으로 설정) --> S0_SR(Socket LISTEN이면 정상/아니면 Socket Close처리)
    상기의 상태까지 처리한 후에
    S0_SR을 계속 확인하고 있으면 계속 TCP LISTEN 상태이다가
    Device_Terminer이라는 프로그램으로 192.168.0.60 3999로 접속을 하면
    바로 S0_SR의 상태가 SOCK ESTABLISHED상태가 아닌 SOCK CLOSE가 되면서 프로그램에서는 Socket open error가 됩니다.
    어떤 부분을 추가 또는 확인하여야 하는지 답을 부탁드립니다.
    처음 접해보는 관계로 그리고 C언어가 아닌 어셈블로 포워딩하는 관계로 쬐금 어렵습니다. 감사합니다^^
#2

플로우 상으로는 문제가 없어 보입니다.
상대방이 접속을 시도하면 바로 클로즈 되는 것으로 보아
RTR과 RCR값을 너무 작은 값으로 설정하신 것은 아닌지 의문이 드네요.

RTR과 RCR값을 설정 없이 Reset값으로 Test 해세요.

#3

답변에 감사드립니다.
일단 RTR은 이상이 없었는데 RCR을 0으로 설정하여서 그렇게 되었었네요.
수정을 하고 테스트를 하니 일단 수신은 잘됩니다.
송신까지 테스트를 해보겠습니다.
현재는 일반적인 통신으로 사용하고 있습니다.
Interrupt로 다시 테스트를 할 때 문제가 있으면 다시 문의하겠습니다.