Boom-Zoom 0 8 июня, 2012 Опубликовано 8 июня, 2012 (изменено) · Жалоба Всем привет! Мне необходимо пондять сеть на микро линуксе, проблема заключается в том что драйвер не стартует. Название драйвера smc91x. Сетку поднимаю на отладочной плате 2C35 с ПЛИС CycloneII фирмы Альтера, разработчик рекомендует его делать встроеным (такой способ приведё у них в WiKi и на форуме), но у меня ничего не выходит, так же как и с модулем. Компилируя модуль, драйвер компилится, на выходе получается файл smc91x.ko. Кладу его в папку /usr (мне так удобне), далее в файле modprobe.conf добавляю строку alias eth0 smc91x. В заголовке исходника драйвера написано что ему нужно передать три аргумента: базовый адрес, прерывание и время ожидания. Добавляю в modprobe.conf строку options smc91x io=0x300(подсмотрел из загрузки линукса скомпилинного производителем) irq=6 (знаю точно) nowait=0 (по умолчанию). Затем в папке /usr делаю depmod -a smc91x.ko он у меня ругается на расположение файла, переношу его в /lib/modules/2.6.34 делаю depmod -a smc91x.ko. Никакого вывода не происходит (пробовал разные ключи), я так понял что зависимостей нет? Делаю modprobe smc91x в ответ SEGV, так же был вариант - не поддерживаемый тип файла Пробую insmod smc91x.ko - драйвер добавляется lsmod module smc91x size 21706 used 0 Пробую ifconfig eth0 up в ответ SIOCGIFFLAGS: no such device В module_init и ещё несколько функций драйвера добавил свой printk, но не один ничего не вывел. Такое ощущение что он грузится в память, но управление ему не передается. Если делать драйвер встроенным всё компилится, в файле который содержит названия встроенных модулей (не помню его название) имя нужного драйвера есть. Передаю параметры через kernelargs netdev=6,0x300,0x30f,0,eth0 в соответсвии с доком на параметры моего ядра, т.к. моему драйверу надо три параметра то лишние откинутся (я так предпологаю, точно не уверен) Суть в том что драйвер молчит в обоих случаях. Подскажите куда копать? Может в ядре поддержу чегото ещё включить/убрать? ПРИЛОЖЕНИЯ: На скриншоте лог с нормальной загрузкой драйвера при старте образа от Альтеры kernel_config_.txt dreiver_source_smc91x.txt kernel_parameters.txt Изменено 8 июня, 2012 пользователем Boom-Zoom Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Idle 0 8 июня, 2012 Опубликовано 8 июня, 2012 · Жалоба а если 'insmod smc91x.ko io=0x300 irq=6 nowait=0' ? а modinfo что говорит про параметры? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Boom-Zoom 0 8 июня, 2012 Опубликовано 8 июня, 2012 · Жалоба а если 'insmod smc91x.ko io=0x300 irq=6 nowait=0' ? Пишет что неверный символ, по разному пробовал подставлять modinfo- не знал про такую утилиту, попробую завтра Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kurtis 0 8 июня, 2012 Опубликовано 8 июня, 2012 · Жалоба далее в файле modprobe.conf добавляю строку alias eth0 smc91x. Зачем? Поставте максимальный уровень логирования, в исходнике есть такие строчки /* Debugging level * #ifndef SMC_DEBUG #define SMC_DEBUG 8 // было 0, заменил на 8 #endif Если модуль линкуется с ядром, то проверить вызов функции можно переда ядру ключ initcall_debug. Еще для профилактики можно передавать loglevel=8 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Boom-Zoom 0 8 июня, 2012 Опубликовано 8 июня, 2012 · Жалоба то ли в книжке про ядро, то ли в статье из инета такой обобщённый пример настройки модуля был Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Boom-Zoom 0 16 июня, 2012 Опубликовано 16 июня, 2012 (изменено) · Жалоба Драйвер не работал из за того что в конфиге железа и в файле config.c были приняты разные соглашения об именовании диапазона ВВ контроллера и прерывания, привёл дефайны в соответствие. Изменено 16 июня, 2012 пользователем Boom-Zoom Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться