У меня есть Parrot AR.Drone 2.0 под управлением Ubuntu, и я хочу подключить его к одноплатному компьютеру с помощью кабеля.На дроне нет портов Ethernet, поэтому я решил использовать адаптер USB-Ethernet (D-Link DUB-E100).После ввода uname -a
в терминал я получаю следующую строку:
Linux uclibc 2.6.32.9-g980dab2 #1 PREEMPT Mon Oct 6 11:50:23 CEST 2013 armv7l GNU/Linux
Я следовал этой статье и вместо модуля для Wi-Fi я использовал модуль для адаптера USB-Ethernet.
Вот как я редактировал 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
После этого я скомпилировал ядро со следующими строками:
make
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-
make
Позвольте мне перенести сгенерированный файл 'dub_e100.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
Я предполагаю, что модуль адаптера зависит от модуля mii, поэтому я сгенерировал файл mii.ko
со следующим make-файлом:
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
и dube100.ko
на дроне.Все модули видны в lsmod
.Но после вставки адаптера в дрон он давит и перезагружается.После перезагрузки эти модули отключаются от lsmod
.Есть ли что-то, что я делаю не так?Я мог сгенерировать или запустить модули неправильно.