LinuxForum.Fans
Тема

Помогите собрать драйвер

Автор: anonymous1 17 сообщений 14116 просмотров
#213054

В линуксе я совсем зелёный новичок. Понадобился драйвер для Android под ядро линукса 2.6.14. Как я понял в архиве с драйвером он в виде исходников и его необходимо скомпилировать, т.к. мне нужен в итоге файл с расширением .o или .ko. Прошу помочь собрать драйвер, кому не трудно! Заранее благодарен.

#213092
anonymous1 написал:
В линуксе я совсем зелёный новичок. Понадобился драйвер для Android под ядро линукса 2.6.14. Как я понял в архиве с драйвером он в виде исходников и его необходимо скомпилировать, т.к. мне нужен в итоге файл с расширением .o или .ko. Прошу помочь собрать драйвер, кому не трудно! Заранее благодарен.

1. .ко - потому как 2.6.14

2. разархивируйте архив...

3. и ...

text

$ make

- можете сюда показывать результаты шагов ... подскажем wink

Настоящие проблемы у вас начнуться после шага 3, когда вы уже получите свой файл .ko wink - когда вы станете его тулить в свой Android....

Но вы тогда нам расскажете (для любопытства), а мы вам поможем...

#213093
anonymous1 написал:
В линуксе я совсем зелёный новичок. Понадобился драйвер для Android под ядро линукса 2.6.14. Как я понял в архиве с драйвером он в виде исходников и его необходимо скомпилировать, т.к. мне нужен в итоге файл с расширением .o или .ko. Прошу помочь собрать драйвер, кому не трудно! Заранее благодарен.

Аж любопытно стало...
Примерно так:

text

[olej@notebook tmp]$ unzip -x AX88772B_772A_760_772_178_LINUX_Driver_v4.2.0_Source.zip 
Archive:  AX88772B_772A_760_772_178_LINUX_Driver_v4.2.0_Source.zip
  inflating: asix.c                  
  inflating: asix.h                  
  inflating: axusbnet.c              
  inflating: axusbnet.h              
  inflating: Makefile                
  inflating: readme                  
[olej@notebook _asix]$ make
make -C /lib/modules/2.6.32.9-70.fc12.i686.PAE/build SUBDIRS=/home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix modules
make[1]: Entering directory `/usr/src/kernels/2.6.32.9-70.fc12.i686.PAE'
  CC [M]  /home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.o
/home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.c: В функции ‘ax8817x_bind’:
/home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.c:910: предупреждение: присваивание отменяет квалификаторы указуемого типа
/home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.c: В функции ‘ax88772_bind’:
/home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.c:1117: предупреждение: присваивание отменяет квалификаторы указуемого типа
/home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.c: В функции ‘ax88772a_bind’:
/home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.c:1358: предупреждение: присваивание отменяет квалификаторы указуемого типа
/home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.c: В функции ‘ax88772b_bind’:
/home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.c:1713: предупреждение: присваивание отменяет квалификаторы указуемого типа
/home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.c: В функции ‘ax88178_bind’:
/home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.c:2627: предупреждение: присваивание отменяет квалификаторы указуемого типа
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.mod.o
  LD [M]  /home/olej/2011_WORK/LINUX-books/examples.DRAFT/_asix/asix.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.32.9-70.fc12.i686.PAE'
[olej@notebook _asix]$ ls *.ko
asix.ko

Но кто вам сказал, что это имеет какое-то касательство к Androib - это классический Linux модуль... (о чём и readme пишет)
Как вы его станете в Android аж любопытно wink
Напишете?

#213095
Olej написал:
1. .ко - потому как 2.6.14
2. разархивируйте архив...
3. и ...

Не получается. Пробую через cygwin, линукса нет. Пожалуйста выложите готовый скомпилированный вариант.

Olej написал:
Но кто вам сказал, что это имеет какое-то касательство к Androib - это классический Linux модуль... (о чём и readme пишет)
Как вы его станете в Android аж любопытно 
Напишете?

Сказал мне это сайт. На android ставится через insmod. Естественно для этого нужен root и поддержка USB-хоста в устройстве. Мой девайс Samsung GT-N7000.

#213098
anonymous1 написал:

Не получается. Пробую через cygwin, линукса нет. Пожалуйста выложите готовый скомпилированный вариант.

Как? :lol:
Я не вижу на этом форуме возможности прикреплять файлы :[ (а там архив).

anonymous1 написал:

[quote=Olej]Но кто вам сказал, что это имеет какое-то касательство к Androib - это классический Linux модуль... (о чём и readme пишет)
Как вы его станете в Android аж любопытно 
Напишете?

Сказал мне это сайт. На android ставится через insmod. Естественно для этого нужен root и поддержка USB-хоста в устройстве. Мой девайс Samsung GT-N7000.
[/quote]
Расскажете потом здесь подробно wink

P.S. кстати, вспомнил ... может чем поможет в экспериментах?
Android
Android-x86

#213099
Olej написал:
Как? 
Я не вижу на этом форуме возможности прикреплять файлы  (а там архив).

http://zalil.ru/

Olej написал:
Расскажете потом здесь подробно 

C удовольствием, но мне нужен скомпилированный драйвер.

#213101
anonymous1 написал:
C удовольствием, но мне нужен скомпилированный драйвер.

Так вот ваш драйвер: http://zalil.ru/32245069 wink

Только он вам может пригодится только посмотреть: драйвер компилируется строго под ядро на котором компилируется, а при переносе не станет грузиться.
Совпадения наименований ядер - практически исключены :(
Я вам собрал вот на таком хосте:

text

[olej@notebook _asix]$ uname -r
2.6.32.9-70.fc12.i686.PAE

1. Так что вам остаётся научиться это сделать самому...

P.S. существует способ отменить при загрузке ядра проверку отметки версии, но а). это уже на уровне жестокого хака + б). я не помню как это делается, давненько было wink


2. ... но здесь вылазит снова проблема с Android - его ядро не будет совпадать в любом случае.

#213131
Olej написал:
1. Так что вам остаётся научиться это сделать самому...
P.S. существует способ отменить при загрузке ядра проверку отметки версии, но а). это уже на уровне жестокого хака + б). я не помню как это делается, давненько было 

2. ... но здесь вылазит снова проблема с Android - его ядро не будет совпадать в любом случае.
Отредактировано Olej (Сегодня 13:04:24)

Нда, не выходит с ним :-(
Пишет что под insmod подходит только .o... Ядро у меня '2.6.35.14 FM 1.4gb21d451'.

#213174

anonymous1, всё, что говорил тов. Olej, относится к общей схеме сборки модулей и в данном случае практически бесполезно.
У вас случай не тривиальный.
достаточный набор:
1) кросс-компилятор (для архитектуры целевой системы)
2) дерево исходников с файлами сборки для вашего ядра. если собирать ядро самостоятельно, то оно всегда под рукой, вам же придётся где-то его искать. по идее его должен предоставить производитель.
3) стандартные утилиты: make perl итп

когда это всё соберёте, то дальше дело одной команды: make -C <путь к ядру> M=$(pwd) modules

всё это удобнее делать в настоящем линуксе(в теории возможно и под cygwin, но ССЗБ)

ЗЫ: это всё теория.

#213202
anonymous1 написал:

Нда, не выходит с ним :-(
Пишет что под insmod подходит только .o... Ядро у меня '2.6.35.14 FM 1.4gb21d451'.

Я ведь говорил, что всё будет гораздо интереснее! wink

То, что требует .o для меня - неожиданность (Android специфика).
В принципе, .o (для ранних ядер это и была конечная форма) всегда собирается как промежуточный результат, но ... я его вытер вместе с другими временными файлами из архива, который вам высылал :( :lol:
Я могу пересобрать - попробуйте его втолкать? что они там начудили?

P.S. Если наберётесь упорства, я готов помогать вам пошагово wink - меня так же занимают эти Android-вопросы.

#213203
anonymous1 написал:
Пишет что под insmod подходит только .o... Ядро у меня '2.6.35.14 FM 1.4gb21d451'.

У Android, при его Linux kernel, совершенно не-Linux весь набор утилит (то, что в Linux - GNU) ... я вот здесь Linux для embedded применений начинал разбираться с этими делами, но пока руки не дошли...
Там утилиты (insmod, ...) только по названию совпадают.
И самое противное, что они не имеют --help опции: это можно мотивировать экономией ресурсов Android ... а можно нежеланием раскрывать "открытую" систему wink
Что там в Android? BusyBox? или не BusyBox? или что-то совершенно своё?

А если и BusyBox (или и не BusyBox) то где найти описание команд-утилит Android.

Например, там есть "очень похожие" команды:

text

# ifconfig wlan0
wlan0: ip 192.168.1.22 mask 255.255.255.0 flags [up broadcast running]
# top
User 5%, System 10%, IOW 0%, IRQ 0%
User 19 + Nice 0 + Sys 33 + Idle 273 + IOW 0 + IRQ 0 + SIRQ 0 = 325

PID CPU% S #THR VSS RSS PCY UID Name 989 8% S 52 230712K 33276K fg system system_server 2596 6% R 1 864K 384K fg root top 951 1% S 4 3376K 188K fg root /sbin/adbd 511 0% S 1 0K 0K fg root usb_mass_storag 5 0% S 1 0K 0K fg root events/0 ...

но не удаётся "добыть" из того же ifconfig список существующих интерфейсов, что-то типа:

text

$ ifconfig -a
...

- он на это молчит как партизан на допросе в гестапо :[

#213215

anonymous1, а можно несколько конкретнее, для чего драйвер, какое устройство и т. п.

#213217
zvezdochots написал:
anonymous1, а можно несколько конкретнее, для чего драйвер, какое устройство и т. п.


============================================================================
ASIX AX88178 USB 2.0 Gigabit Ethernet Network Adapter
ASIX AX88772 USB 2.0 Fast Ethernet Network Adapter
ASIX AX88772A USB 2.0 Fast Ethernet Network Adapter
ASIX AX88760 USB 2.0 MTT HUB and USB 2.0 to Fast Ethernet Combo Controller
ASIX AX88772B USB 2.0 Fast Ethernet Network Adapter
Driver Compilation & Configuration on the Linux
============================================================================

This driver has been verified on kernel versions from 2.6.14 to 2.6.38.

Это из readme.

#213221
Olej написал:

То, что требует .o для меня - неожиданность (Android специфика).

Я здесь занимался совсем другим модулем ... и дай гляну (давно не видел wink ), думаю, а как "нормальный" Linux реагирует на .o :

text

[olej@notebook sys_call_table]$ sudo insmod md_0.o 
insmod: error inserting 'md_0.o': -1 Invalid module format

Нормально реагирует! wink

#213262
anonymous1 написал:

Нда, не выходит с ним :-(
Пишет что под insmod подходит только .o... Ядро у меня '2.6.35.14 FM 1.4gb21d451'.

Мне лень детально рыться, искать как подменить метку ядра, но вот это посмотрите, может подскажет (если вы знаете своё ядро):
http://dmilvdv.narod.ru/Translate/LDD3/index.html?linux_device_drivers.html
Перевод знаменитой книжки LDD3: "Драйверы устройств Linux, Третья редакция"


Компиляция и загрузка
...
#213275

Нашёл ядро своего аппарата и даже его исходники. USB сетевуху купил эту. Стоит ~220 рублей с бесплатной доставкой в европу\азию.
От всех этих проблем, чтобы подружить сетевуху и девайс у меня голова скоро треснет...

Времени всё это лопатить и изучать к сожалению пока нет. Но спасибо за советы, попробую возможно в будущем лучше разобраться в линуксе...

#213278
anonymous1 написал:

USB сетевуху купил эту. Стоит ~220 рублей с бесплатной доставкой в европу\азию.

Любопытная штучка...

anonymous1 написал:

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

wink Это проблемы ещё, по-существу и не начинались wink

Войдите или зарегистрируйтесь, чтобы ответить.