LINUXPORTAL.RU  |   Живое общение LinuxPortal.Ru   |    Ленты событий        |   ФОРУМЫ  |   БИБЛИОТЕКА  |   ССЫЛКИ  |   НОВОСТИ  |   БЛОГИ АДМИНОВ

Участники   Поиск   F.A.Q.    Регистрация    Вход   Начало
Начало » Для администраторов и программистов » Железная разработка » Написал драйвер для pci-онй платы что с ним дальше сделать?
Показать: Сегодняшние сообщения  :: Показать голосования :: Навигатор по сообщениям
Отправить по e-mail 
Переключение в режим просмотра в виде древовидного списка сообщений и ответов Создать новую тему Отправить ответ
Написал драйвер для pci-онй платы что с ним дальше сделать? Втр, 18 Ноябрь 2008 09:41 Переход к следующему сообщения
Pavel_F. в настоящее время не в онлайне Pavel_F.  RUSSIAN FEDERATION
Сообщений: 30
Зарегистрирован: Октябрь 2008
Географическое положение: Россия
Освоившийся

Есть плата pci. Написал драйвер для нее. Все работает замечательно. Сейчас загружаю его с помощью insmod. А хочеться сделать так чтобы система сама это делала. Т.е. если эта плата в компе торчит то драйвер грузиться автоматически. Как и что для этого нужно сделать. Ядро 2.6. С линуксом пока знаком довольно мало.
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Втр, 18 Ноябрь 2008 12:00 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

а сам модуль установлен? make modules_install Вы делали?
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Втр, 18 Ноябрь 2008 14:21 Переход к предыдущему сообщенияПереход к следующему сообщения
Pavel_F. в настоящее время не в онлайне Pavel_F.  RUSSIAN FEDERATION
Сообщений: 30
Зарегистрирован: Октябрь 2008
Географическое положение: Россия
Освоившийся

Драйвер писал сам. Соответственно и цели в makefile тоже я пишу. И цели инсталл я не писал. Не знаю как писать. В makefile написал только две цели, first где компилируеться драйвер и получаеться файл *.ко и clean для удаления "мусора".
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Втр, 18 Ноябрь 2008 15:05 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

#
# Makefile for dumb_jiffies.c
#

obj-m           = dumb_jiffies.o

INCLUDE         = -I/usr/include/asm/mach-default/
KERNEL_VERSION  = `uname -r`
PWD             = `pwd`
KDIR            = /lib/modules/$(KERNEL_VERSION)/build

all::
    $(MAKE) -C $(KDIR) $(INCLUDE) SUBDIRS=$(PWD) modules

install: all
    $(MAKE) -C $(KDIR) $(INCLUDE) SUBDIRS=$(PWD) modules_install

uninstall:
    rm -rf *.o *.ko *.mod.c *.o.cmd *.ko.cmd .dfr* .tmp*

clean:
    rm -rf *.o *.ko *.mod.c .*.o.cmd .*.ko.cmd .dfr* .tmp*



что-то в этом духе наверно...

[Обновления: Втр, 18 Ноябрь 2008 15:05]

Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Втр, 18 Ноябрь 2008 15:54 Переход к предыдущему сообщенияПереход к следующему сообщения
San АНДРЕЕВ в настоящее время не в онлайне San АНДРЕЕВ  RUSSIAN FEDERATION
Сообщений: 8446
Зарегистрирован: Июнь 2002
Географическое положение: Санкт-Петербу...

administrator · partner

Я может и не понимаю чего, но вопрос был такой:
Цитата:

ейчас загружаю его с помощью insmod. А хочеться сделать так чтобы система сама это делала.


При чём здесь make modules_install? По-моему это как-то ближе к udev и подобным вещам. Т.е. при обнаружении устройства система должна знать какой модуль к ядру подгрузить и делать это. Или я неправильно понял вопрос?
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Втр, 18 Ноябрь 2008 16:06 Переход к предыдущему сообщенияПереход к следующему сообщения
Pavel_F. в настоящее время не в онлайне Pavel_F.  RUSSIAN FEDERATION
Сообщений: 30
Зарегистрирован: Октябрь 2008
Географическое положение: Россия
Освоившийся

Ну за исключением строки с modules_install в моём makefile тоже самое.
Добавил строку с modules_install.
Но проблема усложнилась тем что у меня забрали плату.
Можно как-нибудь без неё понять что все хорошо? Что именно делаеться в этой строке?
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Втр, 18 Ноябрь 2008 16:24 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

http://en.wikipedia.org/wiki/Udev

"...udev is the device manager for the Linux 2.6 kernel series. Primarily, it manages device nodes in /dev. It is the successor of devfs and hotplug, which means that it handles the /dev directory and all user space actions when adding/removing devices, including firmware load...."

в данном случае pci никто не втыкает/вытыкает следовательно udev тут не при чём;

грубо говоря (и насколько позволяют судить мои знания о PCI) когда ядро видит PCI железку оно ищет драйвер который обслуживает этот тип устройств (id). Как ядро узнает где искать этот драйвер (модуль)? Правильно - в заранее условном месте - /lib/modules... - туда по идее при выполнении install копируется модуль и определяются от чего он зависит (на тот случай если при загрузке Вашего модуля нужно ещё загрузить N-модулей).

[Обновления: Втр, 18 Ноябрь 2008 16:25]

Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Втр, 18 Ноябрь 2008 17:33 Переход к предыдущему сообщенияПереход к следующему сообщения
San АНДРЕЕВ в настоящее время не в онлайне San АНДРЕЕВ  RUSSIAN FEDERATION
Сообщений: 8446
Зарегистрирован: Июнь 2002
Географическое положение: Санкт-Петербу...

administrator · partner

PCI-устройства "втыкаются" при загрузке системы. :)

Я не спорю, но думаю, что одного заранее условленного места мало - там навалом всяких разных модулей и системе нужно знать какой именно подгрузить для обнаруженного железа.
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Срд, 19 Ноябрь 2008 00:27 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

Цитата:


menuconfig MODULES
bool "Enable loadable module support"
help
Kernel modules are small pieces of compiled code which can
be inserted in the running kernel, rather than being
permanently built into the kernel. You use the "modprobe"
tool to add (and sometimes remove) them. If you say Y here,
many parts of the kernel can be built as modules (by
answering M instead of Y where indicated): this is most
useful for infrequently used options which are not required
for booting. For more information, see the man pages for
modprobe, lsmod, modinfo, insmod and rmmod.

If you say Y here, you will need to run "make
modules_install" to put the modules under /lib/modules/
where modprobe can find them (you may need to be root to do
this).

If unsure, say Y.




Можно также прочитать modules.txt в директории Documentation исходников ядра.
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Срд, 19 Ноябрь 2008 07:26 Переход к предыдущему сообщенияПереход к следующему сообщения
Sv Bambr в настоящее время не в онлайне Sv Bambr  RUSSIAN FEDERATION
Сообщений: 441
Зарегистрирован: Ноябрь 2002
Географическое положение: http://www.yubileyny.ru/

guru
San дал весьма верный совет.
1. Вы должны определить воткнута ли плата.
2. Если воткнута, то загрузить драйвер.

В более менее современном дистрибутиве есть файловая система /sys
Примерно тут :
/sys/bus/pci/devices/ (может зависеть от дистрибутива)
информация обо всех обнаруженных PCI-устройствах.
Нужно проверить наличие соответсвующих записей и загрузить модуль.

Сделать это без платы трудновато, но могу предположить, что это возможно, если Вам известны PCI-ID и вообще какие записи создаются в /sys/bus/pci/devices/ при вставленной плате.
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Срд, 19 Ноябрь 2008 08:40 Переход к предыдущему сообщенияПереход к следующему сообщения
Pavel_F. в настоящее время не в онлайне Pavel_F.  RUSSIAN FEDERATION
Сообщений: 30
Зарегистрирован: Октябрь 2008
Географическое положение: Россия
Освоившийся

после modules_install мой *.ко действительно лежит в папке /lib/modules/версия ядра/extra как и написано в modules.txt.
Больше изменений пока не заметил...
Плату вернули.
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Срд, 19 Ноябрь 2008 08:58 Переход к предыдущему сообщенияПереход к следующему сообщения
Sv Bambr в настоящее время не в онлайне Sv Bambr  RUSSIAN FEDERATION
Сообщений: 441
Зарегистрирован: Ноябрь 2002
Географическое положение: http://www.yubileyny.ru/

guru
Где лежит модуль неважно. Не плохо если он лежит там где у Вас - это его штатное место. В RH-based дистрибутивах есть файлик /etc/modules.conf, в котором можно сделать запись типа alias, сопоставляющую имя устройства с модулем для него, например:
alias eth0 eepro100

При этом может быть указан абсолютный путь к модулю (хоть в /opt его кладите). В этом случае при вставленной карте модуль загрузится при загрузке системы автоматически.
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Срд, 19 Ноябрь 2008 09:02 Переход к предыдущему сообщенияПереход к следующему сообщения
Pavel_F. в настоящее время не в онлайне Pavel_F.  RUSSIAN FEDERATION
Сообщений: 30
Зарегистрирован: Октябрь 2008
Географическое положение: Россия
Освоившийся

Меня что смущает...
Я когда делаю руками, то пишу:
mknod /dev/устройство с 253 0
insmon мой_драйвер.ко

И что-то я нигде не вижу куда эти номера ( те что 253 0) надо писать чтоб линукс про них знал. Хотя есть у меня мысль что это важно.
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Срд, 19 Ноябрь 2008 09:09 Переход к предыдущему сообщенияПереход к следующему сообщения
Pavel_F. в настоящее время не в онлайне Pavel_F.  RUSSIAN FEDERATION
Сообщений: 30
Зарегистрирован: Октябрь 2008
Географическое положение: Россия
Освоившийся

Никакой /sys у меня нет. Дистрибутив Fedora Core 5 (именно RH-based).
Ядро обновлял и сейчас оно 2.6.17-1.2145_FC5smp.
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Срд, 19 Ноябрь 2008 12:57 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

Попробуйте отдать команду depmod после установки модуля.

mknod по идее не нужен - драйвер должен создавать в /dev файл устройства.
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Срд, 19 Ноябрь 2008 13:45 Переход к предыдущему сообщенияПереход к следующему сообщения
Pavel_F. в настоящее время не в онлайне Pavel_F.  RUSSIAN FEDERATION
Сообщений: 30
Зарегистрирован: Октябрь 2008
Географическое положение: Россия
Освоившийся

А драйвер сам как устройство делает?
Или функция registr_chrdev еще и файл устройства создает?
После depmod ядро вроде мой модуль знает. modprobe мой_модуль его загружает и в выводе lsmod он присутствует (без modprobe его там нет) и стоит 0 т.е. никто его не использует. Файл устройства не создаеться. Если самому запустить mknod и modprobe то все работает. При этом плата стоит на месте( присутствует в выводе lspci -v).
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Срд, 19 Ноябрь 2008 15:43 Переход к предыдущему сообщенияПереход к следующему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

Ну добавьте какой-нибудь device_create() - ручками mknod запускать - это не серьёзно.
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Срд, 19 Ноябрь 2008 15:53 Переход к предыдущему сообщенияПереход к следующему сообщения
Pavel_F. в настоящее время не в онлайне Pavel_F.  RUSSIAN FEDERATION
Сообщений: 30
Зарегистрирован: Октябрь 2008
Географическое положение: Россия
Освоившийся

Согласен. Но, чтобы модуль создал файл устройства, этот модуль кто-то должен запустить. Ядро этого не делает. В случае pci платы modprobe ручками писать тоже не серьёзно...
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Срд, 19 Ноябрь 2008 16:00 Переход к предыдущему сообщенияПереход к следующему сообщения
Pavel_F. в настоящее время не в онлайне Pavel_F.  RUSSIAN FEDERATION
Сообщений: 30
Зарегистрирован: Октябрь 2008
Географическое положение: Россия
Освоившийся

И, как уже звучало выше, это скорее дело udev. Хотя я и знаком с ней весьма поверхностно...
Re: Написал драйвер для pci-онй платы что с ним дальше сделать? Срд, 19 Ноябрь 2008 16:28 Переход к предыдущему сообщенияПереход к предыдущему сообщения
Mr.Nobody  RUSSIAN FEDERATION
Сообщений: 909
Зарегистрирован: Ноябрь 2004
Географическое положение: Russia, Moscow
Старожил
guru

Возможно что я несколько погорячился сказав что udev СОВСЕМ не причём :-).

Кстати следующая опция включена (и что вы скажите на то что там написано)?
Цитата:


CONFIG_KMOD:

Normally when you have selected some parts of the kernel to
be created as kernel modules, you must load them (using the
"modprobe" command) before you can use them. If you say Y
here, some parts of the kernel will be able to load modules automatically: when a part of the kernel needs a module, it runs modprobe with the appropriate arguments, thereby loading the module if it is available. If unsure, say Y.
Symbol: KMOD [=y]
Prompt: Automatic kernel module loading
Defined at init/Kconfig:651
Depends on: MODULES
Location:
-> Enable loadable module support (MODULES [=y])

[Обновления: Срд, 19 Ноябрь 2008 18:10] от Модератора

Страниц (2): [1  2    »]  Переключение в режим просмотра в виде древовидного списка сообщений и ответов Создать новую тему Отправить ответ
Предыдущая тема:PCI-драйвер
Следующая тема:Linux GeneralTouch driver usb + serial
Переход к форуму:
  

-=] Вернуться вверх [=-
[ Сформировать XML ] [ RSS ]

Текущее время: Сбт Июл 31 18:08:58 MSD 2010
.:: Обратная связь :: Начало ::.

При поддержке: FUDforum 3.0.0.
Copyright © 2001-2009 FUDforum Bulletin Board Software

©"Linuxportal.Ru". Материалы сайта можно использовать свободно при условии сохранения этой свободы при дальнейшем распространении, если явно не указано иное.

Дизайн и программирование: ,
Поставьте нашу кнопку: Linux Portal.ru ::: Линукс Портал.ру