Таймер высокого разрешения на Coldfire (MCF5328) - PullRequest
2 голосов
/ 18 июня 2011

Я унаследовал встроенный проект, который требует простого профилирования производительности для каждой функции.Он состоит из Coldfire (MCF5328) под управлением uClinux (2.6.17.7-uc1).

Я не эксперт ни по Coldfire, ни по uClinux (или по Linux), поэтому извините за мое незнание.

В Windows я просто использовал бы QueryPerformanceCounter для доступа к таймеру высокого разрешения x86.Запишите счетчик до и после и сравните разницу.

Я узнал, что у Linux есть несколько вариантов QueryPerformanceCounter:

  • clock_gettime / res
  • getnstimeofday
  • ktime_x

Или даже доступ к счетчику меток времени через

  • get_cycles

Ни один из них не доступен наuClinux build это устройство работает.Таким образом, похоже, что ОС не имеет доступа к таймеру высокого разрешения.

Означает ли это, что сам Coldfire не предоставляет такой функции?Или автор порта uClinux их пропустил?Есть ли что-то на оборудовании, которое я могу использовать, и как бы это использовать?

Ответы [ 2 ]

1 голос
/ 21 июня 2011

В итоге я использовал один из четырех таймеров DMA на Coldfire. Было просто включить таймер в качестве автономного счетчика, не генерирующего прерывания. Это обеспечивает счетчик 12,5 нс (при 80 МГц).

1 голос
/ 18 июня 2011

Учитывая возраст вашего ядра, у вас может не быть поддержки таймеров с высоким разрешением.

Если вы пишете драйвер ядра, API-интерфейсы разные. Если get_cycles() отключен, это, вероятно, означает, что ваша архитектура процессора не поддерживает счетчик циклов. Поскольку ваше ядро ​​очень старое, do_gettimeofday, вероятно, лучшее, что вы можете сделать, если не считать написания драйвера для прямого запроса некоторого оборудования таймера.

...