完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
56.1 4G 网络连接
对于嵌入式 Linux 而言,4G 网络连接是一个比较容易实现的功能,大多数的 4G 模块接口都是 MiniPCIE接口,但是深入了解一下就会发现,4G 模块的通信接口都是 USB,所以 4G 模块的驱动就是 USB 驱动,只要 USB 驱动正常,4G 模块在硬件上就能正常通信。下面看一下 4G 模块的硬件原理图: 在原理图中,U25 是 4G 模块的 MiniPCIE 接口,然后通信引脚会接到 U15 的 HUB 芯片上,所以 4G 模块会被识别成 USB 设备,CON5 是 SIM 卡接口,在使用 4G 模块时,需要先插入 SIM 卡。在 i.MX6UL 终结者开发板上使用的 EC20 4G 模块,如图 56.1.3 所示: 56.2 EC20 4G 模块配置 56.2.1 添加 USB 设备信息 要使用 EC20 4G 模块首先需要在 Linux 内核中添加 EC20 的 USB 信息,这样内核启动后,才能正确识别 EC20 4G 模块。打开 Linux 内核下的 drivers/u***/serial/option.c 文件,添加如下信息: 1809 /* add support EC220 4G Module */ 1810 { USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */ 1811 { USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */ 1812 { USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20 */ 1813 { USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25/EC20 R2.0 */ 1814 { USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */ 1815 /* end add */ 其中第 1813 行是 EC20 4G 模块的 USB 信息。 56.2.2 Linux 内核配置 添加完 EC20 4G 模块的 USB 信息后,需要修改 Linux 内核配置来支持 USBNET 功能。具体配置如下: Device Drivers ---> Network device support ---> USB Network Adapters ---> Multi-purpose USB Networking Framework 配置如图 56.2.2.1 所示: 接下来我们还需要使能 USB 串口 GSM、CDMA 驱动,配置路径如下: Device Drivers ---> USB support ---> USB Serial Converter support ---> USB driver for GSM and CDMA modems 配置如图 56.2.2.2 所示: 然后配置 ppp,配置路径如下: 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 配置如图 56.2.2.3 所示: 配置完成后,重新编译内核,然后使用新的内核启动开发板。如果配置成功开发板启动后会有如图56.2.2.4 信息打印: 可以看出 EC20 4G 模块识别成功,并且虚拟出 5 个 USB 设备,分别为 ttyUSB0~ttyUSB4。 56.3 EC20 4G 模块联网测试 56.3.1 PPP 软件包编译 首先拷贝 ppp-2.4.4.tar.gz 到 Ubuntu 下,然后执行下面的命令解压: tar -xvf ppp-2.4.4.tar.gz 解压完成得到 ppp-2.4.4 目录,进入 ppp-2.4.4 目录如图 56.3.1.1 所示: 使用 configure 进行配置,命令如下: ./configure 结果如图 56.3.1.2 所示: 配置完成后,使用下面的命令进行编译: make CC=arm-linux-gnueabihf-gcc “CC=arm-linux-gnueabihf-gcc”指定编译器,和开发板 Linux 内核使用同一个编译器。 编译完成如图 56.3.1.3 所示: 编译完成后,分别在 chat、pppd、pppdump、pppstats 四个目录下生成 chat、pppd、pppdump、pppstats可执行文件,用于后面的 4G 模块联网测试。 56.3.2 EC20 4G 模块联网测试 首先安装好 EC20 4G 模块、天线和 SIM 卡,如图 56.3.2.1 所示: 开发板准备好后启动 Linux 系统,待系统启动后,进入/etc 目录,然后创建 ppp 目录,具体命令如下: cd /etc //进入 etc 目录 mkdir ppp //创建 ppp 目录 目录创建完后,使用 U 盘将上一节编译的 chat、pppd、pppdump、pppstats 四个可执行文件拷贝到/etc/ppp目录下,如图 56.3.2.2 所示: 然后在/etc/ppp 目录下创建 pap-secrets 文件,使用下面命令: touch pap-secrets //创建 pap-secrets 文件 vi pap-secrets //打开 pap-secrets 文件 输入如下内容: # Secrets for authentication using PAP # client server secret IP addresses card * card * 在 4G 信号在通信时候有一个密码的比对,密码对了就可以通信了。上面显示用户是 card,密码是 card。 然后创建新文件夹 peers,命令“mkdir peers”。 进入 peers 文件夹,创建 wcdma 文件,命令如下: touch wcdma vi wcdma 输入如下内容: # /etc/ppp/peers/wcdma # This is pppd script for China liantong # Usage: root>pppd call wcdma hide-password noauth connect '/etc/ppp/chat -s -v -f /etc/ppp/peers/wcdma-chat-connect' disconnect '/etc/ppp/chat -s -v -f /etc/ppp/peers/wcdma-chat-disconnect' debug /dev/ttyUSB2 115200 defaultroute noipdefault novj novjccomp noccp ipcp-accept-local ipcp-accept-remote local lock dump nodetach user "card" password "card" crtscts remotename 3gppp ipparam 3gppp usepeerdns 需要注意的是使用/dev/ttyUSB2 设备节点文件。 “user "card"”和“password "card"”对应了 pap-secrets 文件中的用户名和密码。 创建 wcdma-chat-connect 文件: touch wcdma-chat-connect vi wcdma-chat-connect 内容如下: ABORT "BUSY" ABORT "NO CARRIER" ABORT "NO DIALTONE" ABORT "ERROR" ABORT "NO ANSWER" TIMEOUT 120 "" AT OK /rATZ OK /rAT+CGDCONT=1,"IP","3gnet",,0,0 OK-AT-OK ATDT*99# CONNECT /d/c 在这里 OK /rAT+CGDCONT=1,"IP","3gnet",,0,0 OK-AT-OK ATDT*99# 这两句话会根据移动联通或者是电信而变化,这里用的是移动 4G。 创建 wcdma-chat-disconnect 文件: touch wcdma-chat-disconnect vi wcdma-chat-disconnect 内容如下: ABORT "ERROR" ABORT "NO DIALTONE" SAY "INSending break to the modem/n" ""/k" ""+++ATH" SAY "/nGood bye/n" 所需文件创建完成后,就可以进行联网测试了。 首先关闭 eth0 设备,因为和 EC20 4G 模块有冲突,同时只能使用一个设备。命令如下: ifconfig eth0 down 然后在/etc/ppp 目录下输入指令: ./pppd call wcdma & 结果如图 56.3.2.3 所示: 上图表示联网成功后的 IP 地址为 10.47.135.182,使用 ifconfig 命令查看结果如图 56.3.2.4: 这时使用 ping 命令查看能够 ping 通外网,命令如下: ping 202.108.22.5 -c 4 “-c”选项指定 ping 网络的次数。“202.108.22.5”是百度的 IP 地址,结果如图 56.3.2.5: 发现不能 ping 通外网,愿意是因为 DNS 没有设置对,在 etc 下有一个文件 resolv.conf 。这个文件是用来放 DNS 的。就是这个里面的域名没有设置对。然而在 eth0 的运行脚本里强制性的把这个文件复制为了192.168.1.1 。这就造成即便在这里文件里设置上正确的 DNS,再开机后也会发现这个文件里已经是192.168.1.1 了。这是因为 eth0,是开机自启动的。 我们在/etc 目录下新建一个文件 resolv.conf_back: touch resolv.conf_back vi resolv.conf_back 输入如下内容: nameserver 202.99.160.68 nameserver 221.130.33.52 nameserver 221.130.33.60 nameserver 192.168.1.1 然后在新建一个脚本文件 ppp0: touch ppp0 vi ppp0 输入如下内容: #!/bin/sh ifconfig eth0 down cp /etc/resolv.conf_back /etc/resolv.conf /etc/ppp/pppd call wcdma& 修改 ppp0 文件的执行权限: chmod 777 ppp0 这里第一步是将 eth0 关掉,第二步将我们的 DNS 文件覆盖到 resolv.conf 上,第三步运行。然后重新开机,执行 ppp0 脚本,命令如下: /etc/ppp0 脚本执行成功后,重新使用 ping 命令,结果如图 56.3.2.6 所示: 图片显示可以正常 ping 通百度的 IP 地址。至此 EC20 4G 模块就可以正常使用了。 |
|
|
|
只有小组成员才能发言,加入小组>>
733 浏览 0 评论
1132 浏览 1 评论
2512 浏览 5 评论
2846 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2693 浏览 6 评论
684浏览 7评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
996浏览 3评论
198浏览 2评论
如果mmcblk1boot0启动失败可不可以从mmcblk1boot1启动呢
189浏览 2评论
用核心板GPIO直接控制网卡1的复位信号是否会导致液晶屏初始化失败?
231浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 01:46 , Processed in 1.185542 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号