2014-11-22 3 views
-1

У меня есть внешнее устройство, прикрепленное к моей доске рук, которое генерирует прерывания в интервале микросекунд. То, что я хочу, это быстрый обработчик irq, который может просто получить временные метки jiffies в массив.Необходим быстрый перехватчик

Обработчик linux irq приобретает большую часть irqs, но на самом деле не работает все обработчики. Я получаю 10 мс для irq, который должен запускаться каждые 25 микросекунд. Некоторые обработчики запускаются с задержкой 0. Похоже, они оказались в очереди. Как получить обработчик IRQ в режиме реального времени?

Я использую плату серии Qualcomm 800, которая очень быстрая.

+0

Jiffies работают на CONFIG_HZ; их невозможно использовать для измерения микросекунд. –

+0

Я сказал, что внешнее устройство генерирует прерывания. Я не настраиваю время в системе. Я хочу, чтобы IRQ работали быстрее. IRq должны запускаться в соответствии с событиями, а не через 20 миллисекунд. – preetam

+0

Прерывания выполняются правильно; вы не сможете это заметить, если jiffies увеличиваются только каждые 20 мс. –

ответ

0

Jiffies - это неправильные метки времени, которые вы использовали бы и сохранили бы в массиве. То, что вам нужно использовать, - это таймер с высоким разрешением (который предоставляет временные метки в ns), что более уместно по сравнению с jiffies. Jiffies - это глобальная переменная, которая увеличивается на основе CONFIG_HZ (обычно каждые 10 мс), но зависит от платформы. Если вы можете прояснить целевой прецедент, то это поможет получить правильный ответ. Использование простого прерывания может покрыть потребность в вашем случае, но вы должны сохранить правильные отметки времени. Джиффис не тот.

Во всяком случае, если вы заинтересованы, зная разрешение вашего локального таймера, вы можете поэкспериментировать код размещен здесь: How to implement elapsed time by jiffies

Надежда, что помогает. Aymen.

Смежные вопросы