Цитата(WhiteFang @ Jul 18 2010, 13:54)

В моём вопросе речь про штатные средства среды IAR для вычисления процессорных тактов.
А Вам обязательно "штатные средства среды IAR" использовать? Возьмите любой free-running таймер и наслаждайтесь. Например, для IAR 5.xx для LPC17xx можно сделать так:
CODE
#define hal_profiler_counter() (RIT_COUNTER)
#define hal_profiler_freq() (HAL_PMOD_CLOCK_RIT)
#if HAL_PROFILER
HAL_SYSTEM_CALL
VOID
HAL_CALL_OPTION
hal_profiler_init(
void)
{
DWORD lock;
lock = hal_lock_interrupt();
{
RIT_CTRL = 0;
RIT_COUNTER = 0;
RIT_MASK = 0;
RIT_COMPVAL = 0xFFFFFFFF;
NVIC_IDCR0 = (1<<IRQ_RIT);
RIT_CTRL = bRIT_EN;
CLK_PCONP |= bPCONP_PCRIT;
}
hal_unlock_interrupt(lock);
}
#endif
Измерение времени выполнения функции выглядеть будет так:
CODE
{
DWORD start, time;
hal_profiler_init();
start = hal_profiler_counter();
function_to_be_profiled();
time = hal_profiler_counter()-start;
//
// time - время выполнения функции в тактах таймера профайлера
//
}
Ну, можно еще подкорректировать на время исполнения самого кода hal_profiler_counter().
Тактовая частота таймера профайлера выбирается по желанию - взависимости от требуемой точности и диапазона измеряемых интервалов.
BTW, на большинстве распространенных ARM-процессоров типа LPC/SAM время исполнения кода с точностью до такта измерять часто бессмысленно - скорость исполнения определяется многими факторами - выравнивание кода во флеш, загрузкой шин операциями DMA, прерываниями.