Таймер высокого разрешения на Coldfire (MCF5328)

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

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

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

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

  • clock_gettime / Рез
  • getnstimeofday
  • ktime_x

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

  • get_cycles

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

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

2 ответа

Решение

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

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

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

Другие вопросы по тегам