Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ядро 2.6 (uClinux)
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
Boom-Zoom
Всем привет! Мне необходимо пондять сеть на микро линуксе, проблема заключается в том что драйвер не стартует. Название драйвера 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 в соответсвии с доком на параметры моего ядра, т.к. моему драйверу надо три параметра то лишние откинутся (я так предпологаю, точно не уверен)

Суть в том что драйвер молчит в обоих случаях. Подскажите куда копать? Может в ядре поддержу чегото ещё включить/убрать?
ПРИЛОЖЕНИЯ:

На скриншоте лог с нормальной загрузкой драйвера при старте образа от Альтеры
Idle
а если 'insmod smc91x.ko io=0x300 irq=6 nowait=0' ?


а modinfo что говорит про параметры?
Boom-Zoom
Цитата(Idle @ Jun 8 2012, 22:06) *
а если 'insmod smc91x.ko io=0x300 irq=6 nowait=0' ?

Пишет что неверный символ, по разному пробовал подставлять
modinfo- не знал про такую утилиту, попробую завтра
kurtis
Цитата
далее в файле modprobe.conf добавляю строку alias eth0 smc91x.

Зачем?

Поставте максимальный уровень логирования, в исходнике есть такие строчки
/* Debugging level *
#ifndef SMC_DEBUG
#define SMC_DEBUG 8 // было 0, заменил на 8
#endif

Если модуль линкуется с ядром, то проверить вызов функции можно переда ядру ключ initcall_debug. Еще для профилактики можно передавать loglevel=8
Boom-Zoom
то ли в книжке про ядро, то ли в статье из инета такой обобщённый пример настройки модуля был
Boom-Zoom
Драйвер не работал из за того что в конфиге железа и в файле config.c были приняты разные соглашения об именовании диапазона ВВ контроллера и прерывания, привёл дефайны в соответствие.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.