Перейти к содержанию
    

Ядро 2.6 (uClinux)

Всем привет! Мне необходимо пондять сеть на микро линуксе, проблема заключается в том что драйвер не стартует. Название драйвера 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 в соответсвии с доком на параметры моего ядра, т.к. моему драйверу надо три параметра то лишние откинутся (я так предпологаю, точно не уверен)

 

Суть в том что драйвер молчит в обоих случаях. Подскажите куда копать? Может в ядре поддержу чегото ещё включить/убрать?

ПРИЛОЖЕНИЯ:

 

На скриншоте лог с нормальной загрузкой драйвера при старте образа от Альтеры

post-71762-1339175646_thumb.jpg

kernel_config_.txt

dreiver_source_smc91x.txt

kernel_parameters.txt

Изменено пользователем Boom-Zoom

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а если 'insmod smc91x.ko io=0x300 irq=6 nowait=0' ?

Пишет что неверный символ, по разному пробовал подставлять

modinfo- не знал про такую утилиту, попробую завтра

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

далее в файле modprobe.conf добавляю строку alias eth0 smc91x.

Зачем?

 

Поставте максимальный уровень логирования, в исходнике есть такие строчки

/* Debugging level *

#ifndef SMC_DEBUG

#define SMC_DEBUG 8 // было 0, заменил на 8

#endif

 

Если модуль линкуется с ядром, то проверить вызов функции можно переда ядру ключ initcall_debug. Еще для профилактики можно передавать loglevel=8

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

то ли в книжке про ядро, то ли в статье из инета такой обобщённый пример настройки модуля был

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Драйвер не работал из за того что в конфиге железа и в файле config.c были приняты разные соглашения об именовании диапазона ВВ контроллера и прерывания, привёл дефайны в соответствие.

Изменено пользователем Boom-Zoom

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...