(0)分享到4G模块是连接物与物的重要载体,是终端设备接⼊物联⽹的核⼼部件之⼀,随着4G的普及,许多新兴市场对4G的需求都在⽇益扩⼤,那么在ARM平台的嵌⼊式设备上如何快速的应⽤4G模块呢?
4G通信模块把频率接收器和信号等部件全都整合在⼀起,实现了⼀体化。随着⼯业发展,嵌⼊式设备接⼊⽹络的需求⽇益增多,在没有有线或WiFi等⽆线的环境下,直接通过4G通讯模块连接运营商⽹络来接⼊互联⽹不失为⼀个好⽅法。因此,本⽂就为读者介绍⼀下基于ARM平台的嵌⼊式设备在Linux下使⽤4G模块的⽅法。
⼀、开发环境
1) 开发主机环境:
Ubuntu12.04(64位)、arm-fls-linux-guneabi-gcc系列交叉编译链。
2) 硬件清单:
IoT-3960⼯控板、龙尚 4G模块U8300C或U8300W。
3) 软件资源:
光盘EPC-280_283_287V1.04.iso中的内核源码包:linux-2.6.35.3-fec60fa.tar.bz2。
⼆、硬件概述
IoT-3960L 是⼴州致远电⼦股份有限公司以Freescale i.MX287处理器为核⼼开发的⼯业IoT⽹络控制器,集成多路通信接⼝,⽀持多种通信协议,具有性价⽐⾼、功能丰富、⼯作稳定、兼容性强等特点,产品实物如图1所⽰。
1 IoT-3960L⼯控板
通过⾃定义的 Mini-PCIE 接⼝,IoT-3960L 可外扩3G、4G、GPRS、ZigBee、RFID 等⽆线通信模块。本⽂外扩的是龙尚4G 模块,所⽤的型号如图2所⽰。
2 龙尚4G模块U8300C、U8300W
三、技术实现
1、解压内核源码
将 EPC-280_283_287 V1.04.iso 光盘中的linux-2.6.35..3-fec60fa.tar.bz2 源码包复制到ubuntu 系统的“~/”⽬录下,将其解压后可得到linux-2.6.35.3 ⽬录,参考命令如下:
vmuser@Linux-host:~$ tar -jxvf linux-2.6.35..3-fec60fa.tar.bz2如何在vim中运行命令
2、修改配置⽂件
在内核源码⽬录“drivers/gpio/”下的Kconfig ⽂件中有设定了CONFIG_GPIO_M28X 宏的默认配置,⽤vim编辑器打开这个Kconfig ⽂件,搜索“GPIO_M28X”,到其配置设定,将其修改为可独⽴配置的选项,修改后的配置如下所⽰(红⾊标识的为修改部分):
config GPIO_M28X
tristate "GPIO support for MiniPCI-E slot control"
#depends on IoT_3960 || IoT_3962
help
Say yes here to enable the IoT_396x board gpio driver.
3、修改内核编译脚本
Linux 源码⽬录下的build-kernel 脚本⽂件主要⽤于切换内核默认配置,但因光盘中的该脚本⽂件设置不够灵活,建议直接将build-kernel⽂本内容整体替换为如图 3所⽰的代码:
3 build-kernel ⽂件内容
4、配置内核源码
进⼊解压后的 Linux 源码根⽬录,使⽤IoT-3960L 的默认内核配置,参考命令如下:
vmuser@Linux_host:~/ linux-2.6.35.3$ ./build-kernel
然后输⼊6 选择Iot3960,如果是其他⼯控板或开发套件,则选择对应的选项即可,如果对应的Linux 源码根⽬录下没有.config ⽂件,运⾏该步骤操作后会提⽰cp 命令执⾏错误,直接忽略此错误即可。
⼯控板或开发套件使⽤ USB 接⼝来与龙尚4G 模块通信,需要配置内核以⽀持USB转串⼝功能。参考命令如下:
vmuser@Linux-host:~/ linux-2.6.35.3 $ make menuconfig
进⼊配置界⾯后,按回车键进⼊“Device Drivers --->”选项,配置完内核后,保存并退出内核配置操作。
5、修改&编译内核源码
4G通信模块在ARM平台下的应⽤
对龙尚4G模块,我们需要在linux-2.6.35.3 ⽬录下对三个数组中的内容进⾏修改:
l 使⽤vi 或者vim 命令打开drivers/gpio/gpio_m28x.c ⽂件,在all_gpios_info[ ]数组作中作修改;
l 使⽤vi 或者vim 命令打开arch/arm/mach-mx28/mx28evk_pins.c ⽂件,在mx28evk_fixed_pins []数组中作修改;
l 使⽤vi或者vim命令打开drivers/usb/serial/option.c ⽂件,在option_ids[]数组中作修改。
按上述操作修改完成之后,就可以编译内核了,内核编译参考命令如下:
vmuser@Linux-host:~/ linux-2.6.35.3 $ make uImage
待内核编译完成后,将⽣成的uImage ⽂件(可在arch/arm/boot ⽬录下到)烧写到⼯控板或开发套件上,烧写⽅法请参考《IoT-3960 ⽤户⼿册.pdf》第6 章的内容。
四、4G 模块测试
这⾥主要介绍龙尚4G模块的电话、⽹络等控制接⼝以及IoT-3960L⼯控板对其操作的通信流程。⽤于测试的⼯控板必须烧写EPC-280_283_287 V1.04.iso 光盘中V1.03的uboot 及⽂件系统,因为其中包含必要的拨号上⽹⼯具。
1、电话控制接⼝
电话接听和拨打命令如表1所⽰。通过向串⼝发送相应的命令就可以实现电话的接听和拨打。如:可以向串⼝发送“ATD12345678901;\n\r”就可以向12345678901。
1 电话拨打和接听控制命令表
命令语法及作⽤
:ATD+电话+;\r\n”如ATD10010;后⾯分号
ATD
不能少,返回OK 或ERROR
AT+COPS?“AT+COPS?\r\n”检测运营商,返回OK 或ERROR
AT+CVHU=0和ATH挂断电话:“AT+CVHU=0\r\n”再发“ATH\r\n”
ATA接听电话:“ATA\n\r”
电话拨打接听代码执⾏流程如图4所⽰。代码⾸先会显⽰可供使⽤的菜单,如电话拨打,短信接收等。等待⽤户输⼊参数,执⾏参数对应的流程。然后判断是否执⾏成功,如果执⾏成功就会返回显⽰菜单代码处继续执⾏下⼀下循环。
4 电话拨打接听流程图
2、⽹络控制接⼝
4G 模块上⽹功能通过PPP 拨号提供的接⼝连接⽹络。在开发套件⽂件系统的“/etc/ppp”⽬录下预置了可以参考的拨号脚本。拨号成功后(执⾏PPP 拨号脚本),内核会⽣成PPP ⽹络设备。通过创建套接字就可以访问⽹络。
3、演⽰程序实操
l 使能4G 模块
默认内核启动时,把4G模块的复位引脚拉低,使模块处于⾮⼯作的状态。要想完全使能模块,运⾏/opt ⽬录下的upmodule.sh 脚本即可。
此时板⼦的WWAN 这个LED 会出现闪烁的现象,闪烁频率⼤概为800 毫秒,然后设备开始⼊⽹,⼊⽹
成功后,板⼦的WWAN 这个LED 的闪烁频率变为3 秒左右。同时,⼤概10 秒之后,板⼦开始检测到USB 设备的插⼊,然后板⼦⾃动安装USB 转串⼝的驱动,驱动安装完成后,会在板⼦的/dev ⽬录下⾃动⽣成ttyUSB0~ttyUSB5 这6 个串⼝设备。
l 编译演⽰程序
将/works/mx28x/app/⽬录下的longsung-test⽂件夹拷贝到Linux 开发主机,编译了longsung-test 下的代码,将⽣成的longsung-test ⽂件拷贝到板⼦即可进⾏后续的电话功能测试。
l 电话功能测试
使⽤U8300C,以中国联通4G卡为例进⾏电话功能测试,设备上电之前需要先插⼊SIM 卡,且保证已经按前⾯介绍使能了4G模块,并能成功⼊⽹。进⼊ longsung-test 测试程序存放的⽬录,然后运⾏longsung-test 程序。
[root@M28x opt]# ./longsung-test /dev/ttyUSB1
longsung-test 测试程序运⾏结果及其中各数字代表功能如图5所⽰。需要注意,输⼊“1”之后,必须需要输⼊“2”挂断电话之后⽅可继续。
5 代码启动运⾏结果
l 4.4.4 上⽹功能测试
这⾥使⽤U8300C,以中国移动4G卡为例进⾏拨号上⽹,设备上电之前需要先插⼊SIM 卡,保证以使能4G
模块并成功⼊⽹。
进⼊板⼦的/etc/ppp/⽬录,创建⼀个名字为ppp_dial_LTE.sh的脚本,写⼊如下程序:
echo "TIMEOUT 5 '' AT OK ATE0V1 OK AT OK ATS0=0 OK AT OK ATE0V1 OK AT OK ATDT*99*# CONNECT ''" > /tmp/chatscript
pppd /dev/ttyUSB3 persist connect "chat -v -f /tmp/chatscript"
保存退出后,修改ppp_dial_LTE.sh 的运⾏属性,然后直接运⾏该脚本,进⾏拨号操作,参考操作如下:[root@M28x ppp]# wr chmod 755 ppp_dial_LTE.sh
[root@M28x ppp]# ./ppp_dial_LTE.sh
执⾏后,等待⼤概10~20s,使⽤ifco
nfig 命令查看⽹络设备,能看到系统⽣成了⼀个名为ppp0 的⽹络设备,该设备就是拨号成功后⽣成的⽹络设备。拨号成功后可通过ping 114.114.114.114.-I ppp0检查外⽹是否连接正常。如果没能成功拨号,可以参考下⾯的“拨号异常分析”来排除问题。
l 拨号异常分析
运⾏拨号脚本后,使⽤ps 命令能看到拨号进程的存在。只要拨号成功,拨号进程是⼀直存在的(与pppd 相关的进程),如果该进程不存在,那么⽣成的ppp0 ⽹络设备也会随同消失。
如果使⽤ ifconfig 命令,⽆法看到ppp0 这个⽹络设备,只要使⽤ps 命令⼀直都能看到拨号进程的存在,那么只能耐⼼的等待拨号程序的反馈了。如果ps 命令⽆法看到拨号进程了,那么重新运⾏拨号脚本即可。拨号进程的退出,极有可能是因为信号弱或者SIM 卡余额不⾜导致的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论