2012-08-24 6 views
0

VxWorks에서이 레지스터를 어떻게 구성하고 읽었습니까? 즉, 어떤 주소이고, 증가율을 구성하기 위해 쓸 주소는 무엇입니까?Freescale P2020의 대체 타임베이스에 액세스하는 방법 VxWorks의 64 비트 타이머 레지스터 등록

우리는 RTP를 사용하지 않으므로 커널 공간 문제는 없습니다. 그냥 속도를 일부 제어 주소에 쓰고 64 비트 부호없는 정수 타이머를 주기적으로 읽어야합니다.

이 응용 프로그램에는 일반적인 타이밍 측정에 소프트웨어가 사용할 고해상도 64 비트 타이머가 필요합니다.

예제 코드가 좋을 것입니다.

답변

0

응용 프로그램이 타이머 및 환경에서 수행하고자하는 작업에 따라 다릅니다. 나는 그 특정 칩과 작동하지 않았기 때문에, 당신에게 말할 수 없다. 어떻게 레지스터를 사용 하는가?

작업 전후에 카운터를 읽고이 두 카운터의 차이를 확인할 수있는 타임 스탬프와 같은 함수가 있으면 VxWorks 보드 지원 패키지는 sysTimestamp 함수 제품군을 통해 해당 기능을 제공합니다. 설명서를 참조하십시오.

그러나, SYSTIMESTAMP 당신의 요구 사항을 충족하지 않는,하지만 여전히 코드가 (사용자 공간 AKA RTP 대) 커널 공간에서 실행되는 현재 시간을 읽어 레지스터에 액세스하려면 당신은 단순히 필요 다른 한편으로는, 응용 프로그램이 RTP의 컨텍스트에서 실행하는 경우 타임 스탬프를 반환하는 함수 ...

uint64 myTimestamp() { 
    uint64 ts; 
    ts = *read & massage the register* 
    *deal with overflows, etc... * 

    return ts; 
} 

을 정의 할 상황이 훨씬 창에서 프로세스처럼, rtPS 서비스 이후 더 복잡, 돈 ' 하드웨어 기능에 직접 액세스 할 수 있습니다.

물리적 커널 메모리 페이지를 RTP에 매핑하여 레지스터에 직접 액세스 할 수 있습니다. 시스템의 보호 메커니즘에 구멍을 열었으므로 매우 낙심했습니다. 특히 timestamp 레지스터를 읽는 사용자 정의 시스템 호출을 구현할 수도 있습니다.

이 두 가지 솔루션 모두 vxWorks에서 중급 이상의 기술이 필요합니다.