LINUX.ORG.RU

Не работает outw() на параллельном порте.


0

0

Есть два компьютера.
Настройки BIOS для параллельного порта совпадают: EPP, 0x378, IRQ7.
Конфигурация kernel на обоих системах идентичны, за исключением специфических
настроек (IDE/SCSI, чипсеты, отличия в версии ядра).
Версия ядра:
на работающем 2.6.16
на неработающем 2.6.17

Порты на обоих компьютерах исправны (проверено в другой ОС ;))

В одном случае вывод в параллельный порт идет, а в другом - нет!

Не работает даже на примитивной програмке вида (запускается из под root'а):

#define LPT_BASE    0x378
#define DATA_BUS    LPT_BASE+4

int main(int argc, char *argv[]){
    if(ioperm(LPT_BASE, 8, 1) == -1){
        perror("ioperm");
        exit(1);
    }
    while(1){
        outw(0xAAAA, DATA_BUS);
        outw(0x5555, DATA_BUS);
    }
}
Доступ к портам разрешается, а результата нет. Примерно такой же код, только
для вывода на клавиатурную индикацию работает.

Что я мог упустить?
Кстати, в kernel на работающем компе не включена поддержка параллельного порта.
Игрался с этой настройкой на неработающем - никакого результата.
Конфигурация kernel на минимум.
Мат платы (вдруг наведет на мысль):
на работающем ASUS P4PE-X/TE
на неработающем GA-8I915ME
Может нужно включить поддержку какого нибудь Super-IO, или чего либо в этом роде?

Буду очень благодарен за помощь!

Не используйте прямой доступ к портам. используйте /dev/parport. Ссылка на документацию: people.redhat.com/twaugh/parport/html/ppdev.html

platerx
()

Попробуй вместо ioperm использовать iopl У меня кажись тоже после перехода на 2.6.17 перестал работать ioperm. Похожие симптомы.

smartly ★★★
()
Ответ на: комментарий от platerx

У Вас видимо загружен модуль parport, сделаёте rmmod, всё должно заработать.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.