Linux GPIO принудительное прерывание - PullRequest
0 голосов
/ 30 октября 2019

У меня есть приложение, работающее на Pi3, оно имеет прерывание от переднего фронта вывода.

Все это прекрасно работает, но моя проблема заключается в тестировании программного обеспечения. Я создал тестовое приложение, которое имитирует все остальные интерфейсы. В программном обеспечении я хотел бы вызвать прерывание на входе для этого вывода.

Pi находится в запечатанном ящике, поэтому у меня нет реальных аппаратных опций.

Пока я пробовал работатьиз командной строки, но когда я пытаюсь записать в / gpio17 / значение, оно дает мне следующее:

$ echo 1> значение
ошибка: операция не разрешена

Я знаю, что на голом железном решении я бы просто записал в регистр, чтобы запустить его, но ничего не могу найти по этому поводу для Linux.

1 Ответ

0 голосов
/ 05 ноября 2019

Получил это отсортировано и извинения, если вопрос не был достаточно ясен. Просто укажите это как FYI.

Базовая настройка GPIO в Linux с использованием / sys / class / gpio:

echo 18> / sys / class / gpio / export

затем

echo "in"> / sys / class / gpio / gpio18 / direction

для ввода в качестве ввода.

Это нормально, но я обнаружил, что при попытке установить значение с помощью

echo 1> / sys / class / gpio / gpio18 / value

Я получил ошибку, упомянутую выше (операция не разрешена).

Таким образом, решение состояло в том, чтобы позволить функциональному приложению настроить вывод и ISR в качестве входа, а затем с помощью тестового приложения перенастроить вывод на выход. .

echo "out"> / sys / class / gpio / gpio18 / direction

Это затем позволяет мне записать в переменную 'value' и вызвать повышениекрайнее прерывание.

В качестве меры предосторожности я перемещаю используемый штырь GPIO для тестирования от функционального штыря, чтобы не перегрузить его в битве против подтягиваний / подтягиванийОтключения внешнего оборудования.

Примечание: я пытался использовать подход / dev / mem mmap, но это не очень хорошо работало, и пару раз срабатывало прерывание, но оно не останавливалось. Если я это выясню, я обновлю.

...