Использование Linux часов во встроенном дизайне - PullRequest
0 голосов
/ 05 марта 2020

Я использую Linux на Xilinx RFSO C (arm64; 4 ядра работают в режиме SMP). Я использую Linux, предоставляемый цепочкой инструментов Xilinx (Peta Linux 2019.2), которая использует ядро ​​версии 4.19, с g cc 4.7.4.0.

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

У меня есть следующие требования: a) Согласованное значение тактовой частоты для всех ядер, возвращаемое из clock_gettime b) Наличие временных меток высокого разрешения (<= 1 us) c) Наличие высоких разрешение (1 мкс), превентивный сон d) На NTP не влияют часы, скачки GPS и т. д. c. e) Минимальные накладные расходы на выборку часов (для clock_gettime) </p>

Примечания: a) Мне специально не нужны часы для отображения текущего времени UT C. Мне просто нужно, чтобы это было однообразно c. б) Система никогда не приостанавливается

Linux определяет несколько часов (http://man7.org/linux/man-pages/man2/clock_getres.2.html). Из них следующие, как мне кажется, соответствуют моим потребностям: CLOCK_MONOTONI C, CLOCK_MONOTONIC_COARSE, CLOCK_MONOTONIC_RAW, CLOCK_BOOTTIME

Что касается CLOCK_MONOTONIC_COARSE, то это говорит о том, что это быстро, но менее точно: 101 * 10 * 10 * 10 000 *. * Документация для nanosleep гласит, что на Linux он основан на CLOCK_MONOTONI C и что на него не влияет NTP, et c.

Я знаю, что вызов clock_gettime на некоторых из всех вышеперечисленных избегает системного вызова (в более поздних Linux версиях).

У меня есть следующие вопросы: a) Какие из перечисленных выше часов лучше всего соответствуют моим требованиям, перечисленным выше? б) Какое разрешение вышеупомянутых часов на arm64 для clock_gettime? c) Каково эффективное разрешение наноспа?

Спасибо,

...