Форум программистов, компьютерный форум, киберфорум
Железо в Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 6

Скомпилировать драйвер cPCI-7841 под ядро 3.5

04.02.2013, 11:14. Показов 1778. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такая ситуация. Есть плата CAN интерфейс CompactPCI - cPCI-7841 (Adlink)
Под неё производитель предлагает драйвера для ядра 2.6.25
У меня в системе стоит много сложных плат и они работают с более поздним ядром (3.0-3.5) поэтому проще притянуть cPCI-7841 к более поздней версии. Сам я драйвера под linux не писал и работал только с Qt, а производитель поддержку фактически не осуществляет. Приходится самому окунаться в проблему.
Я попытался скомпилировать предоставленные ими драйвер и библиотеку под ядро 3.5.

В результате я получил:
Code
1
2
3
4
5
6
7
8
9
10
make -C /lib/modules/3.5.0-17-generic/build SUBDIRS=/home/cPCI-7841/drvsrc modules 
make[1]: Entering directory `/usr/src/linux-headers-3.5.0-17-generic' 
CC [M] /home/cPCI-7841/drvsrc/7841.o 
/home/cPCI-7841/drvsrc/7841.c:442:2: error: unknown field 'ioctl' specified in initializer 
/home/cPCI-7841/drvsrc/7841.c:442:2: warning: initialization from incompatible pointer type [enabled by default] 
/home/cPCI-7841/drvsrc/7841.c:442:2: warning: (near initialization for 'fops.owner') [enabled by default] 
make[2]: *** [/home/cPCI-7841/drvsrc/7841.o] Error 1 
make[1]: *** [_module_/home/cPCI-7841/drvsrc] Error 2 
make[1]: Leaving directory `/usr/src/linux-headers-3.5.0-17-generic' 
make: *** [default] Error 2
В строке 442 файла 7841.c я заменил ioctl на unlocked_ioctl. Появилась другая ошибка:
Code
1
2
3
4
5
6
7
8
9
10
make -C /lib/modules/3.5.0-17-generic/build SUBDIRS=/home/cPCI-7841/drvsrc modules 
make[1]: Entering directory `/usr/src/linux-headers-3.5.0-17-generic' 
CC [M] /home/cPCI-7841/drvsrc/isrdpc.o 
/home/cPCI-7841/drvsrc/isrdpc.c: In function 'adl_kill_fasync': 
/home/cPCI-7841/drvsrc/isrdpc.c:265:25: error: 'POLL_IN' undeclared (first use in this function) 
/home/cPCI-7841/drvsrc/isrdpc.c:265:25: note: each undeclared identifier is reported only once for each function it appears in 
make[2]: *** [/home/cPCI-7841/drvsrc/isrdpc.o] Error 1 
make[1]: *** [_module_/home/cPCI-7841/drvsrc] Error 2 
make[1]: Leaving directory `/usr/src/linux-headers-3.5.0-17-generic' 
make: *** [default] Error 2
Для борьбы с этой ошибкой по совету добавил #include <linux/sched.h> в файл isrdpc.c
В результате все собралось без ошибок.
Дальше я по инструкции инсталлировал библиотеку и устройство.
Code
1
2
3
4
cpci@cpci-dsp ~/cPCI-7841/driver $ sudo ./7841_inst.pl 1 
[sudo] password for cpci: 
make character device node '/dev/PCI7841W0' for PCI7841 
cpci@cpci-dsp ~/cPCI-7841/lib $ sudo cp libpci_7841.so /usr/lib/
Достаточно ли этих изменений для нормальной работы драйвера?

При компиляции кода, тестирующего плату получаю следующее:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
cpci@cpci-dsp ~/cPCI-7841/sample $ make clean 
rm -f *.o *~ test7841 
cpci@cpci-dsp ~/cPCI-7841/sample $ make 
gcc -c -Wall -Wstrict-prototypes -I../include test7841.c 
gcc -c -Wall -Wstrict-prototypes -I../include conio.c 
gcc -o test7841 -lpci_7841 test7841.o conio.o 
test7841.o: In function `main': 
test7841.c: (.text+0x21): undefined reference to `CanOpenDriver' 
test7841.c: (.text+0x5a): undefined reference to `CanOpenDriver' 
test7841.c: (.text+0x8b): undefined reference to `CanClearRxBuffer' 
test7841.c: (.text+0x97): undefined reference to `CanClearTxBuffer' 
test7841.c: (.text+0xa3): undefined reference to `CanClearRxBuffer' 
test7841.c: (.text+0xaf): undefined reference to `CanClearTxBuffer' 
test7841.c: (.text+0xe4): undefined reference to `CanConfigPort' 
test7841.c: (.text+0xf9): undefined reference to `CanConfigPort' 
test7841.c: (.text+0x1e7): undefined reference to `CanSendMsg' 
test7841.c: (.text+0x20b): undefined reference to `CanSendMsg' 
test7841.c: (.text+0x230): undefined reference to `CanGetRcvCnt' 
test7841.c: (.text+0x241): undefined reference to `CanGetRcvCnt' 
test7841.c: (.text+0x291): undefined reference to `CanRcvMsg' 
test7841.c: (.text+0x2dd): undefined reference to `CanRcvMsg' 
test7841.c: (.text+0x576): undefined reference to `CanCloseDriver' 
test7841.c: (.text+0x583): undefined reference to `CanCloseDriver' 
collect2: error: ld returned 1 exit status 
make: *** [test7841] Error 1
Линковщик не смог связать функции. То есть по каким то причинам не инсталировался драйвер при работе 7841_inst.pl или моя ошибка в другом?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.02.2013, 11:14
Ответы с готовыми решениями:

Скомпилировать драйвер под x86 и x64
Добрый день! Не получается скомпилировать драйвер на 2015 студии, все пакеты для работы с драйверами поставил. Может моя студия не...

Не могу скомпилировать простой драйвер
Здравствуйте. За https://habr.com/ru/post/40466/ попробывал создать но проблема в тому, что получаю купу ошибок (см. скрин). Пробывал...

Ядро под линукс .
Зашел на оф.сайт http://kernel.org/ по ядру линукса и заметил что ядро весит 67 метро , Вопрос , если под тел. или другие устройсва ядро...

3
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 6
04.03.2013, 16:05  [ТС]
в общем свою проблему я решил благополучно. Плата работает на ядре 3.5.0
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
04.03.2013, 20:29
ссылка не открывается
0
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 6
05.03.2013, 10:33  [ТС]
Можно наверное сделать unlink для ссылки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.03.2013, 10:33
Помогаю со студенческими работами здесь

Нужно скомпилировать драйвер для модема на Linux Mint 19.3
Имеется модем на компьютере. После установки ОС модем работал, но, во-первых, не находил сети 5GHz (и модем, и роутер поддерживают, до...

SW UART под ядро линукса
Вобщем суть такова: Есть некая железка, чип TCC8900 720MHz, 256 оперативы, 256 флеш, есть сата, есть 100мбит порт, есть USB-хост. Хотел...

Выбор железяки под ядро сети
Приветствую всех! Помогите пожалуйста с выбором оборудования под ядро сети. Сеть не большая, в офисе порядка 40 компов + 5 серверов,...

Скомпилировать драйвер для 2.8" TFT + Touch Shield Board v2.1 (ILI9341) - Raspberry Pi B+
Исходник драйвера Второй день бьюсь, не могу скомпилировать драйвер, может кто скомпилировать? Пробовал по этой инструкции:...

Под каким углом ядро пролетит максимальное расстояние
Вот такая задачка попалась: Под каким углом ядро пролетит максимальное расстояние. V(0)=250(m/s), m=1,5kg(хотя опять же, зачем?),...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru