嵌入式Linux系列第11篇:使用4G模块

简介: 嵌入式Linux系列第11篇:使用4G模块

1.引言

随着移动通信技术的快速发展,由几年前的2G模块,到现在广泛使用的4G模块,5G虽然很火热,但是5G模组还不是很成熟,另外据说专家们已经在研究6G了,移动通信真是发展迅速啊。随着它们速率的不断提供,模块的接口形式也在不断的变化,2G模块只要串口就可以了,4G模块一般用的USB接口,当然串口也可以,只不过速率慢些。由于4G模块的驱动较为复杂,所以如果是USB接口,在普通MCU上做就会比较困难,这时Linux系统的优势就体现出来了,Linux由于其完备的驱动支持,在上面做4G就会容易很多。

2.环境介绍

2.1.硬件

1) 网上的一个第三方做的NUC972开发板:


有兴趣购买的朋友,可以去他们的淘宝店购买:https://s.click.taobao.com/X8mza8w2) 移远的EC20模组,移远这几年模块做的风生水起,前不久还上市了。

2.2.软件

1) Uboot继续使用之前文章用的,无需改动。

2) Kernel在上一篇基础上,要做一定的修改。3) Rootfs在上一篇用Buildroot生成的基础上,要做一定的修改。

3.内核配置

进入内核目录driver/usb/serial/ 下修改 option.c 文件,添加设备的VID 和 PID: VID 为0x2c7c;PID 为0x0125内核配置



4.Buildroot配置


pppd配置,用来生成pppd、pppdump等相关指令



这里遇到一个问题,卡住了好久,勾选上pppd之后编译报错,提示utmp.h头文件找不到,后来咨询了前同事远程协助才解决掉,需要做如下修改才可以。



看来还是得研究研究buildroot的编译原理才行,不然遇到问题真心不知道该如何解决。

5.测试

将上述修改后的内核和文件系统下载到板子里启动后,插上USB 接口的EC20,开机后(EC20模块上有一个控制开机的GPIO)提示以下信息,生成ttyUSBx(x为0到4)。


我们使用lsusb指令,可以看到对应上述PID和VID的USB设备。



这一步是调试4G模块的最关键一步,这一步成功调试工作就完成了一大半以上。其实只要完成第3节内核配置后,就可以实现上述现象了。之后我们可以通过串口发送一些AT命令来检测模块的一些状态microcom -s 115200 /dev/ttyUSB2



AT用来检测 Module 与串口是否连通,命令格式:AT命令返回:OK (与串口通信正常)            (无返回,与串口通信未连通)AT+CPIN? (查看SIM卡的状态)回车,返回:+CPIN:READY  OK(正常)。+CPIN:ERROR (表示 SIM卡失败或没有插入 SIM卡)AT+CSQ是用来检测信号质量,确定是否可以登陆上网络;命令返回:+CSQ: **,##         其中**应在10到31之间,数值越大表明信号质量越好,##应为99。         否则应检查天线或SIM卡是否正确安装


然后拷贝 quectel-chat-connect quectel-chat-disconnect quectel-ppp 到 /etc/ppp/peers 目录(需要用mkdir 新建这个目录)下。然后使用下面的命令启动 ppp 拨号, 命令最后的 & 可以让 pppd 后台运行pppd call quectel-ppp &之后就可以ping 通外网了。


6.结束语

本期相关的资料在https://github.com/TopSemic/NUC972_Linux 中本篇为大家介绍了Linux下EC20 4G模块的简单使用,欢迎大家多交流

相关文章
|
4天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
40 13
|
3月前
|
Unix Linux 网络安全
python中连接linux好用的模块paramiko(附带案例)
该文章详细介绍了如何使用Python的Paramiko模块来连接Linux服务器,包括安装配置及通过密码或密钥进行身份验证的示例。
139 1
|
3月前
|
编解码 Linux 开发工具
Linux平台x86_64|aarch64架构RTMP推送|轻量级RTSP服务模块集成说明
支持x64_64架构、aarch64架构(需要glibc-2.21及以上版本的Linux系统, 需要libX11.so.6, 需要GLib–2.0, 需安装 libstdc++.so.6.0.21、GLIBCXX_3.4.21、 CXXABI_1.3.9)。
|
4月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
130 3
|
4月前
|
NoSQL Linux Android开发
内核实验(三):编写简单Linux内核模块,使用Qemu加载ko做测试
本文介绍了如何在QEMU中挂载虚拟分区、创建和编译简单的Linux内核模块,并在QEMU虚拟机中加载和测试这些内核模块,包括创建虚拟分区、编写内核模块代码、编译、部署以及在QEMU中的加载和测试过程。
239 0
内核实验(三):编写简单Linux内核模块,使用Qemu加载ko做测试
|
4月前
|
负载均衡 应用服务中间件 Linux
在Linux中,常用的 Nginx 模块有哪些,常来做什么?
在Linux中,常用的 Nginx 模块有哪些,常来做什么?
|
4月前
|
安全 Linux 开发者
在Linux中,内核模块是什么以及如何加载和卸载它们?
在Linux中,内核模块是什么以及如何加载和卸载它们?
|
4月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
4月前
|
Linux
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
|
4月前
|
Ubuntu Linux 开发工具
深入探索Linux内核模块编程
【8月更文挑战第4天】在这篇文章中,我们不仅将探讨Linux内核模块的基础知识,还将通过一个实际的例子来展示如何编写一个简单的内核模块。我们将从理论出发,逐步过渡到动手实践,最终实现一个可以在Linux系统上运行的模块。文章的目标是为读者提供足够的信息和知识,以便他们能够自己编写内核模块,从而对操作系统的内部工作原理有更深入的了解。
下一篇
DataWorks