Получение задержки в 10 мс при выполнении поточного обработчика irqLinux

Ответить
Anonymous
 Получение задержки в 10 мс при выполнении поточного обработчика irq

Сообщение Anonymous »

Я написал драйвер устройства на платформе Linux. У меня есть следующие требования для этого конкретного драйвера.
  • Определите прерывание по нарастающему и заднему фронту на одном выводе GPIO.
  • выполните чтение i2c с другого датчика (при обнаружении нарастающего фронта).
  • при спадающем фронте выполните небольшое выполнение для расчета времени.
Для обнаружения прерываний (возрастающих/падающих) я зарегистрировал потоковое прерывание, как показано ниже.
result = request_threaded_irq(irqNumber, (void *)r_irq_handler, irq_interrupt_thread_fn, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, "irqHandler", NULL);
Здесь каждые 50 мс мы получаем одно прерывание по этому GPIO. Длительность импульса этого сигнала прерывания составляет 10 мс. Таким образом, каждые 50 мс обработчик IRQ будет выполняться 2 раза. Один раз для нарастающего фронта, и через 10 мс он выполнит обработчик IRQ для падающего фронта.
Таким образом, тестируя реализацию, я столкнулся с несколькими неожиданными вариантами поведения irqHandler.
как показано ниже.
  • Я использую команду стресса для загрузки ядер ЦП (stress --cpu 6) и выполнить долгосрочную задачу. Я нашел несколько наблюдений, в которых irqHandler потребовалось 7-10 мс для выполнения верхней половины (irqHandler).
  • при загрузке системы несколько миллисекунд или ожидается микросекундная задержка, но может ли она действительно достигать 10 мс? Или в моей реализации произошли какие-либо ошибки?
Примечание:
В irqHandler мы просто используем ktime () для регистрации времени события и установки одного флага на основе нарастающего/спадающего фронта.
Кто-нибудь сталкивался с такой проблемой в реализации Linux/threaded_irq?
есть есть ли обходной путь для этой проблемы?
ваш ценный вклад будет высоко оценен.
В долгосрочной перспективе я сталкиваюсь с нарушениями в выполнении обработчика IRQ. 12 часов, 24 часа вот так. и через короткое время оно не приходит(получасовой тест).

Подробнее здесь: https://stackoverflow.com/questions/783 ... -execution
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»