在安裝dnw驅(qū)動(dòng)時(shí)遇到如下報(bào)錯(cuò):
make -C /lib/modules/`uname -r`/build M=`pwd`/src/driver modules
make[1]: Entering directory '/usr/src/linux-headers-4.15.0-30deepin-generic'
make[2]: 放棄循環(huán)依賴(lài) /home/sun/Desktop/Arm/dnw-linux/src/driver/secbulk.o <- /home/sun/Desktop/Arm/dnw-linux/src/driver/secbulk.o 。
LD [M] /home/sun/Desktop/Arm/dnw-linux/src/driver/secbulk.o
ld:沒(méi)有輸入文件
scripts/Makefile.build:580: recipe for target '/home/sun/Desktop/Arm/dnw-linux/src/driver/secbulk.o' failed
make[2]: *** [/home/sun/Desktop/Arm/dnw-linux/src/driver/secbulk.o] Error 1
Makefile:1552: recipe for target '_module_/home/sun/Desktop/Arm/dnw-linux/src/driver' failed
make[1]: *** [_module_/home/sun/Desktop/Arm/dnw-linux/src/driver] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-30deepin-generic'
Makefile:10: recipe for target 'driver' failed
make: *** [driver] Error 2
解決辦法,參考了https://blog.csdn.net/liduxun/article/details/50709714中的方法:
- 修改secbulk.c的makefile,如下:
obj-m := secbulk.o
KDIR := /lib/modules/`uname -r`/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
rm -rf *.order *.symvers
- 修改secbulk.c 文件驅(qū)動(dòng)號(hào),修改前使用
lsusb查看設(shè)備ID,兩部分
static struct usb_device_id secbulk_table[]= {
{ USB_DEVICE(0x18d1, 0x4e26)},
{ }
};
make一下,
如果出現(xiàn)報(bào)錯(cuò),檢查修改的makefile里tab是否是空格此時(shí)應(yīng)該出現(xiàn)了secbulk.ko,加載此文件到內(nèi)核,sudo insmod secbulk.ko,如果沒(méi)出現(xiàn)還要找其他問(wèn)題。查看是否加載驅(qū)動(dòng),
dmesg信息中出現(xiàn)usbcore: registered new interface driver secbulk進(jìn)入dnw文件加 make ,然后make install
dnw會(huì)自動(dòng)復(fù)制到/bin, 這是調(diào)用dnw命令測(cè)試一下dnw是否安裝成功,然后接上開(kāi)發(fā)板,下載個(gè)文件試試,可以看一下
ls /dev中的secbulk*是否存在,開(kāi)發(fā)板上電,我的是secbulk1 ,這時(shí)需要修改dnw.c文件const char* dev = "/dev/secbulk1";重新make、make install,就好了
7.開(kāi)機(jī)自動(dòng)加載該驅(qū)動(dòng),首先sudo 編輯/etc/modules,添加驅(qū)動(dòng)名稱(chēng)secbulk,不帶后綴。然后將驅(qū)動(dòng)secbulk.ko拷貝至/lib/modules/(uname -r)/kernel/drivers/下面的一個(gè)分類(lèi)中,本次我拷貝至了usb下的serial分類(lèi)。
- sudo depmod 更新驅(qū)動(dòng),并重啟,當(dāng)設(shè)備連接上就出現(xiàn)了