Jump to content

    
Sign in to follow this  
Boom-Zoom

Ядро 2.6 (uClinux)

Recommended Posts

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

Edited by Boom-Zoom

Share this post


Link to post
Share on other sites
а если 'insmod smc91x.ko io=0x300 irq=6 nowait=0' ?

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

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

Share this post


Link to post
Share on other sites
далее в файле modprobe.conf добавляю строку alias eth0 smc91x.

Зачем?

 

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

/* Debugging level *

#ifndef SMC_DEBUG

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

#endif

 

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

 

Share this post


Link to post
Share on other sites

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

Edited by Boom-Zoom

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this