OpenWrt 18.06编译龙尚模块驱动

楼主的OpenWrt编译环境是centos,OpenWrt 18.06,内核版本是4.14.113的

打开内核源码文件 option.c(我的路径为 /openwrt-18.06/build_dir/target-mipsel_24kc_musl/linux-ramips_mt7620/linux-4.14.113/drivers/usb/serial/option.c);

搜索0x1c9e,找到LONGCHEER_VENDOR_ID,这是默认就有的VID,VID指的是某个厂商的编号

PID是厂商的某个产品型号,U9300C 为0x9b3c

模块 U9300/U9507C/W,如果客户平台不使用 adb 口,即 ttyUSB0,在 option.c中将该口过
滤掉。过滤方法如下:

找到函数option_probe

添加以下内容

//Do not use adb for 0th
	if(serial->dev->descriptor.idVendor == LONGCHEER_VENDOR_ID &&
		serial->dev->descriptor.idProduct == Longsung_U9300_PRODUCT_ID &&
		serial->interface->cur_altsetting->desc.bInterfaceNumber == 0){
				printk("GZZ Discover the 0th interface for longsun U9300 ndis\n");
				return -ENODEV;
	}

由于USB串口跟netdev都属于非标准CDC设备,需要防止NDIS口被USB串口驱动加
载而导致无法正常加载NDIS口驱动。

在option_ids数组中

添加龙尚驱动的内容,设置 interface 4 不加载 otpion 驱动

{ 
		USB_DEVICE(LONGCHEER_VENDOR_ID, Longsung_U9300_PRODUCT_ID),
		.driver_info=BIT(4),
	},//longsun u9300c

 

Gobinet 驱动加载

驱动地址:https://github.com/DiUS/sierra-gobi-drivers

1.源码环境根目录下,进入package目录,新建“gobinet”目录,并进入其中,新建“src”目录和Makefile文件;Makefile文件内容如下

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=gobinet
PKG_RELEASE:=1

include $(INCLUDE_DIR)/package.mk

define KernelPackage/gobinet
	SUBMENU:=Other modules
	TITLE:=Support Module for gobinet
	DEPENDS:=+kmod-usb-core +kmod-usb-net
	FILES:=$(PKG_BUILD_DIR)/GobiNet.ko
	AUTOLOAD:=$(call AutoLoad,81,GobiNet)
endef

define KernelPackage/gobinet/description
	This is a gobinet drivers
endef

MAKE_OPTS:=ARCH="$(LINUX_KARCH)" \
	CROSS_COMPILE="$(TARGET_CROSS)" \
	SUBDIRS="$(PKG_BUILD_DIR)"
	
define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)/
	$(CP) -R ./src/* $(PKG_BUILD_DIR)/
endef

define Build/Compile
	$(MAKE) -C "$(LINUX_DIR)" $(MAKE_OPTS) modules
endef

$(eval $(call KernelPackage,gobinet))

2.进入src目录,将驱动源码中的GobiNet文件夹中的内容放入其中

3.make menuconfig,确定以下内容选中

然后make V=s

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章