H5W3
当前位置:H5W3 > JavaScript > Vue相关 > 正文

forlinx OKV1.3开发板上移植EC20

某项目需要在linux下使用EC20模块

  • EC20是无线4G模块,某项目需要在linux系统下支持该模块,根据网上的一些文章,自己完成了移植并实现了功能,将过程记录下来。
  • 1. 添加VID和PID
  • 2、注释掉qcserial.c里面的同名内容
  • 3、添加0包处理
  • 4、添加Reset Resume回调
  • 5、使用GobiNet或者QMI WWAN
  • 6、确认 USB driver for GSM and CDMA modems编入内核

EC20是无线4G模块,某项目需要在linux系统下支持该模块,根据网上的一些文章,自己完成了移植并实现了功能,将过程记录下来。

1. 添加VID和PID

打开内核文件drivers/usb/serial/option.c
为option_ids[]添加以下内容

#if 1 //Added by Quectel
{ USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */
{ USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */
{ USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25/EC20 R2.0 */
{ USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */
{ USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20 */
{ USB_DEVICE(0x2C7C, 0x0191) }, /* Quectel EG91 */
{ USB_DEVICE(0x2C7C, 0x0195) }, /* Quectel EG95 */
{ USB_DEVICE(0x2C7C, 0x0306) }, /* Quectel EG06/EP06/EM06 */
{ USB_DEVICE(0x2C7C, 0x0296) }, /* Quectel BG96 */
#endif

2、注释掉qcserial.c里面的同名内容

由于使用EC20的ID是USB_DEVICE(0x05C6, 0x9003)和USB_DEVICE(0x05C6, 0x9215),所以注释掉qcserial.c里面的同名内容
drivers/usb/serial/qcserial.c
对应上面EC20配置项,注释掉同名的05C6 0x9215forlinx OKV1.3开发板上移植EC20同样的原因要去掉drivers/net/usb/qmi_wwan.c里面的冲突内容。

3、添加0包处理

drivers/usb/serial/usb_wwan.c

usb_fill_bulk_urb(urb, serial->dev,
usb_sndbulkpipe(serial->dev, endpoint) | dir,
buf, len, callback, ctx);
#if 1 //Added by Quectel for Zero Packet
if (dir == USB_DIR_OUT) {
struct usb_device_descriptor *desc = &serial->dev->descriptor;
if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9090))
urb->transfer_flags |= URB_ZERO_PACKET;
if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9003))
urb->transfer_flags |= URB_ZERO_PACKET;
if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9215))
urb->transfer_flags |= URB_ZERO_PACKET;
if (desc->idVendor == cpu_to_le16(0x2C7C))
urb->transfer_flags |= URB_ZERO_PACKET;
}
#endif

如图
forlinx OKV1.3开发板上移植EC20

4、添加Reset Resume回调

这一块是linux设备的电源管理相关,当soc休眠后,一些USB控制器将掉电或复位,MCU退出休眠时,USB不能恢复,所以要添加以下语句
对于版本在3.5以下的内核版本在文件/drivers/usb/serial/usb-serial.c中添加
forlinx OKV1.3开发板上移植EC20

5、使用GobiNet或者QMI WWAN

使用这两个驱动还要修改drivers/usb/serial/option.c文件
forlinx OKV1.3开发板上移植EC20

6、确认 USB driver for GSM and CDMA modems编入内核

forlinx OKV1.3开发板上移植EC20同时在makefile中将对应的模块编入内核

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

重新生成内核,并烧录后,可以测试官方的拨号脚本。

未经允许不得转载:H5W3 » forlinx OKV1.3开发板上移植EC20

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址