Man:Man1/setserial.1

Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.

Перейти до: навігація, пошук

Зміст

Назва

setserial - отримати або встановити параметри послідовного порту Linux

Сислий огляд

setserial [ -abqvVWz ] пристрій [ параметр [ аргумент ] ] ...

setserial -g [ -abGv ] пристрій ...

Опис

setserial являється програмою встановлення або звітування конфігурації послідовного порту. До конфігурації входять порт вводу-виводу (I/O, input/output), переривання (IRQ, interrupt request), яке використовується окремим послідовним портом і чи розглядати клавішу переривання як безпечний сигнал уваги (Secure Attention Key) і.т.д.

Під час звичайного завантаження, тільки порти COM від 1 до 4 будуть ініційовані, використовуючи стандартні порти вводу-виводу і значення IRQ, перечислені нижче. Для ініціалізації будь-яких додаткових послідовних портів або поміняти стандартні параметри COM-портів 1-4, вам слід використати setserial. Типово він викликається скриптом rc.serial, який в свою чергу запускається з /etc/rc.local.

Аргумент пристрою вказує який саме саме послідовний пристрій налагодити або запитати інформацію. Пристрій вказується у формі /dev/cua[0-3].

Якщо не вказано додаткових параметрів, setserial виведе інформацію про тип UART (Universal Asynchronous Receiver Transmitter) послідовного порту (тобто 8250, 16450, 16550, 16550A і.т.д), апаратний порт вводу-виводу і лінію переривання (IRQ), швидкість передавання у бодах і деякі додаткові прапорці оперування.

Якщо вказано опцію -g, аргументи setserial розглядаються як список пристроїв для видруку їхньої характеристики.

Без опції -g, перший аргумент setserial розглядається як пристрій для зміни налаштувань або виводу виводу інформації, і будь-які додаткові аргументи програми вважаються параметрами, призначеними для цього пристрою.

В більшості випадків для зміни налаштувань послідовного пристрою необхідно привілеї користувача root. Деякі параметри послідовного порту можуть бути встановлені звичайними користувачами, тим не менш, ми звернемо на них увагу.

Опції

setserial розуміє наступні опції:

-a
Під час звітування про конфігурацію послідовного пристрою, вивести всю доступну інформацію.
-b
Під час звітування про конфігурацію послідовного пристрою, вивести лише підсумок здобутої інформації. Це може бути використаним для виводу повідомлень під час завантаження системи, при виконанню скрипта(ів) /etc/rc.
-G
Виводить інформацію про конфігурацію послідовного порту у формі, придатній для вживання як аргумент на командному рядку для setserial.
-q
Малослівний режим. setserial виведе менше рядків.
-v
Багатослівний режим. setserial виведе додаткову інформацію статусу.
-V
Показ версії програми.
-W
Здійснює загальну ініціалізацію переривань. Ця опція не є дійсною після ядер Linux 2.1 і вище.
-z
Обнулить будь-які послідовні прапорці перед встановленням нових. Ця опція пов'язана з опцією автоматичного збереження послідовних прапорців, використовуючи опцію -G.

Параметри

Наступні параметри можна призначити послідовному порту.

Всі значення аргументів вважаються десятковими, хіба були вжиті з передуючим "0x".

port номер_порту
Опція port встановлює порт вводу-виводу.
irq IRQ_номер
Встановлює номер апаратного переривання.
uart uart_тип
Ця опція використовується для встановлення типу UART. Дозволеними типами є none, 8250, 16450, 16550, 16550A, 16650, 16650V2, 16654, 16750, 16850, 16950 і 16954. Використання none внеможливлює порт.

Деякі внутрішні модеми стверджують, що мають тип "16550A UART з 1к буфером". Це не відповідає істині, вони в дійсності не сумісні з 16550A UART, натомість мають 16450 UART з 1k приймальним буфером для запобігання переповнювання приймача. Це важливо, оскільки вони не володіють передавальним FIFO. Автоматична конфігурація, ак правило, правильно визначає такі пристрої як 16450. Якщо ви спробуєте обійти цей параметр за допомогою uart, ви можете зіткнутися з відкинутими знаками під час передачі даних. Ці UART, часом мають додаткові вади, в таких випадках варто вживати skip_test.
autoconfig
Коли надано цей параметр, setserial попросить ядро спробувати автоматично конфігурувати послідовний порт. Порт вводу-виводу повинен бути наставлений правильно; ядро спробує визначити тип UART і, якщо додатково надано опцію auto_irq, Linux спробує автоматично визначити IRQ. Опція autoconfig повинна вживатись після того як було вказано port, auto_irq і skip_test.
auto_irq
Під час автоматично конфігурації, спробувати визначити IRQ. Ця можливість не гарантує завжди вірних результатів; деякі налагодження пристроїв можуть обманути ядро Linux-а. Як правило, безпечніше не вживати auto_irq можливість, натомість явно вказувати IRQ через опцію irg.
^auto_irq
Під час автоматичної конфігурації не намагатися автоматично визначити IRQ.
skip_test
Під час автоматичної конфігурації пропустити тестування UART. Деякі внутрішні модеми не включають сумісні з National Semiconductor типи UART, лише дешеві імітації передавача. Деякі з цих кумедних імітацій UART не мають цілковитої підтримки виявлення кільцевого режиму (loopback detection mode), використованого ядром для підтвердження, що дійсно існує передавач UART, прив'язаний до певної адреси, перед тим як конфігурувати прилад. Тож для деяких внутрішніх модемів вам необхідно буде використати цю опцію, щоб Linux зміг правильно ініціювати UART.
^skip_test
Під час автоматичної конфігурації не намагатися пропустити тестування UART.
baud_base бод-база
Ця опція встановлює базу частоти бод, що відповідає частоті годинника машини, поділеної на 16. Як правило, це значення дорівнює 115200, що одночасно являється найшвидшою частотою бод, яку передавачі UART підтримують.

<!== baud - the signaling rate of a line, which is the number of transitions \" (voltage or frequency changes) that are made per second. The term has \" often been erroneously used to specify bits per second. However, only at \" very low speeds is baud equal to bps; for example, 300 baud is the same \" as 300 bps. Beyond that, one baud can be made to represent more than one \" bit. For example, a V.22bis modem generates 1,200 bps at 600 baud. ==>

spd_hi
Використовувати 57.6kb коли додаток вимагає 38.4kb. Ця опція може бути вказана звичайним користувачем.
spd_vhi
Використовувати 115kb коли додаток вимагає 38.4kb. Ця опція може бути вказана звичайним користувачем.
spd_shi
Використовувати 230kb коли додаток вимагає 38.4kb. Ця опція може бути вказана звичайним користувачем.
spd_warp
Використовувати 460kb коли додаток вимагає 38.4kb. Ця опція може бути вказана звичайним користувачем.
spd_cust
Використати власний дільник, вказаний як параметр опції divisor для встановлення швидкості, коли додаток вимагає 38.4kb. У цьому випадку, частота бод буде bod_base поділене на divisor. Ця опція може бути вказана звичайним користувачем.
spd_normal
Використовувати 38.4kb коли додаток вимагає 38.4kb. Ця опція може бути вказана звичайним користувачем.
divisor дільник
Ця опція вказує власний дільник, що використовується, якщо було вибрано опцію spd_cust і послідовний порт було встановлено до 38.4kb додатком. Ця опція може бути вказана звичайним користувачем.
sak
Встановити клавішу переривання для безпечного сигналу уваги (Secure Attention Key).
^sak
Внеможливлює безпечний сигнал уваги (Secure Attention Key).
fourport
Конфігурує порт як для картки AST Fourport.
^fourport
Внеможливлює AST Fourport конфігурацію.
"close_delay " пауза
Вказує проміжок часу у сотих долях секунди під час якого DTR (Data Terminal Ready) повинен залишатись опущеним на послідовній лінії після того як викликаючий пристрій завершив роботу і до того як блокований пристрій-відповідач підніме DTR знову. Значенням за замовчуванням для цієї опції є 50, тобто пів-секунди. \" DTR - (Data Terminal Ready) An RS-232 signal sent from the computer or \" terminal to the modem indicating that it is able to accept data. Contrast \" with DSR. (http://computing-dictionary.thefreedictionary.com/DTR)
closing_wait пауза
Вкаже проміжок часу у сотих долях секунди, який ядро повинне зачекати для передачі даних через послідовний порт, до того як закрити його. Якщо вказано "none", не буде жодної затримки перед закриттям. Якщо вказано "infinite", ядро очікуватиме необмежену кількість часу на те, щоб дані, що знаходяться у буфері, були передані. Значенням за замовчуванням є 3000, або 30-секундна затримка. Це значення, як правило, є прийнятним для більшості пристроїв. Якщо встановити занадто велику перерву, послідовний порт може зависнути на довгий період у випадку обриву під'єднання і наявності даних у буфері. І навпаки, якщо занадто коротку - існує ризик втрати частини переданих даних. У випадку надзвичайно повільних пристроїв, варто збільшити значення closing_wait.
session_lockout
Заблокує від доступу порт (/dev/cuaXX) для різних сесій. Іншими словами, як тільки процес відкрив порт, не дозволяє іншим процесам, з відмінним ідентифікатором ID відкривати цей порт доти, доки його не замкнуто першим процесом.
^session_lockout
Не блокувати доступ до викликаючого порту для різних сесій.
pgrp_lockout
Заблокує доступ до викликаючого порту (/dev/cuaXX) для різних груп процесів. Іншими словами, як тільки процес відкрив порт, не дозволяє іншим процесам з відмінної групи процесів відкривати цей порт доти, доки його не замкнуто першим процесом.
^pgrp_lockout
Не блокувати доступ до викликаючого порту для різних груп процесів.
hup_notify
Сповістить процес, блокований на відкритті лінії відповідача, про завершення вживання іншим процесом лінії виклику (або через її закриття, або через сигнал відбою), повертаючи EAGAIN функції open.

Цей параметр застосовується з процесами getty, заблокованими на лінії відповідача послідовного порту. Це дозволяє getty перезаладувати модем (який може мати змінену конфігурацію іншими програмами, що використовують пристрій виклику) перед тим як заблокувати лінію для open знову.
^hup_notify
Не сповіщати процес, заблокований під час відкриття лінії відповідача, що пристрій виклику здійснив відбій.
split_termios
Розглядати окремо налаштування termios, використовувані пристроєм виклику і налаштування termios пристроїв-відповідачів.
^split_termios
Використовувати ту саму структуру termios для обох, портів виклику і потрів-відповідачів. Ця опція використовується за замовчуванням.
callout_nohup
Якщо саме цей послідовний порт відкрито як пристрій виклику, не здійснювати відбій для tty, коли виявлення носія скасовано (відкинуто).
^callout_nohup
Не нехтувати відбоєм для tty, коли послідовний порт відкрито як пристрій виклику. Звичайно, HUPCL прапорець для termios повинен бути включеним для можливості відбою.
low_latency
Зменшити затримку приймання даних на послідовному порті за рахунок збільшення вживання процесору. (Як правило існує 5-10 мілісекунд затримки перед тим як символи посилаються до лінійного алгоритму, щоб зменшити навантаження). Цю опцію вимкнено за замовчуванням, але деякі додатки реального часу можуть вимагати цього.
^low_latency
Оптимізувати ефективність обробки процесором знаків послідовного порту за рахунок затримки на 5-10 мілісекунд до обробки. Цю опцію включено за замовчуванням.

Конфігурація послідовного порту

Важливо зауважити, що setserial лише підказує ядру, де воно повинно шукати порти вводу-виводу і лінії IRQ певного послідовного порту. Ця програма не налагоджує прилад, саму послідовну картку, вказуючи певний порт вводу-виводу. Для того, щоб здійснити це, вам необхідно фізично запрограмувати картку, як правило через переключення перемичок або перемикача DIP.

Цей розділ надасть вам невелику допомогу у вирішенню того як би вам хотілось налагодити послідовні порти.

Ось відповідність портів Лінукса зі "стандартними DOS":

 /dev/ttys0 (COM1), port 0x3f8, irq 4
 /dev/ttys1 (COM2), port 0x2f8, irq 3
 /dev/ttys2 (COM3), port 0x3e8, irq 4
 /dev/ttys3 (COM4), port 0x2e8, irq 3


З-за обмежень архітектури шини AT/ISA, як правило, лінія IRQ не може поділятися між двома або більше послідовними портами. Якщо ви спробуєте здійснити це, порти можуть виявитись ненадійними, у випадку одночасного використання обох. Це обмеження обійшли, так називаємі, багатопортні послідовні картки, яких спроектовано, щоб вони могли поділяти той самий IRQ між багатьма портами. Серед підтримуваних Лінуксом карток можна назвати AST FourPort, Accent Async, Usenet Serial II, Bocaboard BB-1004, BB-1008, BB-2016 і HUB-6.

Вибір альтернативного IRQ дещо ускладнено тим що більшість з них вже використано. Наступне є переліком вибору IRQ у DOS: .IP

 IRQ 3: COM2
 IRQ 4: COM1
 IRQ 5: LPT2
 IRQ 7: LPT1

Більшість користувачів можуть вибрати IRQ 5 за умови, що активним є лише один паралельний порт у комп'ютері. Також можна вибрати IRQ 2 (те саме що IRQ 9), хоча цей переривач часом використовується сітьовими картками і зрідка картками VGA. Якщо ваша карка VGA використовує цей IRQ, спробуйте внеможливити його для неї, тож переривач можна буде вживати з іншими пристроями.

Іншими можливими лініями IRQ можуть бути 3, 4 і 7, хоча навіть вони можуть вже бути зайнятими іншими послідовними або паралельними портами. Якщо ваша карка має 16-бітне сполучення, і підтримує вищі IRQ, тоді можна використати IRQ 10, 11, 12 і 15.

На машинах класу AT, IRQ 2 сприймається як IRQ 9, і Лінукс саме так і інтерпретує його.

Решта IRQ, крім 2 (9), 3, 4, 5, 7, 10, 11, 12 і 15 не повинні використовуватись, оскільки ці переривання належать іншим пристроям і не можуть, як правило, бути поміняними. Ось стандартні призначення номерів IRQ: .RS

IRQ 0
Канал датчика часу 0
IRQ 1
Клавіатура
IRQ 2
Каскад для контролера 2
IRQ 3
Послідовний порт 2
IRQ 4
Послідовний порт 1
IRQ 5
Паралельний порт 2 (Резервний у випадку PS/2)
IRQ 6
Дисковод гнучкого диску
IRQ 7
Паралельний порт 1
IRQ 8
Годинник реального часу
IRQ 9
Перенаправлене до IRQ 2
IRQ 10
Вільний
IRQ 11
Вільний
IRQ 12
Вільний (Допоміжний пристрій у випадку PS/2)
IRQ 13
Математичний сопроцесор
IRQ 14
Контролер жорсткого диску
IRQ 15
Вільний

Конфігурація багатопортовиг карток

Деякі послідовні багатопортові картки, що поділяють багато портів на одному IRQ, використовують один або більше портів для вказівки, чи очікують певні порти обробки. Якщо ваша картка є однією з таких, вам потрібно використати цю рису, щоб запобігти можливого блокування, при западанні IRQ.

Щоб уможливити такі порти, надайте опцію set_mutiport з додатковими параметрами для багатопортових карток. Ці параметри повинні вказувати який саме з портів є контрольним, маску, що визначає, які з бітів у регістрі є значущими, і накінець параметр match, який визначає, з чим значущі біти у регістрі співпадатимуть, коли вся робота зроблена і жодні порти не знаходяться у стані очікування.

Можна вказувати до чотирьох таких порт/маска/match комбінацій. Перша з цих комбінацій повинна бути задана як port1, mask1 і match1. Друга - port2, mask2 і match2 і.т.д. Щоб вимкнути цю багатопортову перевірку, встановіть port1 до нуля.

Для того, щоб бути в змозі побачити поточні налаштування багатопортових карток, задайте get_multiport на командному рядку.

Ось типові параметри для деяких послідовних багатопортових карток:

AST FourPort
port1 0x1BF mask1 0xf match1 0xf
Boca BB-1004/8
port1 0x107 mask1 0xff match1 0
Boca BB-2016
port1 0x107 mask1 0xff match1 0

port2 0x147 mask2 0xff match2 0

Конфігурація Hayes ESP

Знаряддям setserial може також налагодити порти на послідовній картці Hayes ESP (Enhanced Serial Port).

Наступні параметри чинні для портів ESP:

rx_trigger
Це випускна межа (у байтах) приймального FIFO. Більші значення означатимуть менше процесорних переривань і отже покращену ефективність; тим не менш, завищене значення може призвести до втрати даних. Чинними значеннями є 1 до 1023.
tx_trigger
Це випускна межа (у байтах) передавального FIFO. Більші значення означатимуть менше процесорних переривань і отже покращену ефективність; тим не менш, завищене значення може призвести до погіршення ефективності передачі. Чинними значеннями є 1 до 1023.
flow_off
Це межа (у байтах), при якій порт ESP повідомить віддаленого передавача припинити відправку. Чинними значеннями є 1 до 1023. Це значення повинне бути більшим за rx_trigger і tx_trigger.
flow_on
Це рівень (у байтах), при якій порт ESP повідомить віддаленого передавача відновити відправку після зупинки. Чинними значеннями є 1 до 1023. Це значення повинне бути меншим за rx_trigger і tx_trigger.
rx_timeout
Час, який порт ESP зачекає після отримання останнього знаку перед тим як сигналізувати через переривач. Чинними значеннями є 0 до 255. Завищене значення призведе до сповільнення, тоді як занадто низьке викличе зайві переривання.

Вади

ПОПЕРЕДЖЕННЯ: Конфігурація послідовного порту з неправильним портом вводу-виводу може завісити вашу машину.

Файли

/etc/rc.local
/etc/rc.serial

Дивіться також

tty(4), ttys(4), kernel/chr_drv/serial.c

Автори

Оригінальна версія setserial була написана Rick Sladkey (jrs@world.std.com), і модифікована Michael K. Johnson (johnsonm@stolaf.edu). Ця версія була переписана наново Theodore Ts'o (tytso@mit.edu) у 1993 році.

Особисті інструменти