|
| ||||||||||||
| ||||||||||||
9. Я могу использовать более, чем два последовательных устройства?Вы не должны читать этот раздел, если не хотите использовать три или более последовательных устройства ... (принимая, что у вас нет многопортовой платы). Если у вас есть другой запасной последовательный порт, то да, вы можете. Число последовательных портов, которые вы можете использовать, ограничено числом прерываний (IRQs) и адресов портов ввода-вывода. Это - ограничение не системы Linux, а ограничение шины PC. Каждому последовательному устройству должны быть назначены адрес и собственное прерывание. Если два устройства совместно используют одно и тоже прерывание, то они могут нормально работать, при условии, что эти два устройства не будут действовать одновременно. (В большинстве случаев, две программы не должны даже выполняться одновременно.) Последовательное устройство может быть последовательным портом, внутренним модемом или многопортовой последовательной платой. Многопортовые последовательные платы специально разработаны для получения множества последовательных портов, которые совместно используют одно и то же IRQ для всех последовательных портов на плате. Linux получает данные из них, используя различные адреса ввода-вывода для каждого порта на плате.
9.1 Выбор прерываний последовательных устройствОбычный PC имеет ttyS0 и ttyS2 на IRQ 4, и ttyS1 и ttyS3 на IRQ 3. Вы можете увидеть, какие IRQs используются, напечатав: setserial /dev/ttyS2, и т.д. Просмотр /proc/interrupts покажет некоторых из них. Чтобы использовать более, чем два последовательных устройства, вы должны будете переназначить прерывания. Хороший подход состоит в переназначении прерывания для параллельного порта. В PC обычно для ваших параллельных портов установлены прерывания IRQ 5 и IRQ 7, но мало кто использует два параллельных порта. Вы можете переназначать одно из прерываний на последовательное устройство, и прекрасно использовать оставшийся параллельный порт. чтобы сделать это, вам нужна будет программа setserial. Кроме того, вы должны поиграть с перемычками на матернской плате, свериться с документацией на вашу плату. Установите перемычки на IRQ, который вы хотите назначить каждому порту. Вы должны установить все так, чтобы имелось одно и только одно прерывание для каждого последовательного устройства. Вот как Грэг устанавливает его в /etc/rc.d/rc.local - вы должны сделать это в файле, который выполняется после запуска:
Стандартные назначения IRQ:
В действительности нет никакого "правильного способа" назначения прерывания. Только удостоверьтесь, что оно не используется материнской платой или любыми другими платами. Номера прерываний 2, 3, 4, 5 или 7 - это хороший выбор. ``не назначен" означает, что в настоящее время ничего стандартно не использует эти IRQS. Также обратите внимание, что IRQ 2 - это тоже, что и IRQ 9. Вы можете вызывать его или как 2 или как 9, последовательный драйвер очень понятливый. Если у вас последовательная плата с 16-разрядным разъемом шины, то вы можете также использовать IRQ 10, 11, 12 или 15. Только удостоверьтесь, что вы не используете IRQ 0, 1, 6, 8, 13 или 14! Они используются вашей материнской платой. Вы модете заработать множество неприятностей, используя эти IRQ не по назначению. Когда вы закончите, посмотрите /proc/interrupts и удостоверьтесь, что конфликтов нет.
9.2 Установка адресов последовательных устройствЗатем, вы должны установить адрес порта. Проверьте в руководстве по вашей плате установки перемычек. Подобно прерываниям, одно последовательное устройство может иметь только один адрес. Ваши порты обычно будут приходить с такими установками:
Выберите адреса, которые вы хотите использовать для каждого последовательного устройства и соответственно установите перемычки. Мой модем установлен на ttyS3, мышь на ttyS0, а мой терминал на ttyS2. Когда вы перезагрузитесь, Linux должен увидеть ваши последовательные порты по тем адресам, на которые вы их установили. IRQ, который видит Linux, может не соответствовать IRQ, который вы устанавливаете перемычками. Не волнуйтесь об этом. Linux не делает попыток определить IRQ при загрузке, потому что определение IRQ рисковано и может быть неправильным. Используйте setserial, чтобы сообщить Linux, какое IRQ используется портом. Вы можете проверить /proc/ioports, чтобы увидеть, какие адреса порта ввода-вывода используются после загрузки Linux.
Вперед Назад Содержание |
|
CITForum © 1997–2025