Quectel EC200A-CN移植

这篇具有很好参考价值的文章主要介绍了Quectel EC200A-CN移植。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一:usb转串口

usb-serial-option,USB转串口驱动,生产/dev/ttyUSB0-2,分别是DM,AT,PPP
需要使能内核选项如下:

CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_WWAN=y
CONFIG_USB_SERIAL_OPTION=y

Quectel EC200A-CN移植
Quectel EC200A-CN移植

二:usb网卡驱动

USB网卡驱动,模块可通过AT配置成RNDIS或者ecm,默认是ecm。
需要使能内核选项

USB_USBNET=y
USB_NET_CDCETHER=y        #用ECM  使能此项
USB_NET_RNDIS_HOST=y      #用RNDIS 使能此项

Quectel EC200A-CN移植
Quectel EC200A-CN移植

三:源码修改

  1. 增加usb vid和pid
    增加vid和pid,设备连接,使用lsusb命令查看设备的vid和pid,如下图所示:
    Quectel EC200A-CN移植
vid:3763
pid:3c93

文件修改:linux-3.10/drivers/usb/serial/option.c

static const struct usb_device_id option_ids[] = {
#if 1 //Added by Quectel
        { USB_DEVICE(0x3763, 0x3c93) }, /* Quectel EC200A-CN 内置GPS */
        { USB_DEVICE(0x3c93, 0xffff) }, /* Quectel EC200A-CN 外置GPS*/
#endif

文件修改:linux-3.10/drivers/usb/serial/option.c

1790 #if 1 //Added by Quectel
1791 static void cfmakeraw(struct ktermios *t)
1792 {
1793         t->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
1794         t->c_oflag &= ~OPOST;
1795         t->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
1796         t->c_cflag &= ~(CSIZE|PARENB);
1797         t->c_cflag |= CS8;
1798         t->c_cc[VMIN] = 1;
1799         t->c_cc[VTIME] = 0;
1800 }
1801 
1802 static void option_init_termios(struct tty_struct *tty)
1803 {
1804         cfmakeraw(&tty->termios);
1805 }
1806 #endif

文件修改:linux-3.10/drivers/usb/serial/option.c:option_1port_device

1813 static struct usb_serial_driver option_1port_device = {
1814         .driver = {
1815                 .owner =        THIS_MODULE,
1816                 .name =         "option1",
1817         },
1818         .description       = "GSM modem (1-port)",
1819         .id_table          = option_ids,
1820         .num_ports         = 1,
1821         .probe             = option_probe,
1822         .open              = usb_wwan_open,
1823         .close             = usb_wwan_close,
1824         .dtr_rts           = usb_wwan_dtr_rts,
1825         .write             = usb_wwan_write,
1826         .write_room        = usb_wwan_write_room,
1827         .chars_in_buffer   = usb_wwan_chars_in_buffer,
1828         .set_termios       = usb_wwan_set_termios,
1829         .tiocmget          = usb_wwan_tiocmget,
1830         .tiocmset          = usb_wwan_tiocmset,
1831         .ioctl             = usb_wwan_ioctl,
1832         .attach            = option_attach,
1833         .release           = option_release,
1834         .port_probe        = usb_wwan_port_probe,
1835         .port_remove       = usb_wwan_port_remove,
1836         .read_int_callback = option_instat_callback,
1837 #ifdef CONFIG_PM
1838         .suspend           = usb_wwan_suspend,
1839         .resume            = usb_wwan_resume,
1840 #if 1 //Added by Quectel
1841         .reset_resume = usb_wwan_resume,
1842 #endif
1843 #endif
1844 };

文件修改:linux-3.10/drivers/usb/serial/option.c:option_probe

if (serial->dev->descriptor.idVendor == cpu_to_le16(0x3c93))
{
        __u16 idProduct = le16_to_cpu(serial->dev->descriptor.idProduct);
        struct usb_interface_descriptor *intf = &serial->interface->cur_altsetting->desc;

        if (intf->bInterfaceClass != 0xFF || intf->bInterfaceSubClass == 0x42)
        {
                //ECM, RNDIS, NCM, MBIM, ACM, UAC, ADB
                return -ENODEV;
        }

        if ((idProduct&0xF000) == 0x0000)
        {
                //MDM interface 4 is QMI
                if (intf->bInterfaceNumber == 4 &&
                    intf->bNumEndpoints == 3 &&
                    intf->bInterfaceSubClass == 0xFF &&
                    intf->bInterfaceProtocol == 0xFF)
                        return -ENODEV;
        }
}
if (serial->dev->descriptor.idVendor == cpu_to_le16(0x3763))
{
        __u16 idProduct = le16_to_cpu(serial->dev->descriptor.idProduct);
        struct usb_interface_descriptor *intf = &serial->interface->cur_altsetting->desc;

        if (intf->bInterfaceClass != 0xFF || intf->bInterfaceSubClass == 0x42)
        {
                //ECM, RNDIS, NCM, MBIM, ACM, UAC, ADB
                return -ENODEV;
        }

        if ((idProduct&0xF000) == 0x0000)
        {
                //MDM interface 4 is QMI
                if (intf->bInterfaceNumber == 4 &&
                    intf->bNumEndpoints == 3 &&
                    intf->bInterfaceSubClass == 0xFF &&
                    intf->bInterfaceProtocol == 0xFF)
                        return -ENODEV;
        }
}
  1. linux-3.10/drivers/usb/serial/usb_wwan.c:usb_wwan_setup_urb
    usb_wwan_setup_urb函数中添加如下内容
 //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;
 if (desc->idVendor == cpu_to_le16(0x3c93))
         urb->transfer_flags |= URB_ZERO_PACKET;
 if (desc->idVendor == cpu_to_le16(0x3763))
         urb->transfer_flags |= URB_ZERO_PACKET;
 }

四:测试

  1. 查看usb网卡是否生成
ifconfig -a

Quectel EC200A-CN移植

  1. 测试方法一
busybox microcom /dev/ttyUSB2

Quectel EC200A-CN移植
3. 测试方法二文章来源地址https://www.toymoban.com/news/detail-461303.html

cat /dev/ttyUSB2 &
echo AT > /dev/ttyUSB2

到了这里,关于Quectel EC200A-CN移植的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • EC200 EC600 EC20接入工业互联网云平台

    第三方设备接入云盒子说明文档 注册工业互联网云   www.sukon-cloud.com 物联网云盒子能帮助用户迅速搭建好设备管理后台,适合系统集成等用户。 此文章的测试模块使用的是移远的EC600N https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-21884152640.30.ca3d5f90BWNYYoid=653613774417 移远系列的E

    2024年02月03日
    浏览(79)
  • 移远EC200 EC20 EC600 EC800连接MQTT服务器

    前言 移远的CAT1模块EC200S连接MQTT大致流程 ,经过测试,完全有效 A:开机      就是对模块进行断电2S在上电. B:基础配置    这部分跟连TCP服务器一样  (1):发送AT,确认模块是否正常      \\\"ATrn\\\"     模块返回:OK  (2):取消模块回显     \\\"ATE0rn\\\"     模块返回:OK (3)检查SIM是否正常

    2024年02月05日
    浏览(86)
  • 移远4G模块 EC200x EC600 系列AT命令手册

    本文是译至移远官方文档 xxx_AT_Commands_Manual 这款芯片的AT命令集是遵循国际标准3GPPTS27.007、3GPPTS27.005以及Quectel开发的专用AT命令的组合。 AT命令要以前缀的“AT”或“at”为每个命令行的开头,以回车符号为每行结尾。命令后面通常会有一个响应,其中包括“”。在本文档中,

    2024年02月09日
    浏览(50)
  • IoT模组使用笔记(二):EC21、EC200指令流程、设置休眠、升级模组、切换运营商等

    5.1 EC20和5.2 BC20是最开始接触4G模组的使用记录,参考意义不是很大。后来新工作转做Iot,开始慢慢扩充这篇笔记。 如下图所示: 将APN修改为SIM卡对应的运行商,多次发送AT+QICSGP=1,1,“CTNET”,“”,“”,0指令,然后复位开发板即可。如下图所示: EC20模块AT命令讲解 EC20 TCP/IP指

    2024年01月18日
    浏览(44)
  • 移植移远4G模块EC20过程记录3-EC20模块固件升级以适配QMI拨号

    目录 EC20模块固件升级步骤 1、交叉编译升级工具QFirehose 2、将工具QFirehose和待升级的固件EC20CEHDLGR06A09M1G.zip拷贝到板子上 3、在板上解压固件压缩包 4、升级 5、修改Gobinet源码以适配新固件 固件版本低于A08的均不能进行Gobinet拨号上网 源码是QFirehose_Linux_Android_V1.4.9.zip, 解压后

    2024年02月10日
    浏览(48)
  • RK3588 Android13 RM500U-CN移植

    参考lte_rm310配置 移远提供的驱动:Quectel_Linux_Android_QMI_WWAN_Driver_V1.2.6.zip 将驱动压缩包 Quectel_LinuxAndroid_SPRD_PCIE_Driver 解压至 Linux 源码 drivers 目录下,并在该目录下的 Makefile 文件中添加如下内容后直接编译即可。 若 PCIe 驱动被正确移植并编译成功,上位机设备的 dev 目录下会生

    2024年01月19日
    浏览(51)
  • STM32F103 4G Cat.1模块EC200S使用

    EC200S-CN 是移远通信最近推出的 LTE Cat 1 无线通信模块,支持最大下行速率 10Mbps 和最大上行速率 5Mbps,具有超高的性价比;同时在封装上兼容移远通信多网络制式 LTE Standard EC2x(EC25、EC21、EC20 R2.0、EC20 R2.1)和 EC200T/EG25-G/EG21-G 模块以及 UMTS/HSPA+ UC20/UC200T 模块,实现了 3G 网络与

    2024年02月11日
    浏览(42)
  • 嵌入式linux驱动开发之移远4G模块EC800驱动移植指南

    回顾下移远4G模块移植过程, 还是蛮简单的。一通百通,无论是其他4G模块都是一样的。这里记录下过程,分享给有需要的人。环境使用正点原子的imax6ul开发板,板子默认支持中兴和移远EC20的驱动,这里要移植使用的是移远4G模块EC800。 imax6ul开发板 虚拟机(Ubuntu18.04) 交叉编译

    2024年02月17日
    浏览(71)
  • 07_瑞萨GUI(LVGL)移植实战教程之LVGL对接EC11旋转编码器驱动

    本系列教程配套出有视频教程,观看地址:https://www.bilibili.com/video/BV1gV4y1e7Sg 本次实验我们向LVGL库中对接EC11旋转编码器驱动,让我们能通过EC11旋转编码器操作UI。 上次实验得出的工程我们可以通过复制在原有的基础上得到一个新的工程。 如果你不清楚复制工程的步骤,请参

    2024年02月09日
    浏览(43)
  • 嵌入式linux之iMX6ULL驱动开发 | 移远4G模块EC800驱动移植指南

    回顾下移远4G模块移植过程, 还是蛮简单的。一通百通,无论是其他4G模块都是一样的。这里记录下过程,分享给有需要的人。环境使用正点原子的imax6ul开发板,板子默认支持中兴和移远EC20的驱动,这里要移植使用的是移远4G模块EC800。 imax6ul开发板 虚拟机(Ubuntu18.04) 交叉编译

    2024年02月12日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包