Любой поиск в сети о параллельном порте выдает огромный массив информации. Так как нашей целью в этой главе является описание модулей Linux, мы коснемся только основ этого устройства.
В этом проекте мы будем экспериментировать на х86-системе. Структуру драйвера легко портировать на PowerPC; для этого нужно просто обратиться к другому устройству на уровне ввода-вывода. Несмотря на то что параллельный порт существует на многих встроенных реализациях PowerPC, он слабо распространен на десктопах (таких, как G4 и G5).
Для настоящего общения с регистрами параллельного порта мы используем inb () и outb(). Мы легко можем использовать readb() и writebO, доступные в io.h на обеих архитектурах - х86 и РРС. Макросы readb () и writeb () являются хорошим выбором для аппаратно-независимой реализации, так как они обращаются к низкоуровневым функциям ввода-вывода, используемым на х86 и РРС.
Параллельный порт на системах х86 обычно является частью устройства Superio или может быть отдельной (PCI) картой, добавляемой в систему. Если вы перейдете на страницу настройки BIOS, мы увидите, что параллельный порт (порты) отображается в системное пространство ввода-вывода. Для систем х86 параллельный порт может располагаться по адресам 0x278,0x378 или ОхЗЬс и использует IRQ 7. Это базовый адрес устройства. У параллельного порта есть три 8-битовых регистра, начинающихся с базового адреса, которые показаны в табл. 5.2. Для примера мы будем использовать базовый адрес 0x378.
Таблица 5.2. Регистры параллельного порта
Бит
Адрес порта ввода-вывода
Регистр состояния Busy* АСК Paper Select Error
(ввод) end
Регистр данных D7 D6 D5 D4 D3 D2 Dl DO 0x378
(вывод) (base+0)
Управляющий регистр (вывод)
0x379 (base+1)
Select' Init Auto Strobe 0x379
feed (base+2)
Низкий активный сигнал.
Регистр данных содержит 8 бит для записи со штырьков разъема. Регистр состояния содержит входные сигналы с разъема.
Управляющий регистр посылает специфические управляющие сигналы на разъем. Разъем параллельного порта имеет 25-пиновый D-порт (DB-25). Табл. 5.3 демонстрирует, как эти сигналы передаются на отдельные штырьки разъема.
если вас не смущает вероятность выхода из строя параллельного порта или всей материнской платы.
Мы настойчиво рекомендуем использовать карту адаптера параллельного порта для этого и других экспериментов
Для операций ввода мы используем переключатель D7 (штырек 9), для подтверждения (штырек 10) и D6 (штырек 8), для занято (штырек 11) с резисторами по 470 Ом. Для мониторинга вывода мы будем использовать индикаторы LED с данными штырьков с DO по D4 с резисторами максимального ограничения 470 Ом. Для этой цели можно использовать старый кабель от принтера или 25-пиновый разъем D-Shell «папа» из ближайшего магазина электроники.
ПРИМЕЧАНИЕ. Хороший программист уровня регистров всегда должен знать как можно больше об аппаратном обеспечении, с которым он работает. Сюда входит отыскание перечня данных для вашего драйвера параллельного порта. В этом перечне данных вы можете найти текущие ограничения/утечки драйвера. На многих сайтах в сети выложены интерфейсные решения для работы с параллельным портом, включая изолированные, расширяемые системы сигналов и резисторов усиления и ослабления. И несмотря на то что они находятся за пределами рассмотрения данной книги, вам стоит с ними ознакомиться самостоятельно.
Мы настойчиво рекомендуем использовать карту адаптера параллельного порта для этого и других экспериментов
Для операций ввода мы используем переключатель D7 (штырек 9), для подтверждения (штырек 10) и D6 (штырек 8), для занято (штырек 11) с резисторами по 470 Ом. Для мониторинга вывода мы будем использовать индикаторы LED с данными штырьков с DO по D4 с резисторами максимального ограничения 470 Ом. Для этой цели можно использовать старый кабель от принтера или 25-пиновый разъем D-Shell «папа» из ближайшего магазина электроники.
ПРИМЕЧАНИЕ. Хороший программист уровня регистров всегда должен знать как можно больше об аппаратном обеспечении, с которым он работает. Сюда входит отыскание перечня данных для вашего драйвера параллельного порта. В этом перечне данных вы можете найти текущие ограничения/утечки драйвера. На многих сайтах в сети выложены интерфейсные решения для работы с параллельным портом, включая изолированные, расширяемые системы сигналов и резисторов усиления и ослабления. И несмотря на то что они находятся за пределами рассмотрения данной книги, вам стоит с ними ознакомиться самостоятельно.