나는 댄의 답변에 동의 - 여기에 몇 가지 추가/개선 사항은 다음과 같습니다
(1) 윈도우 기반의 계산. 기본값은 아마도 주기성이 없으므로 일부 창 (예 : 1000msec)에 대해 해당 작업에 소비 된 백분율로 런타임을 계산해야합니다. 타이머 누적 누적에 사용되는 정적 변수를 정의해야합니다. 창이 만료되면 (즉, 1000msec가 경과 한 경우) 기본적으로 소비 된 백분율이 1000msec에 비해 기본으로 소비 된 시간을 계산할 수 있습니다. 설명을 읽으면서 기본 상태는 기본적으로 유휴 상태 인 것처럼 보입니다. 즉,이 비율은 대략 사용 가능한 미세 사용률입니다.
(2) 시간당 롤오버.. 32 비트 카운터를 사용할 수 있고 usec 타임 스탬프를 캡처하는 경우 롤오버가 발생하기 전에 1 시간 이상 만 경과 할 수 있습니다. 이것을 홈 프로젝트에 사용하는 경우에는 롤오버 무시 옵션이 있습니다. 그것은 1000msec의 왜곡 된 하나의 창에 기여할 것입니다. 반면에 최대 활용도를 모니터링하고 이로 인해 오류 또는 진단을 설정하면 ... 고려해야합니다.
(3) ISR 스큐. 다른 작업에서 보낸 시간과 다른 ISR에서 보낸 시간을 처리해야하는지 결정하는 것은 RTOS가 컨텍스트 스위칭을 처리하는 방법에 따라 다릅니다. Dan이 언급했듯이, 대부분의 RTOS에는 작업 스위치가 발생할 때 트리거되는 콜백이나 훅 (hook)이 있습니다. 일부 RTOS는 ISR 용으로 별도의 훅을 가지고 있습니다. 나는 이것이 사용자의 임무보다 짧은 ISR에 소요되는 시간에 대해 사용자가 신경을 덜 쓰는 일반적인 이론 이외의 다른 동기라고 확신하지는 않습니다. 어떤 경우이든, RTOS가이 스위칭을 처리하고 거기에서 어떻게 움직이는 지 확인하십시오.
이 문제를 올바르게 처리하지 않으면 ISR에 소요 된 시간은 ISR이 실행 된 시간에 실행 된 작업에 기인합니다. 당신이 Default에 있다면 우연한 기본 작업은 ISR 시간을 흡수합니다. ISR이 많이 실행되지 않으면이 문제를 완전히 무시합니다.
행운을 빈다. 필자는 PowerPC 551X 제품군으로이 작업을 수행했으며, 완벽한 자동차 용 SW를 위해 완벽하게 작동해야했습니다! 당신은 훨씬 쉽게해야합니다 :)
출처
2010-08-29 12:23:29
dls