встроенный Linux, как переключить использование последовательного порта одним нажатием кнопки? - PullRequest
2 голосов
/ 01 февраля 2011

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

Инженеры хотят, чтобы на электронной плате было несколько кнопок с последовательным портом.Операционная система - Linux.

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

Драйвер Linux для обработки обработки прерываний кнопки в сторону, как вы можете переключить основное использованиеиз последовательного порта, как это?У кого-нибудь есть ссылка на URL о том, как это сделать?(желательно с некоторым примером кода)

Примечание: я предложил предоставить хорошее меню при входе в систему для данного пользователя, но не могу этого сделать.

Спасибо за советы, за любые предложения.1012 * С уважением, Берт

Ответы [ 2 ]

1 голос
/ 01 февраля 2011

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

В этом случае вам, вероятно, следует:

  1. Подождите, покасобытие кнопки

  2. Попросите процесс протокола закрыть последовательный порт - завершение этого процесса также может помочь вам

  3. Запустите *gettyпроцесс - или все, что ваша встроенная цель использует для представления приглашения на последовательный порт

  4. Восстановление процесса протокола, как только вы закончите

РЕДАКТИРОВАТЬ:

В приведенных выше действиях я предполагаю более распространенный случай, когда процесс, управляющий последовательным портом (например, pppd), не может выступать в качестве замены getty для предоставленияприглашение к входу.Это также, как правило, не тот процесс, который обеспечивает telnet / SSH / любые другие входы в систему.

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

Без дополнительной информации о вашей встроенной цели невозможно дать более конкретный ответ.

0 голосов
/ 02 февраля 2011

Процесс getty обычно запускается на последовательных портах для предоставления приглашения на вход в систему с помощью /sbin/init, который настроен в /etc/inittab.

init имеет концепцию "уровней запуска".Каждый уровень запуска определяет отдельный набор процессов, которые init будут продолжать работать.Один из элегантных способов реализовать это - спроектировать ваш «протоколный» процесс так, чтобы он запускался с init, так же, как getty.Затем вы можете указать init запускать ваш процесс на одних уровнях выполнения, а getty - на других, и переключаться между уровнями выполнения кнопкой.Например, ваш /etc/inittab может включать в себя:

T0:2:respawn:/sbin/getty -L ttyS0 9600 vt100
P0:345:respawn:/sbin/protocol ttyS0 9600

Это позволит запустить вашу команду protocol на первом последовательном порту на уровнях выполнения 3, 4 и 5;но getty на уровне выполнения 2.

...