4G上网模块ME3760移植到arm开发板上(6410)
2016-11-22 22:53
399 查看
花了一天时间终于让6410开发板ping通www.baidu.com了,下面分享给大家。希望大家少走弯路~
我不知道是不是因为ME3760 V2这个4G模块太偏了,网上没有一个成熟详细的移植教程。官方文档一大堆,但是看得云里雾里的。我将我的移植尽可能详细的记录下来,不一定适用你的环境哈~
一、驱动移植:
1、ECM驱动。ME3760带有两种接口,一种是NDIS接口,一种是ECM接口。首选当然是ECM接口,驱动移植较为简单。可以再串口输入以下模块使模块切换到ECM接口:
下面的步骤可以按照官方手册:
1.1. 增加具体设备驱动
文件: /linux-2.6.18/drivers/usb/serial/option.c
( 注: 说明:在比较早的 linux 版本中,对应的驱动文件为: usb-serial.c 文件,路径可能在..\drivers\usb\serial\usb-serial.c)
找到如下行:
static struct usb_device_id option_ids[] = {
在其下添加内容:
{ USB_DEVICE(0x19d2, 0x0199) },
如图 1 所示:
1.2.Usb 串口驱动过滤 ECM 接口
由于 usb 串口跟 ECM 都属于非标准 cdc 设备,需要防止 ECM 口被 usb 串口驱动加载导致 ECM 驱动无法顺利完成加载。
文件: /linux-2.6.18/drivers/usb/serial/usb-serial.c
找到 usb_serial_probe 函数,在函数中找到如下行:
在其前面添加如下内容:
如图 2 所示:
1.3.编译内核
普通的 3G 数据卡( modem)采用 usb 接口,对上层的功能接口是串口,在 linux 系统中通常使用
usb 转串口的驱动。
驱动添加需要配置系统 linux 系统内核,配置方法如下:
cd kernel
make menuconfig
device drivers--->usb support--->usb serial converter support
选中如下组件:
USB driver for GSM and CDMA modems
选中后保存配置,重新编译内核即可。
至此,插入你的4G模块,出现如下打印:
说明ECM驱动移植成功。我第一次失败了,后来换了光盘另外一个内核源码重复上诉步骤,烧如开发板就OK了,估计是先前的内核配置有点问题。
二、 模块编译。
在这一步,我们要编译出三个重要的模块:usbnet.ko cdc_encap.ko cdc_ether.ko
2.1、usbnet.ko
文件: /linux-2.6.24/drivers/net/usb/cdc_ether.c 本文件改动内容较多,不再一一列举,请直接使用我们提供的文件
cdc_ether.c 替换掉原来的 dc_ether.c。(如果您的内核源代码本来就修改过这个文件,则不宜直接覆盖,请注意保留原来的修改)(如果你没有,在我的资源中可以下载到。)
配置内核:
1、进入内核目录,执行 make menuconfig
2. 依次进入 device drivers--->usb support--->usb serial converter support 将如下组件作为模
块进行编译:
USB driver for GSM and CDMA modems
3. 依次进入 device drivers--->Network device support--->usb Network Adapters 将如下组件
作为模块进行编译:
Mutil-purpose USB Networking Framework
2.2、cdc_encap.ko cdc_ether.ko
将文件 cdc_encap.c 和 cdc_encap.h 拷贝到/linux-2.6.24/drivers/net/usb/目录下。
文件: /linux-2.6.24/drivers/net/usb/Makefile
找到如下行:
obj-$(CONFIG_USB_USBNET) += usbnet.o
在其下添加内容:
obj-m += cdc_encap.o
如图 3 所示:
2.3.在内核源码根模块输入make moudles,便可在/linux-2.6.24/drivers/net/usb/目录下找到usbnet.ko cdc_encap.ko cdc_ether.ko三个模块,通过第100中方法将它拷贝到目标板,这里我推荐用串口rz最简单。
2.4.加载三个模块:
注意顺序!!!
通过ifconfig -a可以查看当前网卡。
至此,驱动成功移植。
三、拨号。
ME3760 V2好像不支持ppp拨号,可以直接用AT直接集。在官方的资料里并没有找到拨号脚本。查阅一番资料,网上有用minicom的,那个交叉编译太麻烦了,后来发现一个busybox自带的很好用的串口软件,microcom,在我的开发板上已经有这个软件,直接输入命令:
-t表示20秒内没有操作就退出串口,-s比特率,最后为AT指令对应的串口。这个不确定的话可以一个个试,输入AT,返回OK说明当前串口正确。
(不知道为啥我的终端不能显示我输入的字符,但是可以正常返回。)
一次输入一下AT指令。
如果一切顺利,如下图所示:
得到的10.15.133.223为IP地址,221.179.38.7为首选DNS, 120.196.165.7为备选DNS.
四、开启网卡。
拨号成功后,还不能正确上网,输入ifconfig -a发现usb0这个网卡是没有IP地址的。网上一般用udhcpc自动分配个IP地址,我这里介绍手动分配我们通过AT指令得到的IP地址。
4.1、打开usb0网卡:
4.2、设置上面得到的IP地址:
4.3、添加路由:默认路由为本身的IP地址。
至此,已经可以ping通IP地址了,但是ping不通网址,因为没有DNS。
4.4、增加DNS。
输入获取到的DNS地址:
保存退出,即可ping通网址。
大功告成。
QQ:501930128
我不知道是不是因为ME3760 V2这个4G模块太偏了,网上没有一个成熟详细的移植教程。官方文档一大堆,但是看得云里雾里的。我将我的移植尽可能详细的记录下来,不一定适用你的环境哈~
一、驱动移植:
1、ECM驱动。ME3760带有两种接口,一种是NDIS接口,一种是ECM接口。首选当然是ECM接口,驱动移植较为简单。可以再串口输入以下模块使模块切换到ECM接口:
echo "AT+ZNCARD=1" > /dev/ttyUSB0
下面的步骤可以按照官方手册:
1.1. 增加具体设备驱动
文件: /linux-2.6.18/drivers/usb/serial/option.c
( 注: 说明:在比较早的 linux 版本中,对应的驱动文件为: usb-serial.c 文件,路径可能在..\drivers\usb\serial\usb-serial.c)
找到如下行:
static struct usb_device_id option_ids[] = {
在其下添加内容:
{ USB_DEVICE(0x19d2, 0x0199) },
如图 1 所示:
1.2.Usb 串口驱动过滤 ECM 接口
由于 usb 串口跟 ECM 都属于非标准 cdc 设备,需要防止 ECM 口被 usb 串口驱动加载导致 ECM 驱动无法顺利完成加载。
文件: /linux-2.6.18/drivers/usb/serial/usb-serial.c
找到 usb_serial_probe 函数,在函数中找到如下行:
type = search_serial_device(interface);
在其前面添加如下内容:
if ((le16_to_cpu(dev->descriptor.idVendor) == 0x19d2) &&
(le16_to_cpu(dev->descriptor.idProduct) == 0x0199)) {
if ((1 == interface->cur_altsetting->desc.bInterfaceNumber)||
( 0 == interface->cur_altsetting->desc.bInterfaceNumber)) {
return -ENODEV;
}
}
如图 2 所示:
1.3.编译内核
普通的 3G 数据卡( modem)采用 usb 接口,对上层的功能接口是串口,在 linux 系统中通常使用
usb 转串口的驱动。
驱动添加需要配置系统 linux 系统内核,配置方法如下:
cd kernel
make menuconfig
device drivers--->usb support--->usb serial converter support
选中如下组件:
USB driver for GSM and CDMA modems
选中后保存配置,重新编译内核即可。
至此,插入你的4G模块,出现如下打印:
说明ECM驱动移植成功。我第一次失败了,后来换了光盘另外一个内核源码重复上诉步骤,烧如开发板就OK了,估计是先前的内核配置有点问题。
二、 模块编译。
在这一步,我们要编译出三个重要的模块:usbnet.ko cdc_encap.ko cdc_ether.ko
2.1、usbnet.ko
文件: /linux-2.6.24/drivers/net/usb/cdc_ether.c 本文件改动内容较多,不再一一列举,请直接使用我们提供的文件
cdc_ether.c 替换掉原来的 dc_ether.c。(如果您的内核源代码本来就修改过这个文件,则不宜直接覆盖,请注意保留原来的修改)(如果你没有,在我的资源中可以下载到。)
配置内核:
1、进入内核目录,执行 make menuconfig
2. 依次进入 device drivers--->usb support--->usb serial converter support 将如下组件作为模
块进行编译:
USB driver for GSM and CDMA modems
3. 依次进入 device drivers--->Network device support--->usb Network Adapters 将如下组件
作为模块进行编译:
Mutil-purpose USB Networking Framework
2.2、cdc_encap.ko cdc_ether.ko
将文件 cdc_encap.c 和 cdc_encap.h 拷贝到/linux-2.6.24/drivers/net/usb/目录下。
文件: /linux-2.6.24/drivers/net/usb/Makefile
找到如下行:
obj-$(CONFIG_USB_USBNET) += usbnet.o
在其下添加内容:
obj-m += cdc_encap.o
如图 3 所示:
2.3.在内核源码根模块输入make moudles,便可在/linux-2.6.24/drivers/net/usb/目录下找到usbnet.ko cdc_encap.ko cdc_ether.ko三个模块,通过第100中方法将它拷贝到目标板,这里我推荐用串口rz最简单。
2.4.加载三个模块:
注意顺序!!!
通过ifconfig -a可以查看当前网卡。
至此,驱动成功移植。
三、拨号。
ME3760 V2好像不支持ppp拨号,可以直接用AT直接集。在官方的资料里并没有找到拨号脚本。查阅一番资料,网上有用minicom的,那个交叉编译太麻烦了,后来发现一个busybox自带的很好用的串口软件,microcom,在我的开发板上已经有这个软件,直接输入命令:
microcom -t 20000 -s 115200 /dev/ttyUSB0
-t表示20秒内没有操作就退出串口,-s比特率,最后为AT指令对应的串口。这个不确定的话可以一个个试,输入AT,返回OK说明当前串口正确。
(不知道为啥我的终端不能显示我输入的字符,但是可以正常返回。)
一次输入一下AT指令。
AT+CFUN=0
AT+CGDCONT=1,"IP"
AT+CFUN=1
AT+CREG=1
AT+CEREG=1
AT+CGACT=1,1
AT+ZGACT=1,1
如果一切顺利,如下图所示:
[root@FriendlyARM /]# microcom -t 20000 -s 115200 /dev/ttyUSB0
+CGEV: ME PDN DEACT 1
+CREG: 0
+CGREG: 0
+CEREG: 0
^MODE: 0
OK
+ZICCID: 898600C2191607060668
OK
+ZPBIC: 1,0
OK
+CREG: 2
+CGREG: 2
+CEREG: 2
+CGEV: ME PDN ACT 1
+CREG: 1
^MODE: 17,9
+CREG: 1
+CEREG: 1
OK
+ZPBIC: 1,1
OK
OK
+ZGIPDNS: 1,1,"IP","10.15.133.223","0.0.0.0","221.179.38.7","120.196.165.7"
OK
得到的10.15.133.223为IP地址,221.179.38.7为首选DNS, 120.196.165.7为备选DNS.
四、开启网卡。
拨号成功后,还不能正确上网,输入ifconfig -a发现usb0这个网卡是没有IP地址的。网上一般用udhcpc自动分配个IP地址,我这里介绍手动分配我们通过AT指令得到的IP地址。
4.1、打开usb0网卡:
ifconfig usb0 up
4.2、设置上面得到的IP地址:
ifconfig usb0 10.15.133.223
4.3、添加路由:默认路由为本身的IP地址。
route add default gw 10.15.133.223
至此,已经可以ping通IP地址了,但是ping不通网址,因为没有DNS。
4.4、增加DNS。
vi /etc/resolv.conf
输入获取到的DNS地址:
nameserver 120.196.165.7
保存退出,即可ping通网址。
大功告成。
QQ:501930128
相关文章推荐
- libxml2移植到OK6410 ARM开发板上...
- tld 算法移植到arm开发板(6410) (一)
- tld 算法移植到arm开发板(6410) (二)
- ARM开发板OK6410移植opencv-2.4.7库qt界面显示(附加各种问题解决方案)
- arm开发板6410移植boa服务器
- 天嵌TQ2440 ARM开发板Uboot移植
- u-boot-2010.03在tq6410上的移植详解(三)
- 移植mysql到tiny6410并附带怎么使6410跑mysql设置
- Linux3.6.7在OK6410平台的移植(十)USB
- UBOOT-2012-10在OK6410平台的移植(七)关于NAND启动
- OK6410移植Linux3.12.16
- 嵌入式成长轨迹66 【智能家居项目】【ARM 飞凌ok6410】【移植智能家居代码时环境调试问题集锦 】
- qt在linux与ok6410上的安装移植(1)——库和编译器安装
- 移植dhcp到ARM开发板
- 移植Mplayer到OK6410开发板
- [置顶] Android ril移植-6410开发板SIM300模块
- libpcap1.0.0移植到arm开发板上
- 移植 sshd到arm开发板
- u-boot-2010.03在tq6410上的移植详解
- OK6410 Qtopia4.4.3和tslib的移植