2014-11-03 4 views
1

Я новичок, пытающийся получить прерывания с уровнем срабатывания на встроенной плате Linux. Я использую poll() для ожидания события прерывания. Мне удалось добиться прерывания прерывания.Sysfs GPIO с прерываниями уровня

Как я могу получить прерывания, вызванные уровнем? Для чего я устанавливаю край?

+0

Я не уверен, правильно ли я понял, что вы хотите. Вы хотели бы прерывания как для восходящих, так и для падающих событий? –

+2

@ MicheleD'Amico: Он хочет, чтобы срабатывали прерывания уровня. Если вы не знаете, что означает «уровень срабатывания», используйте Google - это четко определенный термин программирования. По сути, он хочет непрерывно прерывать события, если уровень на определенной строке либо низкий, либо высокий (в зависимости от конфигурации). – datenwolf

+1

Я знаю, что это, но я не был уверен, потому что на самом деле не применим для gpio sysfs. Если он этого захочет, он должен написать его на более высоком уровне, потому что gpio sysfs не дают (и IMHO, возможно, никогда не даст), что-то вроде этого в пользовательском пространстве. –

ответ

1

Падающий или восходящий переход вызывает прерывание по краю. Хотя опрос - это возможность обрабатывать такие прерывания, чтобы сохранить циклы CPU, создайте поток, который может быть запланирован ядром для сна до тех пор, пока не произойдет прерывание, и не разбудите его, когда произойдет прерывание. Таким образом, основная программа не блокируется при опросе.

Линия прерывания находится на высоком или низком уровне для прерывания, вызванного уровнем. Понятие edge не применяется для прерывания с использованием уровня. Здесь CPU сканирует устройства, чтобы найти того, кто вызвал прерывание. После обслуживания устройства он будет продолжать проверять состояние линии прерывания для других устройств, которым может понадобиться услуга (обмен прерываниями). Если это не сразу Acked (очищено/обработано), система может перейти в зависающее состояние из-за повторного/непрерывного вызова внимания обработчика прерываний. То есть внешнее устройство должно подавать сигнал IRQ до тех пор, пока ожидающее прерывание не будет очищено программным обеспечением в записи записи в регистр устройства. Если у многих устройств есть сигнал IRQ, высокий или низкий уровень будет присутствовать, пока все драйверы устройств не будут обслуживать их соответствующие устройства. Таким образом, это нужно немедленно обработать.

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