devc-ser8250
Менеджер
последовательных 8250-совместимых каналов связи (QNX
Neutrino)
Примечание. Для запуска этого драйвера
необходимо войти в систему под учетной записью root.
Синтаксис:
devc-ser8250
[[опции]
[порт[^сдвиг][,прерывание]]]...
&
Поддерживаемые платформы:
Neutrino
Целевые платформы:
Оборудование x86, PowerPC и
MIPS с универсальным асинхронным приемопередатчиком (UART),
совместимым с устройствами 8250
Опции:
Действие опций зависит от их положения в строке и распространяется
на указанные после них порты.
-b число
Скорость передачи в бодах (по
умолчанию – 57600).
-C размер
Размер канонического буфера в
байтах (по умолчанию – 256).
-c тактовая_частота[/делитель]
Определить собственную тактовую частоту (в Герцах) и
делитель для последовательного порта. Значение по умолчанию (-c 1843200/16) подходит для
PC-совместимых последовательных портов.
-E
Выполнить запуск в сыром
(raw) режиме (по умолчанию). По умолчанию программное управление
обменом данными (software flow control) деактивировано.
-e
Выполнить
запуск в редактируемом режиме (по умолчанию – режим
необработанных входных данных). По умолчанию программное
управление обменом данными активировано.
-F
Деактивировать аппаратное
управление обменом (Hardware flow control) данным (по умолчанию
аппаратное управление обменом данными активировано). В
редактируемом режиме аппаратное управление обменом данными не
поддерживается.
-f
Активировать аппаратное
управление обменом данными (по умолчанию). В редактируемом режиме
аппаратное управление обменом данными не поддерживается.
-I число
Размер входного буфера в
байтах (по умолчанию – 2048).
-O число
Размер выходного буфера в
байтах (по умолчанию – 2048).
-o nodaemon
Запретить вызов функции procmgr_daemon() для работы
драйвера в фоновом режиме. Эта опция используется при
необходимости узнавать о прекращении работы devc-ser8250.
-S|s
Деактивировать/активировать
программное управление обменом данными. Состояние по умолчанию
зависит от режима: в raw-режиме (-E, режим по умолчанию)
программное управление деактивировано; в редактируемом режиме
(-e) программное
управление активировано.
Имеет значение
порядок, в котором указываются опции -E или -e и -S или -s:
Опции
|
Режим
|
Программное
управление обменом данными
|
-e
|
Редактируемый
режим
|
Активировано
|
-S -e
|
Редактируемый
режим
|
Активировано
|
-e -S
|
Редактируемый
режим
|
Деактивировано
|
-E
|
Режим
необработанных данных (raw mode)
|
Деактивировано
|
-s -E
|
Режим
необработанных данных (raw mode)
|
Деактивировано
|
-E -s
|
Режим
необработанных данных (raw mode)
|
Активировано
|
-T число
Активировать
FIFO-буфер передатчика и установить число символов (1, 4, 8 или
14), передаваемых при каждом прерывании на передачу. Значение по
умолчанию – 0 (FIFO выключен).
-t число
Активировать
FIFO-буфер приемника и установить пороговое число символов (1,
4, 8 или 14) для срабатывания прерывания по получению данных.
Значение по умолчанию – 0 (прерывания не инициируются).
-u число
Добавить номер число к префиксу
имени устройства (/dev/ser). Значение по
умолчанию – 1; дополнительным
устройствам присваиваются номера в порядке возрастания.
порт
Шестнадцатеричный
адрес порта ввода-вывода (для систем x86) или адрес физической
памяти последовательного порта (для PowerPC и MIPS).
сдвиг
Разнесение регистров
устройства, выраженное степенью числа 2. Например:
0
Регистры разнесены на 1 байт.
1
Регистры разнесены на 2
байта.
2
Регистры разнесены на 4
байта.
…
n
Регистры разнесены на 2n
байтов.
Значение сдвиг по умолчанию – 0.
прерывание
Используемое этим портом прерывание задается
шестнадцатеричным числом (если введен префикс 0x) или десятичным числом (если префикс
отсутствует).
Описание:
Драйвер devc-ser8250 является небольшой
программой для администрирования устройств с последовательным
интерфейсом в QNX Neutrino. Он может работать с любым числом
последовательных портов, использующих микросхемы серии 8250,
14450 или 16550. Каждому устройству может быть назначено
собственное прерывание, либо устройства могут совместно
использовать одно прерывание при условии, что аппаратные
средства поддерживают режим разделения прерываний. Если порты
ввода-вывода для устройств в системе x86 не указаны, то devc-ser8250 использует стандартные
PC-порты COM1 (3f8,4) и COM2 (2f8,3).
Приоритет
драйвера устройств с последовательным интерфейсом приводится в
соответствие с приоритетом клиента. Все внутренние события
обрабатываются с приоритетом 24 (соответствует приоритету
внутренней обработки импульсов). Приоритет обработки событий
жестко запрограммирован и не может устанавливаться ни одной из
перечисленных опций. (Для изменения приоритета требуется
изменение программы main.c драйвера.)
При взаимодействии драйвера
с клиентским приложением он работает с приоритетом клиента. Вся
остальная обработка выполняется либо с приоритетом 24r, либо по
прерыванию.
Каждому
устройству присваивается имя в пространстве путевых имен /dev/sern, где n принимает
значения в порядке возрастания, начиная с 1, которое можно
изменить с помощью опции -u. Результат
использования последовательных PC-портов по умолчанию:
Устройство
|
Порт
|
Прерывание
|
/dev/ser1
|
3f8
|
4
|
/dev/ser2
|
2f8
|
3
|
Примечание. Если в приложении
используется консоль /dev/console, следует
создать ее привязку к одному из устройств (/dev/ser1, /dev/ser2, …) путем добавления в файл
построения образа, используемый в команде mkifs подобной строки:
[type=link] /dev/console
= /dev/ser1
Полное управление всеми устройствами осуществляется с
использованием прерываний, и по умолчанию устройства
поддерживают стандартное аппаратное управление обменом данными
на входе и выходе (RTS/CTS). Это управление можно
деактивировать с помощью опции - F.
Примечание. В
редактируемом режиме аппаратное управление обменом данными не
поддерживается.
По умолчанию запрос на
чтение выдается при доступности по крайней мере одного символа.
Для повышения эффективности можно использовать три параметра,
управляющие ответами на запросы на чтение:
Time
Возвратить по истечении
указанного интервала времени.
Min
Возвратить при нахождении во
входном буфере указанного числа символов.
Char
Возвратить
при нахождении во входном буфере этого символа пересылки.
Примечание. Если значение Min превышает
размер входного буфера, оно уменьшается до размера буфера. Для
предотвращения такой ситуации размер входного буфера можно
изменить с помощью опции -I.
Эти
параметры устанавливаются с помощью библиотечных подпрограмм
(см. tcgetattr(), tcsetattr(), readcond() и TimerTimeout() в руководстве
по библиотекам Library Reference).
Менеджер devc-ser8250 поддерживает режим
необработанных входных данных и редактируемый режим, то есть
действует как реальный терминал ввода-вывода.
В структуре
termios поддерживаются
следующие поля и флаги:
Поле
|
Поддерживаемые флаги
|
c_cc
|
Все символы
|
c_iflag
|
BRKINT ICRNL IGNBRK IXON
|
c_oflag
|
OPOST
|
c_cflag
|
CLOCAL CSIZE CSTOPB PARENB PARODD
|
c_lflag
|
ECHO ECHOE ECHOK ECHONL ICANON IEXTEN ISIG NOFLSH
|
Примеры:
Запуск
администратора devc-ser8250; по умолчанию –
порты COM1 и COM2:
devc-ser8250 &
Запуск администратора devc-ser8250; по умолчанию выбираются
порты COM1 и COM2, однако изменяется скорость двоичной
передачи в бодах – устанавливается скорость 38400 вместо
скорости по умолчанию 57600:
devc-ser8250 -b 38400
&
Запуск
администратора devc-ser8250 с пятью портами
(для последних четырех портов установлена скорость 38400 бод):
devc-ser8250 3f8,4 -b
38400 280,3 288,3 290,3 298,3 &
Можно указать несколько опций -F и -f; действие этих опций зависит
от их расположения и распространяется на указанный после них
последовательный порт:
devc-ser8250 -F 3f8,4 -f 2f8,3 &
