日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

嵌入式设备路由网络共享开发(2):移远Quectel系列4G模块驱动移值

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式设备路由网络共享开发(2):移远Quectel系列4G模块驱动移值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

本文章介紹了在linux系統下,如何修改usb驅動支持移遠模塊,移遠模塊正常啟動后,通過USB連接到linux設備上,驅動正常加載后會在/dev/下產ttyUSB*設備。

一、USB串口驅動

1.1 添加VID和PID? ?

linux下通過lsusb就可以查看USB的VID和PID

#lsusb

Bus 001 Device 011: ID 2C7C:0125

說明這個USB設備的VID為2C7C,PID為0125;

File: [KERNEL]/drivers/usb/serial/option.c

static const struct usb_device_id option_ids[] = { //Added by Quectel { USB_DEVICE(0x2C7C, 0x0125) }, //End by Quectel { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) }, { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_QUAD) }, { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_QUAD_LIGHT) },

1.2 屏蔽沖突

File: [KERNEL]/drivers/usb/serial/qcserial.c

{USB_DEVICE(0x2C7C, 0x0125)}, /* Acer Gobi 2000 Modem device (VP413) */

File: [KERNEL]/drivers/net/usb/qmi_wwan.c

{QMI_GOBI_DEVICE(0x2C7C, 0x0125)}, /* Acer Gobi 2000 Modem device (VP413) */

1.3 添加零包機制

File: [KERNEL]/drivers/usb/serial/usb_wwan.c

static struct urb *usb_wwan_setup_urb(struct usb_serial *serial, int endpoint, int dir, void *ctx, char *buf, int len,void (*callback) (struct urb *)) { ……usb_fill_bulk_urb(urb, serial->dev,usb_sndbulkpipe(serial->dev, endpoint) | dir,buf, len, callback, ctx);//Added by Quectel for zero packetif (dir == USB_DIR_OUT) {struct usb_device_descriptor *desc = &serial->dev->descriptor;if (desc->idVendor == cpu_to_le16(0x2C7C) && desc->idProduct == cpu_to_le16(0x0125))urb->transfer_flags |= URB_ZERO_PACKET;}//End by Quectel for zero packetreturn urb; }

1.4 添加重置

File: [KERNEL]/drivers/usb/serial/option.c

static struct usb_serial_driver option_1port_device = { …… #ifdef CONFIG_PM .suspend = usb_wwan_suspend, .resume = usb_wwan_resume, //Added by Quectel.reset_resume = usb_wwan_resume, //End by Quectel #endif };

1.5 使用添加GobiNet

File: [KERNEL]/drivers/usb/serial/option.c

static int option_probe(struct usb_serial *serial, const struct usb_device_id *id) { struct usb_wwan_intf_private *data; …… //Added by Quectel if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C) && serial->dev->descriptor.idProduct == cpu_to_le16(0x0125) && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)return -ENODEV; //End by Quectel /* Store device id so we can use it during attach. */ usb_set_serial_data(serial, (void *)id); return 0; }

1.6 模塊內核配置

二、? GobiNet驅動

2.1 模塊添加

2.2 添加程序

把Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.0.zip/src/目錄下的文件拷貝到 [KERNEL]/drivers/net/usb/ 下,makefile Readme.txt不拷貝,源碼下載:移遠模塊Linux下GobinNet驅動_quectel-CM-C代碼類資源-CSDN下載

修改[KERNEL]/drivers/net/usb/下的makefile在文件最后添加

obj-y += GobiNet.o
GobiNet-objs := GobiUSBNet.o QMIDevice.o QMI.o

2.3 編譯內核

make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage

三、? 環境變量配置

3.1、udhcpc配置:

把文件default.script拷貝到/usr/share/udhcpc/下:

把文件resolv.conf拷貝到/var/dvr/下,然后

ln ?-s ?/var/dvr/resolv.conf?? ?/etc/resolv.conf

3.2、撥號:

編譯quectel-CM程序源碼,編譯出quectel-CM工具進行撥號;

quectel-CM源碼下載:Linux下移遠4G模塊quectel-CM撥號工具_quectelag35開發板-C代碼類資源-CSDN下載

總結

以上是生活随笔為你收集整理的嵌入式设备路由网络共享开发(2):移远Quectel系列4G模块驱动移值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。