http://blog.csdn.net/softwoker/article/details/45598837
配置内核将USB driver for GSM and CDMA modems选上
Cd kernel
Make menuconfig
Devicedrivers->usb surpport->usb serial converter support
选中如下组件
USB driver forGSM and CDMA modems
选中保存后即可编译内核
增加4G设备驱动
修改option.c文件添加设备信息
代码修改路径:
drivers\usb\serial\option.c
找到option_ids[] 结构体表
添加ZTE产品信息
{ USB_DEVICE(0x19d2, 0x0199) },
编译
USB串口过滤ndis接口
由于usb串口跟ndis都属于非cdc设备,需要防止ndis口被usb串口驱动加载ndis驱动无法顺利完成加载
1.在drivers\usb\serial\usb_serial.c文件中usb_serial_probe函数中添加
if ((le16_to_cpu(dev->descriptor.idVendor)== 0x19d2)&&
(le16_to_cpu(dev->descriptor.idProduct)== 0x0199)){
if(1 ==interface->cur_altsetting->desc.bInterfaceNumber){
return -ENODEV;
}
}
由于ndis以库的形式提供,主要包括两个文件:cdc_encap.ko和cdc_ether.ko
2.修改drivers\net中
cdc_ether.c
3.修改Makefile 添加obj-m +=cdc_encap.o
4.将提供的cdc_encap.c和cdc_encap.h拷贝到该目录下
配置内核usbnet驱动方式如下
Cdkernel
Make menuconfig
Devicedriver->Network device surpport->usb Network Adapters
选中如下组件:
<M>Mutil-purpose USB Networking Framework
选中保存后退出编译
ndis驱动加载
编译后生成的usbnet.ko连同ndis驱动一起加入系统启动项中加载,加载顺序为
Insmod usbnet.ko
Insmodcdc_encap.ko
Insmodcdc_ether.ko
带设备枚举完成后,正常加载系统的log中可以查看是否能正常加载成功
ndis驱动接口的使用
驱动编译完成,在嵌入式系统中的terminal中输入 cat /proc/devices
可以查看到eth1设备
然后通过ifconfig-a 查到其网络接口eth1
1 4G模块建立连接AT命令指令
AT口发送指令流程
AT
AT+CFUN = 1;//模块功能全打开,模块每次开机都要设置AT+CFUN = 1,如果觉得麻烦可以设置AT+ZSET = “LTE_INFO”,8掉电后,这个AT+CFUN = 1就保存为默认模块了
AT+CPIN? //返回READY,说明卡在位
AT+CEREG = 1,//启用网络注册的主动上报结果码+CEREG:<stat> 如果STAT的是1或者5表示注册上4G网络
/*AT+CREG? 查询2G AT+CGREG 查询3G AT+CEREG?查询4G 返回第二个参数为1/5表示注册上*/
AT+CGDCONT=1,”IP”,”APN” //设置PDP环境
AT+CGACT=1,1
AT+ZGACT=1,1//只有CEREG注册有效后,这个指令发送才能正常返回
网络连接数据发送接受
//AT+ZGACT=0,1//关闭网络
静态手动设置eth1 IP网关 DNS