EC200S驱动移植、PPP拨号

一、 EC200S驱动移植

  1. 下载EC200S驱动

  2. 打开Linux源码的drivers/usb/serial/option.c文件,找到option_ids数组,在数组中加入如下内容:

{ USB_DEVICE(0x2C7C,0x6002) }

在这里插入图片描述

  1. 在drivers/usb/serial/option.c文件中找到option_probe函数,在此函数中添加内容:
	//Quectel UC20's interface 4 can be used as USB Network device
	if(serial->dev->descriptor.idVendor==cpu_to_le16(0x05C6) 
		&& serial->dev->descriptor.idProduct == cpu_to_le16(0x9003)
		&& serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
		return -ENODEV;

	//Quectel EC20(MDM9215)'s interface 4 can be used as USB Network device
	if(serial->dev->descriptor.idVendor== cpu_to_le16(0x05C6) 
		&& serial->dev->descriptor.idProduct == cpu_to_le16(0x9215)
		&& serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
		return -ENODEV;

	if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C)) {
		__u16 idProduct = le16_to_cpu(serial->dev->descriptor.idProduct);
		__u8 bInterfaceNumber = serial->interface->cur_altsetting->desc.bInterfaceNumber;

		//Quectel module's some interfaces can be used as USB Network device (ecm, rndis, mbim)
		if (serial->interface->cur_altsetting->desc.bInterfaceClass != 0xFF)
			return -ENODEV;

		if ((idProduct&0xF000) == 0x6000) {
				//ASR interface 4 is modem port
		}
		else if ((idProduct&0xF000) == 0x8000) {
				//HISI interface 0 is NCM
				if (bInterfaceNumber < 1)
						return -ENODEV;
		}
		else {
				//MDM interface 4 is QMI
				if (bInterfaceNumber >= 4)
						return -ENODEV;
		}
	}

在这里插入图片描述

  1. 继续在 drivers/usb/serial/option.c 文件里面找到 option_1port_device 结构体变量,在里面加入
.reset_resume      = usb_wwan_resume,

在这里插入图片描述

  1. 打开 drivers/usb/serial/usb_wwan.c 文件,在 usb_wwan_setup_urb函数中添加
	if (dir == USB_DIR_OUT) {
		if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6)
 		&& serial->dev->descriptor.idProduct == cpu_to_le16(0x9090))
			urb->transfer_flags |= URB_ZERO_PACKET;

		if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6)
		 && serial->dev->descriptor.idProduct == cpu_to_le16(0x9003))
			urb->transfer_flags |= URB_ZERO_PACKET;

		if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6)
		 && serial->dev->descriptor.idProduct == cpu_to_le16(0x9215))
			urb->transfer_flags |= URB_ZERO_PACKET;

		if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C))
			urb->transfer_flags |= URB_ZERO_PACKET;
	}

在这里插入图片描述

二、内核配置

-> Device Drivers
   -> -*- Network device support
     -> USB Network Adapters
       -> -*- Multi-purpose USB Networking Framework

在这里插入图片描述

-> Device Drivers
	-> [*] USB support
  		 -> <*> USB Serial Converter support
    		 -> <*> USB driver for GSM and CDMA modems

在这里插入图片描述

-> Device Drivers
	-> [*] USB support
  		-> <*> Support for Host-side USB
  			-> <*> USB Modem (CDC ACM) support

在这里插入图片描述

-> Device Drivers
	-> [*] Network device support
	-> <*> PPP (point-to-point protocol) support
	  -> <*> PPP BSD-Compress compression
		-> <*> PPP Deflate compression
		-> [*] PPP filtering
		-> <*> PPP MPPE compression (encryption)
		-> [*] PPP multilink support
		-> <*> PPP over Ethernet
		-> <*> PPP support for async serial ports
		-> <*> PPP support for sync tty ports

在这里插入图片描述

三、编译内核,EC200S-CN使用USB插入V3S的USB-OTG接口。

内核配置好后,编译内核,V3S用新编译的内核启动,接入EC200S-CN模块后,会生成下面几个驱动,说明EC200S-CN的驱动移植成功。
在这里插入图片描述

四、移植ppp

  1. 下载ppp源码
  2. 在ubunt下交叉编译
cd ppp-2.4.4/
./configure //配置
make CC=arm-linux-gnueabihf-gcc //编译

编译完成后会在当前目录下生成chat/chat、 pppd/pppd、 pppdump/pppdump 和pppstats/pppstats 这四个文件,把这四个文件拷贝到V3S文件系统中的/usr/bin目录下。

  1. 在V3S文件系统中创建/etc/gosuncn目录,把下面四个文件拷贝到此目录。
ppp-on.sh
gosuncn_options
gosuncn_ppp_dialer
disconnect.sh

在这里插入图片描述

  1. 启动脚本拨号
./ppp-on &

出现以下信息说明EC200S-CN拨号成功。
在这里插入图片描述

联网测试
在这里插入图片描述

以上出现的驱动、脚本源码在这里下载。点这里

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
STM32是一款广泛应用于嵌入式系统的微控制器,而EC200S是一款支持GSM/GPRS/EDGE/UMTS/HSPA+/LTE等多种网络技术的无线模块。要在STM32上通过EC200S拨号上网,可以按照以下步骤进行: 1. 硬件接线:将EC200S无线模块与STM32微控制器进行连接。具体连接方式可以参考EC200S和STM32的开发板手册或者电路图。 2. 配置串口通信:在STM32的软件开发环境中,配置一个串口通信通道,用于与EC200S进行数据通信。通常情况下,EC200S使用AT指令进行控制和通信,因此选择一个串口作为EC200S的通信端口,并配置相应的参数,例如波特率、数据位数、校验位等。 3. 编写软件代码:在STM32的开发环境中,编写相应的软件代码。首先,通过串口向EC200S发送AT指令,例如AT+CGDCONT指令用于设置移动网络接入点;然后使用ATD*99#指令拨号上网;最后,通过串口接收和解析EC200S返回的数据,以确定拨号是否成功。 4. 处理网络连接状态:在程序中处理网络连接状态。一旦成功拨号上网,STM32可以通过发送和接收数据来与互联网进行通信。如果网络连接中断或者拨号失败,STM32可以尝试重新拨号或者处理错误情况。 需要注意的是,具体的实现可能还需要针对EC200S模块的功能特性和STM32的硬件限制进行适当调整和优化。此外,还需要参考相关的技术文档和开发资料,以确保正确配置和操作各个模块和接口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值