문제

Windows CE에서 100 마이크로 초 미만으로 정확한 시간 동안 잠을 잘 수 있습니까? 지터가 적을수록 더 좋을 것입니다. 이상적으로는 단일 자릿수 마이크로 초 응답 시간을 원합니다.

우리가 정말로 원하는 것은 지터가 매우 낮은 5ms 타이머입니다. Windows CE Waitfor [단일 | 다중] 객체 및 수면 API는 밀리 초 단위로 작동하지만 코드가 취할 수있는 하위 MS 시간을 수정할 수는 없습니다. 주기가 점차 표류되므로 실행됩니다.

이것이 불가능하다면, 그 정보도 매우 도움이 될 것입니다.

도움이 되었습니까?

해결책

이 MSDN 기사 Wince에서 500us 타이머 인터럽트를 설정하는 코드가 있으므로 절대적으로 가능합니다.

Wince 버전에 잠겨 있지 않으면 조사하고 싶을 수도 있습니다. 테나시, 표준 하드웨어에서 Windows와 함께 나란히 실행하는 RTO를 제공한다고 주장하는 사람.

나는 또한 좋은 말을 들었습니다 Qnx, 그러나 나는 그들의 제품도 사용하지 않았습니다. 그러나 나는 그것이 어떤 식 으로든 호환되는 Windows라고 생각하지 않습니다.

다른 팁

불가능합니다. 데스크탑에서는 불가능합니다. 일반적인 운영 체제는 단순히 이러한 방식으로 작동하지 않습니다.

필요한 것이 4 밀리 초마다 정확하게 발사 할 것이라면 또는 운이 좋지 않은 것입니다. 당신이 정말로 필요로하는 것이 더 많은 것을 할 수있는 초당 250 회 정확하게 250 번 발사하는 것이라면. 후자가 필요한 경우 접근 방식을 제안 할 수 있습니다.

잠을 자야 할 필요가 배터리/스레드 수율 문제가 아니고 정확한 타이밍 문제 일 경우 Windows CE 장치에서 "PerformAncecounter"를 사용할 수 있습니다. Xscale 및 Qualcomm CPU에서는 내부 칩 타이머이며 1ms 이하의 세분화가 있습니다. 구형 OMAP 및 Samsung 프로세서에서 Performancecounter API는 1MS 시스템 진드기를 통과하고 있으며 많은 지터가 있습니다.

LB

지터를 수정하려면 고해상도 타이머에 액세스해야합니다. 당신이 가진 CPU에는 하나가있을 수 있습니다. 그렇지 않은 경우 인터럽트 컨트롤러가 가능합니다.

가장 쉬운 방법은 실시간으로 Linux를 사용하고 해당 라이브러리에 와인을 사용하는 것입니다. 당신은주기적인 스레드를 원합니다.

NIST 의이 보고서를 살펴보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top