2013-03-15 2 views
0

Windows 및 Linux에서 내 작업의 성능을 확인하기 위해 timer 기능을 구현했습니다. 그러나 리눅스 구현은 VxWorks PPC 750 보드에서 작동하지 않습니다. gettimeofday은 Vxworks에서 사용할 수 없습니다.VxWorks에서 C 타이머를 구현하는 방법

t1 = vxworks_start_timer(); //How to implement ? 
my_task(); 
t2 = vxworks_stop_timer(); //How to implement ? 
elapsedtime = t2-t1; 

Vx 웍스에서이 타이머를 구현하여 작업의 경과 시간을 계산하는 방법. 시스템 타이머 틱 해상도가 충분하다면

+0

난 그냥 'Vx 웍스 타이머'인터넷 검색과 분명히 관련 명중의 수백을 얻었다. 당신이 뭔가 다른 것을 찾고 있습니까? –

답변

0

, 당신은 (아치는 TBLTBU를 읽을 수, tickGet()sysClkRateGet() 또는 clock_gettime()하지만, 해상도가 여전히 시스템 클럭으로 제한됩니다 그렇지 않으면

을 선택합니다 사용할 수 있습니다 -specific)

0

필요에 따라 다양한 방법이 있습니다.

측정 할 활동이 장기간 실행되는 경우 tickGet() 또는 tickGet64()을 통해 액세스 할 수있는 시스템 틱 카운터를 사용하는 것이 좋습니다.

이 값은 시스템 클록 속도 (예 : CPU 주파수가 아니라 스케줄러의 속도)가 증가하므로 해상도는 1 초당 1 분의 1 초로 제한됩니다. sysClkRateGet을 사용하여 주파수를 결정할 수 있습니다.

장기 실행 작업의 경우에는 위의 내용으로 충분하지만, 제한된 기간을 희생하여 더 높은 해상도가 필요한 경우 시스템 타임 스탬프 카운터가 구성된 경우이를 사용할 수 있습니다. 이를 위해서는 sysTimestamp (또는 sysTimestamp64)을 사용하고 sysTimestampFreq을 사용하여 주파수를 가져올 수 있습니다.

시스템 구성에 따라 카운터가 자주 재설정 될 수 있으며이 경우에는 sysTimestampPeriod을 사용하여 운동을 수행 할 수 있습니다. 타이밍 코드에서이를 처리해야합니다.

당신은 물론 장기 실행, 아직 고해상도 타이머를 모두 제공하기 위해 함께 두 가지 방법을 사용할 수 있습니다

관련 문제