|
你这问题不是还没有解决吗?怎么结贴了
我觉得23楼的做法不是根本解决问题的办法,而且系统已经提供了PM来切换状态,这样做反倒有可能导致系统的不正常。
其实找出这问题的根本原因应该不难,你先platform.cpp中的Message打开
// wait for an event; keep track of elapsed time
dwStartTime = GetTickCount();
dwStatus = WaitForMultipleObjects(dwNumEvents, hEvents, FALSE, dwTimeout);
dwElapsedTime = GetTickCount() - dwStartTime;
PMLOGMSG(ZONE_PLATFORM,
(_T("%s: wait returned %d, elapsed time %d, timeout was %d\r\n"), pszFname,
dwStatus, dwElapsedTime, dwTimeout));
如果你没有自己定制过PM的话,那就写一个小AP实时的调用一下函数GetTickCount();,然后看它跟实际的时间对不对得上,如果可以对上的话应该是不会有问题,如果对不上,请检查OEMInit()中调用的OALTimerInit(1, OEM_TICKS_1MS, OEM_TICK_COUNT_MARGIN);
下面是Intel PXA270的设定:
#define OEM_CLOCK_FREQ 3250000 // 3.25M ticks/sec
#define OEM_TICKS_1MS 3250 // 1ms in ticks
其它的CPU可能要查看其CPU的Spec
|
|