Data가 사라지는 현상에 대한 질문입니다

#1

사용중인 모델은 w5300이고 DSP(TMS320C28346)과 연결하여 사용하고 있습니다.

DSP에 저장된 GPS데이터를 lan으로 pc전송하려 합니다.

w5300이 클라이언트 PC가 서버로 동작합니다.

GPS데이터를 PC로 전송하는 것이 처음에는 잘 전송 되다가

어느 시점에서 부터인가 전송이 안되는 문제가 나타났습니다.

DSP의 메모리를 확인했을 때는 데이터가 잘 저장되는 것이 확인되었습니다.

그리고 패킷을 확인했을 때는 GPS데이터가 없는것을 확인했습니다.

위 내용을 그림파일로 첨부하였습니다.

GPS데이터가 위 상황(전송되는 GPS없는상황) 에서 서버프로그램을 종료하였다가 다시 키는 경우에는

다시 GPS데이터가 나오는 것이 확인되었습니다.

이러한 문제가 발생하는 원인을 잘 모르겠습니다.

혹시 의심되는 부분이 있으시다면 답변부탁드립니다.

그리고 해결책이 있으시다면 해결책도 부탁드립니다.

요약.

  1. 처음에는 GPS데이터가 전송이 잘됨.
  2. 어느 시점부터인가 GPS데이터가 전송이 안됨.(패킷은 전송되지만 패킷에 GPS데이터가 없음.)
  3. 서버프로그램을 껏다키면 다시 GPS데이터가 전송됨.
  4. 상기 문제에 대한 원인 및 해결책에 대한 의견 부탁드립니다.

gps데이터사라짐3 - DSP에 저장된GPS데이터 확인
gps데이터사라짐2 - 패킷에서 GPS데이터 확인
gps데이터사라짐 - 패킷에서 GPS데이터 확인 불가능.





#2

캡쳐된 패킷을 보면 모든 전송이 정상적으로 이루어 졌습니다.
단순히 데이타가 전부 0x00으로 전송되는 것은 좀 이상하긴 하지만,
우선적으로 데이타가 Socket의 Tx memory로 copy가 정상적으로 이루어지고 있는지 확인이 필요합니다.
Copy할 Data가 0x00으로 넘어오는지 확인부탁드립니다. (GPS data가 정상적으로 넘어오는지 확인이 필요함)

#3

(GPS data가 정상적으로 넘어오는지 확인이 필요함)

이라는 말씀이 w5300으로 Copy하려는 GPS데이터가 정상인지 확인이 필요하다는 말씀이신가요?

아니면 GPS데이터가 w5300의 TX메모리로 Copy가 잘 되는지 확인이 필요하다는 말씀이신가요?

  1. 전자의 경우를 의미하는 경우라면 첨부 그림 1로 확인을 하였습니다. 입력받은 GPS데이터를 DSP에 저장하고

메모리에 저장된 GPS데이터를 확인한 것입니다.

  1. 후자의 경우를 의미하는 경우라면 Test Mode로 진행하여 TX의 메모리 값을 읽어보려고 시도 하였습니다.

(생략)

setMR(MR_MT);
(생략)

for(i=0;i<25600;i++)//51200/2=25600
{ read_data[i]=IINCHIP_READ(Sn_TX_FIFOR(0));
}

위와 같이 MR_MT를 설정하고 TX메모리의 데이터를 읽으려고 시도 하였는데 읽히지가 않네요.

‘How to Test Internal TX/RX Memory in w5300’ 을 참고하면서 하고있는데

제가 빼먹은 부분이 있을까요?

  1. 추가로 패킷 캡처파일을 첨부하였습니다.

6968번에서는 GPS데이터가 확인되지만 다음 순서인 7389번 에서는 GPS데이터가 확인이 안됩니다.

클라이언트 (w5300) : 192.168.0.230, 서버 (PC) : 192.168.0.18

데이터 전송은 아래와 같습니다.

loopback_tcpc(0,ServerIP, 3000, gps_data,0,50); //GPS데이터
loopback_tcpc(0,ServerIP, 3000, adc_data_base,0,25000); // ADC 1데이터 (0 ~ 24,999)
loopback_tcpc(0,ServerIP, 3000, adc_data_base+25000,0,25000); // ADC 1데이터 (25,000 ~ 49,999)
loopback_tcpc(0,ServerIP, 3000, adc_data_base+50000,0,25000); // ADC 2데이터 (0 ~ 24,999)
loopback_tcpc(0,ServerIP, 3000, adc_data_base+75000,0,25000); // ADC 2데이터 (25,000 ~ 49,999)

확인부탁드립니다.

#4

위 질문중 2번에 해당하는 부분을 확인하였습니다.

그 결과 TX메모리에는 복사가 잘 되어있는것을 확인하였습니다.

unsigned int * read_data = (unsigned int *)0x00320000;

TX에 저장되어 있는 데이터를 불러올 공간의 시작 주소를 위처럼 설정하고

for(i=0;i<25600;i++)//51200/2=25600
{ read_data[i]=IINCHIP_READ(Sn_TX_FIFOR(0));
}

소켓의 크기를 50kbyte로 설정하여 사용하고 있기 때문에 위와 같이 TX메모리의 데이터를 불러왔습니다.

그 결과 GPS데이터가 TX메모리에 Copy된 것을 확인하였습니다.

TX메모리에도 저장되어 있는 GPS데이터가 전송이 안되는 원인을 찾지 못하겠습니다.

#5

전화드렸는데, 연결이 되지않네요.
1번과 2번은 잘 확인하셨을 거라 믿고, 3번에 대한 추가 문의 드립니다.

GPS 데이타만 전송하는 줄 알았는데 그게 아니군요. 한 채널로 데이타를 이렇게 보내는 특별한 이유가 있습니까?
그리고, ADC data를 25K씩 한번에 전송하는 구조인가요?

말씀하신 7389번 패킷이 50바이트로 전송되고 Data가 0x00인줄 알았는데 그게 아니네요. 50바이트 GPS Data에 SEND command를 수행하고 Send OK를 기다리신다면, 패킷이 1460으로 나가지 않을텐데 이상합니다. 50바이트 Packet 자체가 사라진 건가요?