(реальный irq) vs (compiled in kernel irq) under FreeBSD
помню в Linux 1.2 тоже надо было указывать irq при компиляции, настройка звука занимала у меня недели
ed%d: device timeout Indicates that an expected transmitter interrupt
didn't occur. Usually caused by an interrupt conflict with another card
on the ISA bus. This condition could also be caused if the kernel is
configured for a different IRQ channel than the one the card is actually
using. If that is the case, you will have to either reconfigure the card
using a DOS utility or set the jumpers on the card appropriately.
цитата из мана про мою трудность. Странно как-то пользоваться некой досовской утилиткой при наличии полноценной операционки. Еще я где-то видел рекомендацию воспользоваться инфой из виндового менеджера устройств для настройки своего юникса (сам я не раз так делал)
а что странного в том, что драйвер поддерживает не все функции устройства?
ещё бывает ISA PnP, иногда работает, про поддержку в *BSD не знаю
а на каких прерываниях вероятнее всего будет висеть сетевая карточка?
11
Если она у тебя ISAшная, то не еби себе мозг - выкинь ее из окна. Если она PCI, то не нужно прописывать никаких прерываний, просто device ed.
Вот это BSD-подход :-)
А ты точно не перепутал?
Что-то я "побыстрому" в линте не нашёл ни одной PCMCIA (да и PCI) карточки с ником ed...
не перепутал, уж можешь мне поверить. Она NE2000 compatible и требует как раз ed драйвер. Я фрю на ноут ставил с ее помощью по ftp
Тогда в ядре должно быть device ed, и должен быть запущен pccardd.
Постоянный device timeout, что значит, где-то конфликт прерываний (так написано в man 4 ed). Я не понимаю, что там " у ней внутре" происходит, потому и не могу поправить.
На самом деле device timoeout "вылазит" не только из-за конфликта прерываний. Например на коаксиальной ne2000 он вылазит когда коаксиальный сегмент не терминирован.
Прямо сейчас в ядро вкомпиляны:
device miibus
device ed
вторая строка без первой не хочет компиляться.
Еще пробовал писать такую строчку:
device ed0 at isa? port 0x280 irq 10 iomem 08000
Не только с 10 прерыванием. Также добаляю строчку
pccardd_flags=' -i 10'
в /etc/rc.conf , где ' -i 10' номер прерывания.
pccardd_flags=""
Только что заново вставил в ядро
device ed
Теперь при загрузке выдается следующее:
__________________________________
config> en ed0
No such device ed0
и т.д.
__________________________________
Наскока я понял, эта команда берется из /boot/kernel.conf.
Если в ядре исправить device ed на
______________________________________________
device ed0 at isa? disable port 0x280 irq 5 iomem 08000
______________________________________________
то такая ошибка выдаваться не будет, и устройство ed0 появится.
Вообще, что это за файл такой /boot/kernel.conf? Похоже, он не меняется при переустановке ядра. Я пробовал менять в нем некоторые строчки руками, например:
ir ed0 5 #почему-то мне кажется, что тут имеется ввиду прерывание
Убери эту строчку из /boot/kernel.conf.
device pcic0 at isa?
device pcic1 at isa?
device card
А что выдает pccardd -d ?
Подводя итог, на текущий момент настройки следующие.
kernel
device miibus
device ed
device card
device pcic0 at isa? irq 0 port 0x3e0 iomem 00000
device pcic1 at isa? irq 0 port 0x3e2 iomem 04000 disable
/etc/rc.conf
pccard_enable="YES"
pccard_ifconfig="DHCP"
pccardd_flags=""
dmesg говорит
pccard: card inserted, slot 0
pccard: card removed, slot 0
pccard: card inserted, slot 0
ed0 at port ....... irq 11 slot 0 on pccard0
ed0: address ..............., type NE2000 (16bit)
ed0: device timeout
ed0: device timeout
...
> pccardd -d
Code 240 not found
Code 240 not found
code Unknown ignored
что, наверное, естесственно, т.к. этот демон уже запущен.
Короче, dmesg говорит, что все pccard слоты найдены и все в порядке.
А сетевушка на витой паре или на коаксиале?
на витой. Сам кабель и дырку в свитче я уже проверил.
Нужно было убрать из /etc/rc.conf
pccard_ifconfig="DHCP"
и вставить
ifconfig_ed0="DHCP"
Текущие (работающие) настройки:
kernel
device miibus
device ed
device card
device pcic0 at isa? irq 0 port 0x3e0 iomem 00000
device pcic1 at isa? irq 0 port 0x3e2 iomem 04000
/etc/rc.conf
pccard_enable="YES"
pccardd_flags=""
ifconfig_ed0="DHCP"
И еще я убрал все упоминания о ed из /boot/kernel.conf
Огромное спасибо Glebius and за их внимание и помощь!
Часть информации была почерпнута из списков рассылки freebsd-freebsd.org и freebsd-freebsd.org
Оставить комментарий
aliska12
В результате моих криворуких экспериментов столкнулся с такой проблемой. Реальное прерывание, на котором висит сетевая карта не совпадает с тем прерыванием, что вкомпиляно в ядро. Сложность в том, чтобы узнать это самое реальное прерывание. Есть ли под FBSD какие-нить утилитки, которые сумеют это дело отследить?Карточка использует драйвер ed(4) и представляет из себя плату pcmcia для ноутбука.
dmesg ничего интересного на эту тему не показывает, он лишь пишет прерывание pci-контроллера общее для всех подключенных к pci плат.
Я с этой проблемой уже сталкивался и точно знаю, что все дело в описанном выше конфликте. К сожалению, в прошлый раз я ее решил грубой переустановкой системы и указанием правильных опций sysinstallу.