реклама на сайте
подробности

 
 
> Ядро 2.6 (uClinux), Запуск сетевого драйвера
Boom-Zoom
сообщение Jun 8 2012, 17:25
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 10-05-12
Пользователь №: 71 762



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

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

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

Сообщение отредактировал Boom-Zoom - Jun 8 2012, 17:23
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  kernel_config_.txt ( 19.04 килобайт ) Кол-во скачиваний: 69
Прикрепленный файл  dreiver_source_smc91x.txt ( 62.3 килобайт ) Кол-во скачиваний: 134
Прикрепленный файл  kernel_parameters.txt ( 91.31 килобайт ) Кол-во скачиваний: 10
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
Idle
сообщение Jun 8 2012, 18:06
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



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


а modinfo что говорит про параметры?
Go to the top of the page
 
+Quote Post
Boom-Zoom
сообщение Jun 8 2012, 18:41
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 10-05-12
Пользователь №: 71 762



Цитата(Idle @ Jun 8 2012, 22:06) *
а если 'insmod smc91x.ko io=0x300 irq=6 nowait=0' ?

Пишет что неверный символ, по разному пробовал подставлять
modinfo- не знал про такую утилиту, попробую завтра
Go to the top of the page
 
+Quote Post
kurtis
сообщение Jun 8 2012, 19:35
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



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

Зачем?

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

Если модуль линкуется с ядром, то проверить вызов функции можно переда ядру ключ initcall_debug. Еще для профилактики можно передавать loglevel=8
Go to the top of the page
 
+Quote Post
Boom-Zoom
сообщение Jun 8 2012, 19:46
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 10-05-12
Пользователь №: 71 762



то ли в книжке про ядро, то ли в статье из инета такой обобщённый пример настройки модуля был
Go to the top of the page
 
+Quote Post
Boom-Zoom
сообщение Jun 16 2012, 07:20
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 10-05-12
Пользователь №: 71 762



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

Сообщение отредактировал Boom-Zoom - Jun 16 2012, 07:21
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016