LINUX.ORG.RU

Установка драйверов для плат АЦП ICP-DAS


0

0

У меня есть одна плата АЦП PISO-813 производства компании ICP-DAS.
Пытаюсь собрать дрова с офф. сайта ICPDAS.
Написано драйвер поддерживает ядра версий 2.4,2.6

ядро моего linux'а -стандартное для OpenSuse 11.1 - 2.6.27.7-9-default (получено от "uname -r")

Поставил следующие пакеты:
kernel-source-2.6.27.7-9.1.x86_64
kernel-syms-2.6.27.7-9.1-9.1.x86_64
linux-kernel-headers 2.6.27-2.28
kernel-default-2.6.27.7-9.1.x86_64
kernel-default-base-2.6.27.7-9.1.x86_64
kernel-default-extra-2.6.27.7-9.1.x86_64

Установка включает в себя 3 шага:
1 ./configure - проходит нормально после установки make, GCC, kernel source & kernel headers
2 make - выдаёт много ошибок, в большинстве которых указывается следуещее:
"LINUX_VERSION_CODE" is not defined
"KERNEL_VERSION" is not defined
3 make install - не дошол, т.к. проблемы на шаге 2

Я думаю что LINUX_VERSION_CODE & KERNEL_VERSION должны быть определены в linux.h(поиском google), но я не могу найти linux.h в моей системе несмтря на на то, что я установил linux-kernel-headers 2.6.27-2.28.
Что я делаю не так? Как поставить драйвер

>"LINUX_VERSION_CODE" is not defined
"KERNEL_VERSION" is not defined

Это на некроядрах такое было, до 2.6.18 это точно. Помню в VMWARE 5.0 такая же ошибка была.

linux4ever
()

Вроди для подобных драйверов надо было, чтобы были объектные файлы. То есть вам надо зайти в /usr/src/linux и сделать "make dep"; "make clean"; "make bzImage". А перед этими командами, возможно, нужно будет сделать "make menuconfig", и убедиться, что конфигурация ядра соответсвует бинарной версии. Я не знаю, где в Убунте идет .config ядра.

mky ★★★★★
()
Ответ на: комментарий от AITap

oldconfig, это для определения недостающих в конфиге опций, например, при переносе конфига от отдной версии ядра к другой. А подразумеваю, что топикстартеру нужно бы получить .config файл от ядра, которое установлено в его системе (дистрибутвное убунтовское ядро). В РедХатах, в kernel-XXX.src.rpm идёт куча файлов kernel-XXX-i386.config, kernel-XXX-i686.config где лежит конфигурация для каждого из kernel-XXX-iXXX.rpm ядра.

mky ★★★★★
()
Ответ на: комментарий от mky

Интересно почему решили, что у меня стоит ядро от Ubuntu, если сказано, что ОС OpenSuse

каталоге /usr/src/linux make dep выдаёт: No rule to make 'dep'. Stop make bzImage работает долго, но в итоге не помогает

Похоже вместо linux.h нужен файл /usr/src/linux/include/linux/version.h

В каталоге /usr/src/linux выполнил две команды make cloneconfig make prepare теперь файл появился, но похоже make его всё равно не находит,

Sinopteek
() автор топика
Ответ на: комментарий от Sinopteek

Не знаю, почему я решил, что у вас Убунта, читаю, видимо, плохо.

Значит так, вам нужен файл version.h. Он действительно появляется в процессе комиляции ядра и появляется, там, где вы написали --- /usr/src/linux/include/linux/version.h.

Я скачал ваш драйвер, посмотрю его. Раньше, в 2.4 ядрах version.h включался в module.h, а сейчас нет. Но для 2.4 этот драйвер тоже не соберётся, там в файле driver/Makefile_linux24x есть забавная строчка:

kerneldir=/lib/modules/2.6.25-14.fc9.i686/build

А почему у вас не работает make dep, так его упразднил, не помню точно с какого ядра.

mky ★★★★★
()
Ответ на: комментарий от mky

Посмотрел подробнее, вроде нужный файл включается, то есть '*.c' файлы содержат '#include "ixpio.h"', а файл ixpio.h содержит строку "#include <linux/version.h>".

Хотелось бы увидеть сообщение об ошибке по поводу LINUX_VERSION_CODE более развернуто, начиная с команды, там "gcc ...".

mky ★★★★★
()
Ответ на: комментарий от mky

вот это выдаёт при выполнении команды make:

cd driver/;\
make
make[1]: Entering directory `/home/devila/Download/ixpio/driver'
make -C /lib/modules/2.6.31.5-0.1-desktop/build SUBDIRS=/home/devila/Download/ixpio/driver LDDINCDIR=/home/devila/Download/ixpio/driver/../include modules
make[2]: Entering directory `/usr/src/linux-2.6.31.5-0.1-obj/x86_64/desktop'
make -C ../../../linux-2.6.31.5-0.1 O=/usr/src/linux-2.6.31.5-0.1-obj/x86_64/desktop/. modules
CC [M] /home/devila/Download/ixpio/driver/_pio.o
/home/devila/Download/ixpio/driver/_pio.c:86:19: error: ixpio.h: No such file or directory
/home/devila/Download/ixpio/driver/_pio.c:88:5: warning: "LINUX_VERSION_CODE" is not defined
/home/devila/Download/ixpio/driver/_pio.c:88:27: warning: "KERNEL_VERSION" is not defined
/home/devila/Download/ixpio/driver/_pio.c:88:41: error: missing binary operator before token "("
/home/devila/Download/ixpio/driver/_pio.c:92:5: warning: "LINUX_VERSION_CODE" is not defined
/home/devila/Download/ixpio/driver/_pio.c:92:27: warning: "KERNEL_VERSION" is not defined
/home/devila/Download/ixpio/driver/_pio.c:92:41: error: missing binary operator before token "("
/home/devila/Download/ixpio/driver/_pio.c:97:5: warning: "LINUX_VERSION_CODE" is not defined
/home/devila/Download/ixpio/driver/_pio.c:97:26: warning: "KERNEL_VERSION" is not defined
/home/devila/Download/ixpio/driver/_pio.c:97:40: error: missing binary operator before token "("
/home/devila/Download/ixpio/driver/_pio.c:110:5: warning: "LINUX_VERSION_CODE" is not defined
/home/devila/Download/ixpio/driver/_pio.c:110:26: warning: "KERNEL_VERSION" is not defined
/home/devila/Download/ixpio/driver/_pio.c:110:40: error: missing binary operator before token "("
/home/devila/Download/ixpio/driver/_pio.c:131: error: expected ‘,’ or ‘;’ before ‘ICPDAS_LICENSE’
/home/devila/Download/ixpio/driver/_pio.c:136:5: warning: "LINUX_VERSION_CODE" is not defined
/home/devila/Download/ixpio/driver/_pio.c:136:27: warning: "KERNEL_VERSION" is not defined
/home/devila/Download/ixpio/driver/_pio.c:136:41: error: missing binary operator before token "("
/home/devila/Download/ixpio/driver/_pio.c:141: warning: data definition has no type or storage class
/home/devila/Download/ixpio/driver/_pio.c:141: warning: type defaults to ‘int’ in declaration of ‘EXPORT_SYMBOL_NOVERS’
/home/devila/Download/ixpio/driver/_pio.c:141: warning: parameter names (without types) in function declaration
/home/devila/Download/ixpio/driver/_pio.c:142: warning: data definition has no type or storage class
/home/devila/Download/ixpio/driver/_pio.c:142: warning: type defaults to ‘int’ in declaration of ‘EXPORT_SYMBOL_NOVERS’
/home/devila/Download/ixpio/driver/_pio.c:142: warning: parameter names (without types) in function declaration

.....

/home/devila/Download/ixpio/driver/_pio.c:805:5: warning: "LINUX_VERSION_CODE" is not defined
/home/devila/Download/ixpio/driver/_pio.c:805:27: warning: "KERNEL_VERSION" is not defined
/home/devila/Download/ixpio/driver/_pio.c:805:41: error: missing binary operator before token "("
/home/devila/Download/ixpio/driver/_pio.c:814:5: warning: "LINUX_VERSION_CODE" is not defined
/home/devila/Download/ixpio/driver/_pio.c:814:27: warning: "KERNEL_VERSION" is not defined
/home/devila/Download/ixpio/driver/_pio.c:814:41: error: missing binary operator before token "("
/home/devila/Download/ixpio/driver/_pio.c:816:7: warning: "LINUX_VERSION_CODE" is not defined
/home/devila/Download/ixpio/driver/_pio.c:816:29: warning: "KERNEL_VERSION" is not defined
/home/devila/Download/ixpio/driver/_pio.c:816:43: error: missing binary operator before token "("
/home/devila/Download/ixpio/driver/_pio.c:821: error: ‘SUCCESS’ undeclared (first use in this function)
/home/devila/Download/ixpio/driver/_pio.c:824:5: warning: "LINUX_VERSION_CODE" is not defined
/home/devila/Download/ixpio/driver/_pio.c:824:26: warning: "KERNEL_VERSION" is not defined
/home/devila/Download/ixpio/driver/_pio.c:824:40: error: missing binary operator before token "("
make[5]: *** [/home/devila/Download/ixpio/driver/_pio.o] Error 1
make[4]: *** [_module_/home/devila/Download/ixpio/driver] Error 2
make[3]: *** [sub-make] Error 2
make[2]: *** [all] Error 2
make[2]: Leaving directory `/usr/src/linux-2.6.31.5-0.1-obj/x86_64/desktop'
make[1]: *** [modules] Error 2
make[1]: Leaving directory `/home/devila/Download/ixpio/driver'

make: *** [modules] Error 2

Sinopteek
() автор топика

Нашол способ собрать драйвер:

В директории с исходниками ядра:
cd /usr/src/linux #стандартная ссылка на директорию с исходниками
make mrproper
make cloneconfig
make prepare

После распаковываем драйвер:
tar zxfv ixpio.tar.gz

копируем все заголовочные файлы из директрии "include" в директорию "driver"
cd ixpio
cp include/*.h driver/

После этого драйвер собирается без проблемм:
./configure
make

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

Sinopteek
() автор топика
Ответ на: комментарий от Sinopteek

Собственно, главная ошибка компиляции:

/home/devila/Download/ixpio/driver/_pio.c:86:19: error: ixpio.h: No such file or directory

То есть почему то не обрабатывается директива LDDINCDIR=/home/devila/Download/ixpio/driver/../include, возможно что-то поломали в Makefile ядра.

Сейчас нет под рукой исходников, посмотрю позже. И если я правилно помню, то в том что я скачал, в Changelog'е последней записью была строчка, что добавлена поддержка ядра 2.6.31, возможно, в скачали драйвер чуть раньше, чем они внесли эти изменения.

По идее не надо было копировать все .h файлы, должно было хватить ixpio.h, посмотрю вечером.

mky ★★★★★
()
Ответ на: комментарий от mky

я тоже так думал, но в множесте xxx.c идёт #include xxx.h, где xxx - заголовочные файлы для каждой платы - собираются все вместе. Поэтому приходится копировать всё заголовочные файлы вместе.
А что делать с заголовочными файлами? Я их ставил как пакет из репозитария? И ещё некоторые создавал следующими командами в директории с исходниками ядра:
make mrproper
make cloneconfig
make prepare

Насчёт поддержки нового ядра - я написал в техническую поддержку тоже(кроме как сюда), они уже две версии выпустили 0.20.10 и 0.20.11. Но эффект тот же - собираются при копировании заголовочных файлов

В любом случае спасибо

Sinopteek
() автор топика
Ответ на: комментарий от Sinopteek

После того как вы скомпилировали модуль, заголовочные файлы не нужны. Исходники модуля оставьте, они пригодятся для следующей компиляции, когда у вас будет новое ядро. Ну, а то что приходится копировать, так ничего страшного, смысл держать заголовочные файлы в отдельном каталоге только для удобства разработки, чтобы они не путались с *.c файлам.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.