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

 
 
> Драйвер MMC для uClinux, снова.
3.14
сообщение May 21 2006, 08:59
Сообщение #1


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Решил я воспользоваться драйвером MMC/SD карты "немца" для uClinux.
Вот только беда, похоже что он для ядра 2.6.
Не подскажите как мне его с ядром 2.4 подружить.
Пока при компиляции получаю ошибки:
Код
mmc.c: In function `mod_init':
mmc.c:383: error: too few arguments to function `register_blkdev'
mmc.c:394: error: structure has no member named `first_minor'
mmc.c:396: error: void value not ignored as it ought to be
mmc.c:407: error: structure has no member named `queue'
mmc.c:408: error: structure has no member named `disk_name'

Прикрепленные файлы
Прикрепленный файл  mmc.rar ( 3.28 килобайт ) Кол-во скачиваний: 67
 


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
3.14
сообщение May 21 2006, 09:39
Сообщение #2


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Зараза, собрал старый драйвер, без проблем, но на этапе его активации получаю :
Код
# insmod /var/adapter.o
Using /var/adapter.o
Warning: unhandled reloc 0
insmod: Unhandled relocation of type 0
Warning: unhandled reloc 0
insmod: Unhandled relocation of type 0
Warning: unhandled reloc 0
insmod: Unhandled relocation of type 0
Warning: unhandled reloc 0
insmod: Unhandled relocation of type 0
Warning: unhandled reloc 5
insmod: Unhandled relocation of type 5 for
Warning: unhandled reloc 5
insmod: Unhandled relocation of type 5 for
Warning: unhandled reloc 5
insmod: Unhandled relocation of type 5 for
...
И такие предупреждения на все функции в исходнике sad.gif


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение May 21 2006, 10:45
Сообщение #3


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



В версии 2.5.x и далее в 2.6 была переработана подсистема, отвечающая за работу с блочными устройствами -> изменилась процедура регистрации устройств. Действительно, register_blkdev теперь принимает не 3 параметра (как в 2.4), а только два. Кроме того, в 2.6 несколько изменился подход к обработке очереди запросов ввода-вывода в блочных устройствах.

Итого, нужно переписать bd_request, mod_init и mod_exit.

Чтобы разобраться как это сделать, могу посоветовать посмотреть на примеры к книжкам Linux Device Drivers, 3rd Edition и 2nd Edition. И сравнить описанные в них процедуры инициализации модуля и обработки очереди. Они похожи, но несколько отличаются.


Цитата
Зараза, собрал старый драйвер, без проблем, но на этапе его активации получаю :



Ключи компиляции и линковки не менялись?

Такая ругань идет на неразрешенные ссылки на функции, которые должно экспортировать ядро. Но либо они не экспортируются, либо ссылки некорректны, что может быть результатом неправильной линковки или компиляции.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
3.14
сообщение May 21 2006, 11:15
Сообщение #4


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Цитата(makc @ May 21 2006, 13:45) *
Ключи компиляции и линковки не менялись?

Такая ругань идет на неразрешенные ссылки на функции, которые должно экспортировать ядро. Но либо они не экспортируются, либо ссылки некорректны, что может быть результатом неправильной линковки или компиляции.
Ключи компиляции не менял, порылся по скриптам, дополнил свои флаги компиляции, не помогло sad.gif
Смущает меня строчка во флагах "-I/usr/Xilinx/EDK8.1/gnu/microblaze/lin/bin/../lib/gcc/microblaze/3.4.1/./include" своим ".."


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
3.14
сообщение May 21 2006, 11:31
Сообщение #5


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Сейчас у меня вот такой makefile получился:
Код
ROOTDIR=/usr/src/uClinux-dist
UCLINUX_BUILD_USER=1
include $(ROOTDIR)/.config
LIBCDIR = $(ROOTDIR)/linux-2.4.x/lib
include $(ROOTDIR)/config.arch
CC=mb-gcc
AR=mb-ar

CFLAGS = -I/usr/src/uClinux-dist/linux-2.4.x/include -I/usr/src/uClinux-dist/linux-2.4.x/include/include  -Wall -Wstrict-prototypes -Wno-trigraphs -O1 -g -fno-strict-aliasing -fno-common -DPLATFORM=uclinux-auto -O2 -fno-builtin -DNO_MM -DNO_FPU -D__ELF__ -DMAGIC_ROM_PTR -DUTS_SYSNAME=\"uClinux\" -D__linux__ -I/usr/Xilinx/EDK8.1/gnu/microblaze/lin/bin -I/usr/Xilinx/EDK8.1/gnu/microblaze/lin/lib/gcc/microblaze/3.4.1/include -mxl-soft-div -mno-xl-soft-mul -nostdinc

adapter.o: adapter.c  
    $(CC) $(CFLAGS) -c adapter.c
clean:
    rm -f *.o core


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение May 21 2006, 13:04
Сообщение #6


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(3.14 @ May 21 2006, 15:15) *
Ключи компиляции не менял, порылся по скриптам, дополнил свои флаги компиляции, не помогло sad.gif
Смущает меня строчка во флагах "-I/usr/Xilinx/EDK8.1/gnu/microblaze/lin/bin/../lib/gcc/microblaze/3.4.1/./include" своим ".."


Нет, тут ничего страшного нет. ".." в пути - совершенно нормальная ситуация, т.к. это лишь ссылка на каталог уровнем выше и ничего больше.


Цитата(3.14 @ May 21 2006, 15:31) *
Сейчас у меня вот такой makefile получился:


Все на первый взгляд на месте. Могу посоветовать посмотреть с помощью mb-objdump списки символов, которые значатся relocatables в таблице символов adapter.o и сравнить эти списки с данными экспортов ядра, т.е. его symtab.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
3.14
сообщение May 21 2006, 13:34
Сообщение #7


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Цитата(makc @ May 21 2006, 16:04) *
Все на первый взгляд на месте. Могу посоветовать посмотреть с помощью mb-objdump списки символов, которые значатся relocatables в таблице символов adapter.o и сравнить эти списки с данными экспортов ядра, т.е. его symtab.
А как мне этот symtab посмотреть?
Еще, попробовал собрать драйвер EthernetLite, makefile такой же. На этапе insmod получаю:
# insmod ./ethlite.o
Using ./ethlite.o
insmod: unresolved symbol __umodsi3

И никаких " Unhandled relocation" ...


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение May 21 2006, 13:36
Сообщение #8


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(3.14 @ May 21 2006, 17:34) *
Цитата(makc @ May 21 2006, 16:04) *

Все на первый взгляд на месте. Могу посоветовать посмотреть с помощью mb-objdump списки символов, которые значатся relocatables в таблице символов adapter.o и сравнить эти списки с данными экспортов ядра, т.е. его symtab.
А как мне этот symtab посмотреть?


Обычно после сборки он лежит в корневом каталоге исходников ядра в файле System.map.
Но его можно с помощью того же mb-objdump получить из незапакованного бинарника ядра, если мне не изменяет память. Ну и в рантайме - файл /proc/ksyms.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
3.14
сообщение May 21 2006, 13:50
Сообщение #9


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Посмотрел /proc/ksyms, названий полученных из mb-objdump не нашел.
Еще, по поводу ethernetlite драйвера, чего-то я не пойму. Насколько я понимаю в драйвере отсутсвует функция (или переменная) __umodsi3, которая каким то макаром должна в нем появится из каких-то либ. Иду в директорию $(ROOTDIR)/linux-2.4.x/lib, в самом корне лежит libz.a (символическая ссылка куда-то) а в ней первым объявлением идет эта самая __umodsi3 ...


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение May 21 2006, 14:43
Сообщение #10


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(3.14 @ May 21 2006, 17:50) *
Посмотрел /proc/ksyms, названий полученных из mb-objdump не нашел.


Тогда нужно разбираться с правильность заголовочных файлов, которые используются при компиляции модуля. Они могут быть одной из проблем...

Цитата
Еще, по поводу ethernetlite драйвера, чего-то я не пойму. Насколько я понимаю в драйвере отсутсвует функция (или переменная) __umodsi3, которая каким то макаром должна в нем появится из каких-то либ. Иду в директорию $(ROOTDIR)/linux-2.4.x/lib, в самом корне лежит libz.a (символическая ссылка куда-то) а в ней первым объявлением идет эта самая __umodsi3 ...


Эта функция выполняет вычисление целочисленного остатка от деления 32-х раздрядных чисел. И она действительно должна быть в одной из библиотек. Указанная ссылка libz.a - это статически линкуемая библиотека, подозреваю, что она аналогична libgcc. Т.е. эта функция при линковке может быть взята и из нее, хотя ее может предоставить ядро.

А каких именно функций нет в экспортах ядра, но есть в adapter.o?
Можно увидеть вывов mb-objdump для adapter.o?


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
3.14
сообщение May 21 2006, 16:40
Сообщение #11


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Вот.
Прикрепленные файлы
Прикрепленный файл  reports.rar ( 10.71 килобайт ) Кол-во скачиваний: 22
 


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение May 21 2006, 16:54
Сообщение #12


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(3.14 @ May 21 2006, 20:40) *
Вот.


Думаю, что функции типа cfgaddr_read должны быть в одной из статических библиотек, которые где-то рядом лежат. Можно попробовать поискать в файлах cfgaddr_read и посмотреть, где она попадется. Если найдется либа, но слинковать с ней при помощи mb-ld с ключиком "-r" (relocatable).


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
3.14
сообщение May 21 2006, 17:01
Сообщение #13


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Не понял, эта функция (cfgaddr_read) объявлена и описана в теле драйвера, разве она еще должна в какой то либе фигурировать?


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение May 21 2006, 17:03
Сообщение #14


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(3.14 @ May 21 2006, 21:01) *
Не понял, эта функция (cfgaddr_read) объявлена и описана в теле драйвера, разве она еще должна в какой то либе фигурировать?


Эх, мне бы еще исходник этого драйвера. smile.gif

Кстати, а получаемый после компиляции и линковки бинарник через elf2flt прогонялся? Если мне не изменяет память, то без этого работать не будет...


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
3.14
сообщение May 21 2006, 17:18
Сообщение #15


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Только не пугайся smile.gif, это франкенштейн.

Цитата(makc @ May 21 2006, 20:03) *
Кстати, а получаемый после компиляции и линковки бинарник через elf2flt прогонялся? Если мне не изменяет память, то без этого работать не будет...
Я такие "слова" в первый раз слышу smile.gif, ничего такого преднамеренно я не делал.
Прикрепленные файлы
Прикрепленный файл  mmc.rar ( 9.46 килобайт ) Кол-во скачиваний: 26
 


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 14:46
Рейтинг@Mail.ru


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