LINUX.ORG.RU

Ошибка во время сборки ядра 2.6.32.9

 , ,


0

1

Всем добрый день!

Задал вопрос в двух разделах, так как не знаю, в какой правильнее. Что я хочу сделать:

У меня есть дрон - parrot ARDrone 2.0, на нем установлена Ubuntu. Вот,что выводит команда uname -a:

Linux uclibc 2.6.32.9-g980dab2 #1 PREEMPT Mon Sep 16 11:50:23 CEST 2013 armv7l GNU/Linux

lsb_release отстуствует на данной машине. Имеется порт USB 2.0. Я хочу подключить к нему USB to Ethernet adapter (ссылка) и подключить его через кабель к RPi. Почему к этому пришел - дрон управляется только AT командами (список). Использование wifi - это не вариант, так как идут очень большие помехи, когда рядом большое количество точек доступа. Сам дрон выступает в качестве точки доступа. Также пораллельный вопрос - можно ли как-то отправить AT команду через UART (он есть на дроне), те отправить на Ubuntu и чтобы она там исполнилась. (на самом дроне нету в консоли комманды at). Немного сумбурно получается по AT командам, так как я сам не полностью понимаю, что говорю, я первый раз с ними столкнился. Это собственно задача.

Какая возникла проблема при реализации:

Я студент 4 курса и не профессионал в Linux'e, поэтому я начал с того, что читал форумы, как и что сделать. Как я понял, что в квадрокоптере отключено подключение через USB WLAN адаптеров и вообще всего, кроме накопителей памяти для записи полета. Чтобы это решить, надо пересобрать ядро. Так пишут тут. Собственно начал гуглить. Нашел следующую статью - тык Еще о том, что вообще выдают команды, когда подключаю адаптер:

dmesg

usb 1-1: Product: DUB-E100
usb 1-1: Manufacturer: D-Link Corp.
usb 1-1: SerialNumber: 001DCA
/home/stephane/.ardrone/linux/ardrone2_ARDrone2_Version_20130102/Linux/kernel/omap/drivers/usb/core/inode.c: creating file '002'

lsusb

Bus 001 Device 002: ID 2001:1a02 D-Link Corp. [hex] 
Bus 001 Device 001: ID 1d6b:0002

Так, вернусь к предыдущей ссылке. Ну, вроде, все просто. Начал делать по пунктам:

  • gcc-arm-linux-gnueabi установлен уже был
  • Скачал ядро 2.6.32.9
  • export ARCH=arm
  • export CROSS_COMPILE=arm-linux-gnueabi-

В следующем пункте была проблема, так как очень долго не мог найти конфиг. Но со временем нашел его тут Дальше немного запутался. Парень пишет

Open the arch/asm/configs directory in the kernel and put the configuration file there and rename it to «ardroine_defconfig» and compile the kernel

У меня в папке arch не было asm, но как я подумал, человек имел в виду arm (тут я не уверен), но положил его в папку arm/configs а вот дальше после пункта make ardrone_defconfig возникла проблема, когда я ввел команду make. Собственно выдал ошибку:

include/linux/compiler-gcc.h:86:30: fatal error: linux/compiler-gcc5.h: Нет такого файла или каталога
Нашел решение на этом сайте (ссылка) Дальше возникла следующая ошибка:
init/mounts.o: In function `tty_port_users':
/home/artemii/test/linux-2.6.32.9/include/linux/tty.h:472: multiple definition of `tty_port_users'
Я не нашел в интернете ничего по этому поводу, просто открыл и закомментировал (не особо хорошее решение). После запустил - пошло дальше, но после выдало опять типо такой ошибки, опять повторное определение. Закоментил, но уже не помогло.

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

Заранее спасибо!


Задал вопрос в двух разделах, так как не знаю, в какой правильнее.

При необходимости модераторы перенесут в нужный раздел. Плодить дубли плохо.

r3lgar ★★★★★
()

можно ли как-то отправить AT команду через UART

Лучше двигайся в этом направлении.
Что кажет netstat -putan?

на самом дроне нету в консоли комманды at

nc, ncat, netcat, socat ?

arson ★★★★★
()

Те ядра не собирались пятой версией gcc и не тестировались в таком варианте сборки. Попробуйте взять дистрибутив с такой же версией ядра и компилятор из него.

Или курите https://gcc.gnu.org/gcc-5/porting_to.html , ваш ″multiple definition″ связан с изменением в определении inline функций (переходом от GNU89 к C99). Но вам нужно самому понять синтаксис и делать нормальные правки кода, а не комментировать строки с ошибками.

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

netstat -putan

В busybox -p нет, если ругается - выкинь.

arson ★★★★★
()

AT-команды и команда at — «разные вещи». Как сейчас взаимодействуете с бортовым linux дрона?

Конечная цель? (ну после того, как сделаете новое ядро, сможете «установить» его в firmware дрона, кабель-адаптер подключите ...) Управлять дроном через кабель?

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

Вот, что выводит команда netstat -putan:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:5551            0.0.0.0:*               LISTEN      824/inetd
tcp        0      0 0.0.0.0:5553            0.0.0.0:*               LISTEN      828/program.elf
tcp        0      0 0.0.0.0:5555            0.0.0.0:*               LISTEN      828/program.elf
tcp        0      0 0.0.0.0:5557            0.0.0.0:*               LISTEN      828/program.elf
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      824/inetd
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      943/telnetd
tcp        0      0 0.0.0.0:5559            0.0.0.0:*               LISTEN      828/program.elf
tcp        0      0 192.168.1.1:23          192.168.1.2:45516       ESTABLISHED 943/telnetd
udp        0      0 0.0.0.0:5552            0.0.0.0:*                           955/parrotauthdaemo
udp        0      0 0.0.0.0:5554            0.0.0.0:*                           828/program.elf
udp        0      0 0.0.0.0:5555            0.0.0.0:*                           828/program.elf
udp        0      0 0.0.0.0:5556            0.0.0.0:*                           828/program.elf
udp        0      0 0.0.0.0:67              0.0.0.0:*                           945/udhcpd
udp        0   3312 0.0.0.0:14551           0.0.0.0:*                           828/program.elf

Вот, что выводит без -putan:

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
tcp        0      0 192.168.1.1:23          192.168.1.2:45516       ESTABLISHED 
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  3      [ ]         DGRAM                      1061 /dev/log
unix  2      [ ]         DGRAM                       599 @/org/kernel/udev/udevd-ujuba
unix  2      [ ]         DGRAM                      1063 
unix  3      [ ]         DGRAM                       602 
unix  3      [ ]         DGRAM                       601 

Из тех команд, которые вы перечислили, присутствует только nc. Сейчас почитаю про нее.

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

На данный момент связь осуществляется следующим образом: Разработчики предоставляют SDK для работы с квадрокоптером. Дальше есть драйвер для ROS'a, который использует данную SDK. Собственно я и использую драйвер роса. Я подключаюсь к точке доступа, которую раздает квадрокоптер. После запускаю драйвер. В самом драйвере всё сводится к общению AT командами. Моя цель - это запустить тех.зрение. Но так как по вайфаю передавать изображение в условиях достаточно засоренного канала - такое себе, то я решил поставить RPi на коптер, к ней подрубить камеру, чтобы уже не пересылать с дрона поток фотографий, да и вообще на дроне нижняя камера очень плохая. А на RPi запустить драйвер роса, поключиться через кабель к дрону и просто взаимодействовать так же, как я взаимодействовал до этого с компьютера. Только теперь будет кабель, что кажется мне более надежным.

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

У меня еще такой вопрос, можно ли реализовать следующее: На дроне стоит linux. Прошивка в квадрокоптере закрыта, доступа до нее у меня нету. Есть только доступ отдельно ко всем датчикам и двигателям, но это мне не подходит, так как я хочу использовать уже готовый автопилот, который есть на нем. И дрон управляется с помощью SDK, о которой я написал выше, только посредством отправлением AT команд по WiFi, когда мы непосредственно подключены к нему. Также есть UART порт на дроне. Можно ли как-то подключиться к дрону по UART и передавать эти AT команды, чтобы дрон воспринимал их и также реагировал на команды? Собственно подключаться хочу с Raspberry Pi, который будет установлен непосредственно на квадрокоптере.

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

Насколько я вас понял, то нет - не собирались. Все люди, которых я нашел, делали это еще года так три назад. Сейчас попробую взять дистрибутив с такой же версией ядра и на нем собрать. (вы же это имели в виду?)

Насчёт ссылки, спасибо, сейчас прочту, но мне кажется, что я быстрее на другом дистрибутиве соберу, чем сам все исправлю)

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

Можно ли как-то подключиться к дрону по UART и передавать эти AT команды

Ты netstat через UART вводил?
Введи nc -u 127.0.0.1 5556 и попробуй отдавать AT-команды

arson ★★★★★
()
Последнее исправление: arson (всего исправлений: 1)
Ответ на: комментарий от art97

Также, еще я нашел вот эту статью. Я проделал все, что там написано. Все получилось. Парень пишет, что можно устанавливать теперь, что захочу. Я попробовал просто make установить, вот, что выдало:

root@uclibc:/# apt-get install make
Reading package lists... Done
Building dependency tree... Done
Suggested packages:
  make-doc
The following NEW packages will be installed:
  make
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 105 kB of archives.
After this operation, 266 kB of additional disk space will be used.
Err http://ports.ubuntu.com/ubuntu-ports/ precise/main make armel 3.81-8.1ubuntu1
  Temporary failure resolving 'ports.ubuntu.com'
Failed to fetch http://ports.ubuntu.com/ubuntu-ports/pool/main/m/make-dfsg/make_3.81-8.1ubuntu1_armel.deb  Temporary failure resolving 'ports.ubuntu.com'
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
[bash]

Собственно, команды-то появились, но я не знаю, может ли мне это как-то помочь, так как установить мне ничего не удалось.

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

У них UART вроде только для прошивки нового firmware.

По wiki AT-команды управляют полётом и настройки могут менять.

Штатное управление через WiFi с помощью AT-команд (как я понял). Через кабель просто не предусмотрено — ну допустим Вы это преодолеете. Стартовая масса (RPi, кабель, камера) вырастет. Опять же питать RPi и камеру нужно... Если «заведётся», дрон потеряет в автономности и летных характеристиках. А может и не «потянуть» (во всех смыслах). Видео планируете транслировать или писать в файл?

Возможность «просто замены» камеры не рассматривали?

С другой стороны в их wiki описывается трансляции видео в реальном времени (View ARDrone 2 live video). Предполагаю, что низкое качество выбрано из-за технических ограничений дрона.

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

Там где-то писалось, что он поднять может 100 грамм. Я его облегчил, сняв с него всякие пластины и тд. Те сейчас он может поднять грамм так 130. Если взвесить PRi(45 грамм по описанию) вместе с кабелем и камерой(порядка 20), то я укладываюсь в этот вес, даже меньше получается. Видео не записывается. Оно в реальном времени обрабатывается на RPi. Тут проблем нет. По WiFi выдает 50 кадров в секунду. Те у меня все отлично работает, кроме связи. Мне надо что-то придумать, чтобы уйти от этого WiFi.

Я просто знаю, что человек пересобрал ядро и запустил свисток 5G на нем (на данный момент не могу с ним связаться, чтобы он пояснил, как он там все сделал). Если он запустил свисток, то по идее и я смогу запустить адаптер.

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

Я вводил через telnet. Сейчас попробовал - не получилось. На штатной машине нету клюса -u. Я через флешку попробовал, он там есть, но реакции никакой не последовало

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

Удачи. Старые ядра правильнее собирать старым компилятором. Ядро сильно привязано к версии gcc. Даже если старое ядро скомпилируется новым, там может быть код, который после компиляции новым компилятором будет работать неправильно. Так что ищите старые дистрибутивы...

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

опять же (насколько я понял): разработчики «заточили» своё firmware на режим автопилота. Т.е. «закладывают» маршрут с ноута (ПК), а не управляют «вручную».

Вы планируете управлять дроном с RPi. А RPi будет получать команды от Вас (снова по WiFi)?

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

Покажите код (какой через telnet вводили и как сейчас). А флешка это с «другим» линуксом в chroot? Если да, то он почти наверняка «не ждет/знает» никаких AT-комманд. Выполните в нём netstat -putan и сравните вывод с ответом «оригинального» linux.

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

Да. Разработчики заточили управление со своей SDK. Но я собираюсь управлять автономно. Те у меня задача - полет по траектории, опираясь на данные с камеры. Я и не буду управлять дроном, он будет сам генерировать сигналы управления и отправлять образно в сдк, которая уже и будет отправлять AT команду на дрон посредством кабеля.

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

Вот только что повзвешивал все. Мне удалось уменьшить вес коптера на 127 грамм. Плюс коптер у меня нормально летал с примерно 50 граммами. Те в запасе как минимум 177 грамм, что много больше, чем мне нужно.

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

Не понял, что значит:

какой через telnet вводили и как сейчас

Я все вводил через telnet. Да я прописывал chroot /mnt/ubuntu/ /bin/bash Ну вот собственно я подключался к telnet:

Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.



BusyBox v1.14.0 () built-in shell (ash)
Enter 'help' for a list of built-in commands.

Вот, что выводит с флешки:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:5551            0.0.0.0:*               LISTEN      822/inetd       
tcp        0      0 0.0.0.0:5553            0.0.0.0:*               LISTEN      826/program.elf 
tcp        0      0 0.0.0.0:5555            0.0.0.0:*               LISTEN      826/program.elf 
tcp        0      0 0.0.0.0:5557            0.0.0.0:*               LISTEN      826/program.elf 
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      822/inetd       
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      934/telnetd     
tcp        0      0 0.0.0.0:5559            0.0.0.0:*               LISTEN      826/program.elf 
tcp        0      0 192.168.1.1:23          192.168.1.2:47838       ESTABLISHED 934/telnetd     
udp        0      0 0.0.0.0:5552            0.0.0.0:*                           946/parrotauthdaemo
udp        0      0 0.0.0.0:5554            0.0.0.0:*                           826/program.elf 
udp        0      0 0.0.0.0:5555            0.0.0.0:*                           826/program.elf 
udp        0      0 0.0.0.0:5556            0.0.0.0:*                           826/program.elf 
udp        0      0 0.0.0.0:67              0.0.0.0:*                           936/udhcpd      
udp        0    736 0.0.0.0:14551           0.0.0.0:*                           826/program.elf 

А вот вывод оригинального:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:5551            0.0.0.0:*               LISTEN      822/inetd
tcp        0      0 0.0.0.0:5553            0.0.0.0:*               LISTEN      826/program.elf
tcp        0      0 0.0.0.0:5555            0.0.0.0:*               LISTEN      826/program.elf
tcp        0      0 0.0.0.0:5557            0.0.0.0:*               LISTEN      826/program.elf
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      822/inetd
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      934/telnetd
tcp        0      0 0.0.0.0:5559            0.0.0.0:*               LISTEN      826/program.elf
tcp        0      0 192.168.1.1:23          192.168.1.2:47838       ESTABLISHED 934/telnetd
udp        0      0 0.0.0.0:5552            0.0.0.0:*                           946/parrotauthdaemo
udp        0      0 0.0.0.0:5554            0.0.0.0:*                           826/program.elf
udp        0      0 0.0.0.0:5555            0.0.0.0:*                           826/program.elf
udp        0      0 0.0.0.0:5556            0.0.0.0:*                           826/program.elf
udp        0      0 0.0.0.0:67              0.0.0.0:*                           936/udhcpd
udp        0   3312 0.0.0.0:14551           0.0.0.0:*                           826/program.elf

Вот в линуксе, куда чрутился, я прописал следующее: nc -u 127.0.0.1 5556

А после отправил команду, которую взял из книжки для разработчиков для дрона:

Example : The following commands sent in a standalone UDP packet will send an emergency signal : AT*REF=1,290717696 <CR> AT*REF=2,290717952 <CR> AT*REF=3,290717696 <CR>

Может быть я полную чушь отправил, поэтому он не понял. У меня вопрос, почему вы прописали именно этот адресс - 127.0.0.1 ?

И еще вопрос, что делать, если на оригинальной такое нельзя отправить, те -u ключа нет?

Вот, что выводит оригинальная:

# nc -u 127.0.0.1 5556
nc: invalid option -- 'u'
BusyBox v1.14.0 () multi-call binary

Usage: nc [-iN] [-wN] [-l] [-p PORT] [-f FILENAME|IPADDR PORTNUM] [-e COMMAND]

Open a pipe to IP:port or file

Options:
        -e      Exec rest of command line after connect
        -i SECS Delay interval for lines sent
        -w SECS Timeout for connect
        -f FILE Use file (ala /dev/ttyS0) instead of network
        -l      Listen mode, for inbound connects
                (use -l twice with -e for persistent server)
        -p PORT Local port number

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

ядра 2.6
28.09.2018

хм...

Deleted
()
Ответ на: комментарий от art97

Если я Вас правильно понял, то должно «ввестись» в порт Это. У Вас отправилось такое. Разницу можно увидеть просмотрев вывод команды hd.

~$ hd AT_cr 
00000000  41 54 2a 52 45 46 3d 31  2c 32 39 30 37 31 37 36  |AT*REF=1,2907176|
00000010  39 36 0d 0a                                       |96..|
00000014

~$ hd AT_
00000000  41 54 2a 52 45 46 3d 31  2c 32 39 30 37 31 37 36  |AT*REF=1,2907176|
00000010  39 36 0a                                          |96.|
00000013

Всмысле без завершающего/разделяющего символа <Cr> — поэтому и реакции на команду не было.

Или через телнет в оригигальном окружении команды выполнялись?

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

Добрый вечер, я попробовал то, что вы сказали - реакции у коптера не последовало.

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

Я собрал ядро. После перехожу к следующим пунктам:

After you download the driver's source code, edit its makefile to use
CROSS_COMPILE := arm-linux-gnueabi-
LINUX_SRC = location of kernel
LINUX_SRC_MODULE = (location of kernel)/drivers/net/wireless/

Вот Makefile:

CURRENT	= $(shell uname -r)
TARGET	= DUB_E100
OBJS	= DUB_E100.o
MDIR	= drivers/net/usb
KDIR	= /lib/modules/$(CURRENT)/build
SUBLEVEL= $(shell uname -r | cut -d '.' -f 3 | cut -d '.' -f 1 | cut -d '-' -f 1 | cut -d '_' -f 1)

ifneq (,$(filter $(SUBLEVEL),14 15 16 17 18 19 20 21))
MDIR = drivers/usb/net
endif

EXTRA_CFLAGS = -DEXPORT_SYMTAB
PWD = $(shell pwd)
DEST = /lib/modules/$(CURRENT)/kernel/$(MDIR)

obj-m      := $(TARGET).o

default:
	make -C $(KDIR) SUBDIRS=$(PWD) modules

$(TARGET).o: $(OBJS)
	$(LD) $(LD_RFLAG) -r -o $@ $(OBJS)

install:
	su -c "cp -v $(TARGET).ko $(DEST) && /sbin/depmod -a"

clean:
	$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean

.PHONY: modules clean

-include $(KDIR)/Rules.make

Я так понимаю, что я не могу просто так вставить эти строчки, заменив все на свою папку с ядром?

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

Да, нужно редактировать makefile. Определите там KDIR и DEST на ваши каталоги с исходниками ядра и модулями, без всяких CURRENT, просто напрямую.

ARCH и CROSS_COMPILE задавате в командной строке при запуске make или в makefile'е через export https://stackoverflow.com/questions/3467850/cross-compiling-a-kernel-module .

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

Добрый вечер. Я отредактировал makefile:

TARGET	= dub_e100
OBJS	= dub_e100.o
MDIR	= drivers/net/usb
KDIR	= /home/artemii/Downloads/linux

EXTRA_CFLAGS = -DEXPORT_SYMTAB
PWD = $(shell pwd)
DEST = /home/artemii/Downloads/linux/$(MDIR)

obj-m      := $(TARGET).o

default:
	make -C $(KDIR) SUBDIRS=$(PWD) modules

$(TARGET).o: $(OBJS)
	$(LD) $(LD_RFLAG) -r -o $@ $(OBJS)

install:
	su -c "cp -v $(TARGET).ko $(DEST) && /sbin/depmod -a"

clean:
	$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean

.PHONY: modules clean

-include $(KDIR)/Rules.make

После в командной строке прописываю:

export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-

И ввожу команду make. Все собирается, генерируется .ko файл. Я его перекидываю на дрона и ввожу:

insmod dube100.ko

Выдает следующее

insmod: can't insert 'dub_e100.ko': unknown symbol in module, or unknown parameter

Проверяю dmesg | tail

usb 1-1:1.0: uevent
dub_e100: Unknown symbol mii_ethtool_sset
dub_e100: Unknown symbol mii_link_ok
dub_e100: Unknown symbol mii_nway_restart
dub_e100: Unknown symbol generic_mii_ioctl
dub_e100: Unknown symbol mii_ethtool_gset

Меняю makefile:

TARGET	= dub_e100
OBJS	= dub_e100.o
MDIR	= drivers/net/usb
KDIR	= /home/artemii/Downloads/linux

EXTRA_CFLAGS = -DEXPORT_SYMTAB
PWD = $(shell pwd)
DEST = /home/artemii/Downloads/linux/$(MDIR)

obj-m      := $(TARGET).o
obj-m += mii.o

default:
	make -C $(KDIR) SUBDIRS=$(PWD) modules

$(TARGET).o: $(OBJS)
	$(LD) $(LD_RFLAG) -r -o $@ $(OBJS)

install:
	su -c "cp -v $(TARGET).ko $(DEST) && /sbin/depmod -a"

clean:
	$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean

.PHONY: modules clean

-include $(KDIR)/Rules.make

Генерируется файл mii.ko

Запускаю на дроне сначала mii.ko, после dube100.ko. Модули теперь видны в lsmod. Подключаю к дрону адаптер, он тут же перезапускается, собственно слетают эти два драйвера.

Не можете подсказать, почему так происходит? Драйвер не правильно собран? Или нельзя так делать? (по отдельности грузить)

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

Чтобы не гадать с ″Unknown symbol″, делают после сборки ядра ″make modules_install″, все модули скидываются в каталог /lib/modules/$(KERNELRELEASE), туда же можно/нужно скопировать ваш модуль. Потом запускать depmod и получать текстовый файл, где записано какой модуль от каких зависит.

Но это всё так, раз у вас модуль загрузился и что-то написал в dmesg, значит зависимости разрешились и архитектура процессора (набор команд) правильные. Какая-то ошибка/несовместимость в модуле, которая приводит к сбою и перезагрузке...

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

Это возможно как-то отловить? Или выяснить почему? Официально этот адаптер поддерживает версию данного ядра. Плюс проверил сам адаптер на винде и 16.04. На последнем запустился вообще сразу, без всяких дополнительных драйверов.

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

То, что адаптер работает под 16.04 это хорошо, но по хорошему его нужно проверять как минимум под той версией ядра, а ещё лучше вобще на arm'е, а не на x86.

Ну, по идее, ошибка в модуле ведёт к панике ядра, с сообщением в системную консоль и перезагрузке (по таймауту в /proc/sys/kernel/panic). Если системная консоль непонятно где, то может получится поднять netconsole через wi-fi. Но, если у вас всё на одной шине usb и драйвер ещё подвешивает, может ничего и не получится. Но если получится, то тогда можно будет в модуль пихать отладочные сообщения (printk) и перекомпилировать и понимать, в каком именно месте возникает паника.

И может вобще проблема в питании, может ваш адаптер usb-ethernet в момент активации линка создаёт большой импульс тока, просаживающий всё питалово и ребут аппратный.

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)
Ответ на: комментарий от mky

Спасибо всем огромное за помощь!!! Я просто собрал другой драйвер, и все заработало!

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

У меня возникла ещё одна ошибка, которую я не особо представляю, как мне решить и самое главное - из-за чего она происходит

Я не стал создавать отдельную тему (не знаю, хорошо это или плохо)

Суть проблемы в следующем. Я установил драйвера на дрон для сетевого адаптера. Tx и Rx индикаторы загорелись.

Что я делал дальше: (Хочу скачать, что я полный 0 в сетях, поэтому я просто начал с того, что стал читать, как поднять тот или иной интерфейс. Поигрался немного с домашним wifi)

Все действия производятся на дроне

1) Первое моей действие было

ifconfig eth0 192.168.5.1 netmask 255.255.255.0 broadcast 192.168.5.255 up

2) Дальше

udhcpd /etc/udhcpd.eth0.conf

Сам файл udhcpd.eth0.conf:

start 192.168.5.100
end 192.168.5.200
interface eth0
option subnet 255.255.255.0
option router 192.168.5.1
option lease 1200

3) Тут я стал плясать от радости. Все заработало. Прописываю

telnet 192.168.5.1
Мне открывается бизибокс и я спокойно могу взаимодействовать с дроном.

После я запускаю библиотеку для дрона, все проходит отлично. И через 1 или две секунды сеть падает. Я не знаю точно, что с ней происходит. Сами сигналы Tx и Rx горят. (Я не привожу вывод никаких команд, так как не знаю, что нужно показать) Я прошу помощи или хотя бы направления, в котором покопать. Как посмотреть, что происходит, почему так происходит?

Заранее огромное вам спасибо!

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

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

Посмотрите сообщения в dmesg. Если там при проадании связи драйвер ругается, значит что-то аппаратное.

WiFi при подключении по ethernet подключен? Может вы выдаёте адреса из одной подсети на эти интерфейсы?

Смотрите на дроне, остаётся ли ip-адрес на интерфейсе, остаётся ли маршрут через этот интерфейс и ещё можно посмотреть, не возникает ли неправильной записи в arp-таблице (arp -n).

И аналогично смотрите, что на компе с конфигурацией сетевого интерфейса.

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