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

 
 
 
Reply to this topicStart new topic
> интегрировать свой драйвер в дерево ядра, (linux-2.4.20)
romez777
сообщение Aug 3 2006, 10:04
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



Приветствую.

Пытаюсь интегрировать свой драйвер в дерево ядра 2.4.20 (на основе uclinux), чтобы при сборке мой драйвер атоматически помещался в образ.

Создал /usr/src/linux-2.4.20/drivers/my_driver с сырцами драйвера, объявил переменную CONFIG_MY_DRIVER, подправил Config.in.

Далее делаю как рекомендует документация:
1) Makefile своего драйвера:
obj-$(CONFIG_MY_DRIVER) += mydriver.o
mydriver-objs := obj1.o obj2.o obj3.o

include $(TOPDIR)/Rules.make
2) пересобираю ядро с модулями и вижу что собираться мой драйвер не желает:
...
make -C my_driver modules
make[4]: Entering directory `/usr/src/linux-2.4.20/drivers/my_driver'
make[4]: Nothing to be done for `modules'.
make[4]: Leaving directory `linux-2.4.20/drivers/my_driver'

Что я сделал не так?

Спасибо!
Go to the top of the page
 
+Quote Post
romez777
сообщение Aug 4 2006, 05:35
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



Проблему решил.

Выяснилось что makefile должен декларировать и obj-y и obj-m. А наличие O_TARGET необходимо для определения цели O_TARGET, в которой и происходит конечная линковка объектников (это можно проследить изучив Rules.make в корне ядерных сырцов).

Вот получившийся makefile:

#
O_TARGET := mydriver.o
obj-y += obj1.o obj2.o
obj-$(CONFIG_MY_DRIVER) += mydriver.o

include $(TOPDIR)/Rules.make
Go to the top of the page
 
+Quote Post
3.14
сообщение Aug 4 2006, 06:03
Сообщение #3


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

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



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


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
romez777
сообщение Aug 7 2006, 02:55
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 9-11-04
Пользователь №: 1 077



Приветствую.

Цитата(3.14 @ Aug 4 2006, 09:03) *
Спасибо за коментарии.
Такая просьба, Вы можете в популярной форме подробно раписать всю последовательность действий с полным makefile и в каких файлах конфигов чего правили?


Попробую ничего не забыть. В целом процедура достаточно прозрачная, я думаю возможны некоторые незначительные различия при применении в других uclinux-based дистрибутивах:

1) cd $LINUXSRC/drivers
2) mkdir clink (так называется драйвер)
3) подправить файл $LINUXSRC/drivers/Makefile (см. патч Makefile-clink_in_kernel.patch)
4) подправить файл $LINUXSRC/drivers/net/Config.in (так как по функциональности
устройство ближе всего к сетевым девайсам). См. патч Config.in_clink_in_kernel.patch
5) в конфиг ядра включаем CONFIG_NET_CLINK=m чтобы собирать модулем
6) Makefile для драйвера я приводил в предыдущем письме. Только вместо
CONFIG_MY_DRIVER нужно выставить CONFIG_NET_CLINK. По желанию (как делал я)
выставить EXTRA_CFLAGS и пр.
7) cd $LINUXSRC/ и пересобрать ядро с модулями.

Сообщение отредактировал romez777 - Aug 7 2006, 02:58
Прикрепленные файлы
Прикрепленный файл  patches.zip ( 785 байт ) Кол-во скачиваний: 54
 
Go to the top of the page
 
+Quote Post

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

 


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


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