2014-03-24 4 views
0

어쨌든 tickGet() 및 tickAnnounce 외에 VxWorks에서 시스템 시간을 얻으려고합니까? 지정된 작업의 작업 전환 사이의 시간을 측정하고 싶습니다만, 두 tickGet() 값이 taskGrid()와 taskSwitchHookAdd 함수의 끝이 항상 같기 때문에 tickGet()의 정밀도가 충분하지 않다고 생각합니다.VxWorks에서 시스템 시간을 얻으려면

답변

0

그것은 당신이 어떤 플랫폼에 따라 다릅니다 만,이 86 인 경우 당신은 사용할 수 있습니다

pentiumTscGet64(); 
+0

이 기능이 얼마나 정확한지 알고 계십니까? – Zeinab

+0

TSC는 CPU의 클럭 속도로 증가합니다. –

2

당신이 시도 및 시간 작업 스위치를 찾고 있다면, 난 당신이 적어도 타이머를 필요로 가정 할 마이크로 초 (우리) 수준.

일반적으로 타이머/클럭은 실행중인 플랫폼에서만 제공됩니다. 임베디드 시스템에서 작업하는 경우 보드의 다양한 타이머에 액세스하는 기능이 있는지 알아보기 위해 보드 지원 패키지 (있는 경우)에 대한 설명서를 읽고 시도 할 수 있습니다.

더 낮은 수준의 솔루션은 시스템에서 실행중인 프로세서를 파악한 다음 프로세서의 내부 타임베이스 레지스터 (TBR)를 폴링하는 간단한 어셈블리 코드를 작성하는 것입니다. 이렇게하려면 실행중인 프로세서에 대한 연구가 필요하지만 쉽게 수행 할 수 있습니다. 당신이 PPC 기반 프로세서에서 실행중인 경우 , 당신은 TBR을 읽을 수 아래의 코드를 사용할 수 있습니다

loop: mftbu rx #load most significant half from TBU 
mftbl ry #load least significant half from TBL 
mftbu rz #load from TBU again 
cmpw rz,rx #see if 'old' = 'new' 
bne loop #repeat if two values read from TBU are unequal 

소스 : http://www-inteng.fnal.gov/Integrated_Eng/GoodwinDocs/pdf/Sys%20docs/PowerPC/PowerPC%20Elapsed%20Time.pdf

행운을 빕니다!