RK3568---4G模块驱动实验

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习
擅长领域:驱动开发,嵌入式软件开发,BSP开发
作者主页:一个平凡而乐于分享的小比特的个人主页
文章收录专栏:RK3568驱动开发,本专栏为rk3568驱动开发学习记录
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

1.内核修改及支持

1.1 原理图分析

在这里插入图片描述

1.2 内核配置

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

2. 应用程序测试

2.1 模块开关机

开机方式

首先操作GPIO,给4G模块上电
(注意:开关机按键,复位按键,在开发板上是MPU的GPIO出来后,硬件做了反向的。低电平,上电 低脉冲,复位)
输入如下命令

gpioset 3 0=0
gpioset 3 1=0

将这两个引脚拉低后,模块上电如下所示
在这里插入图片描述

关机方式

软件方式关机

先发送AT+QPOWD命令给模块,再拉高引脚

microcom /dev/ttyUSB3 -s 115200
AT+QPOWD

按住Ctrl+x,再输入如下命令

gpioset 3 1=1

(注意:在发送AT命令后需要在几秒内拉高gpio引脚,否则模块会再次开启)
在这里插入图片描述

硬件方式关机

先拉低RESET大于100ms后,拉低电源引脚Power_on
硬件关机时序如下图所示:
在这里插入图片描述
当4G模块上电后,可以在dev目录下看到四个ttyUSB设备
在这里插入图片描述

AT命令检测

我们可以使用microcom命令对串口发送AT命令

microcom /dev/ttyUSB3 -s 115200

在这里插入图片描述

检测手机卡是否在位
AT+CPIN?

在这里插入图片描述

检查网络名字
AT+COPS?

在这里插入图片描述
CHN-CT 表示中国电信

网络注册状态
AT+CREG?

在这里插入图片描述
第二个参数为0 表示没有注册网络,为1表示网络已注册

信号强度
AT+CSQ

在这里插入图片描述
数值越大表明信号质量越好;

2.2 PPP拨号方式

内核配置好后,编译生成新的镜像烧录到开发板中
启动系统时,会看到如下信息
在这里插入图片描述
接下来需要使用到pppd软件,需要通过 pppd 这个软件来实现 ppp 拨号上网 。
下载网址:Index of /pub/ppp (samba.org)
下载好后交叉编译,在make install的时候可能会报下面这种类型的错误
strip: Unable to recognise the format of the input file ‘xxxxxxx’
解决方法:ppp-2.4.5移植(交叉编译)_ppp交叉编译-CSDN博客

编译生成好的四个可执行文件:chat pppd pppdump pppstats 将这四个文件拷贝到开发板的/bin文件夹下

输入pppd -v如下pp图所示,表示移植成功。

在这里插入图片描述
ppp拨号方式需要编写三个脚本文件存放在/etc/ppp/peers下

默认是没有这些文件夹的,所以需要去创建ppp和peers文件夹,创建好后在peers下创建如下三个脚本文件

rasppp.sh

#!/bin/sh
hide-password

noauth

connect '/bin/chat -s -v -f /etc/ppp/peers/rasppp-chat-connect.sh'

disconnect '/bin/chat -s -v -f /etc/ppp/peers/rasppp-chat-disconnect.sh'

debug

/dev/ttyUSB3

115200

defaultroute

noipdefault

novj
novjccomp
noccp
ipcp-accept-local
ipcp-accept-remote
local

lock
dump

nodetach
#这里我用的是电信卡
user card
password card

#如果是移动或者联通的卡将上面两行改为
#user Anyname
#password Anypassword

crtscts
remotename 3gppp
ipparam 3gppp

usepeerdns

rasppp-chat-connect.sh

TIMEOUT 15
ABORT   "BUSY"
ABORT   "ERROR"
ABORT   "NO ANSWER"
ABORT   "NO CARRTER"
ABORT   "NO DIALTONE"

""AT
OK \rATZ

OK \rAT+CGDCONT=1,"IP",""

OK-AT-OK ATDT#777
CONNECT \d\c

rasppp-chat-disconnect.sh

ORT "ERROR"
ABORT "NO DIALTONE"
SAY "\NSending break to the modem\n"

""\k"

""+++ATH"
SAY "\nGood bye !\n"

添加完以上三个脚本文件后,现在可以使用 ppp 尝试拨号

pppd call rasppp.sh &    #后台进行拨号

如果拨号正常如下图所示
在这里插入图片描述
从程序的输出中我们可以获得以下信息:

本机IP 10.86.31.158
主要 DNS 服务器:202.103.24.68
次要 DNS 服务器: 202.103.44.150

当我们使用ifconfig查看网络信息会发现一个ppp0的网络
在这里插入图片描述
此时我们需要通过上面获得的网络信息来配置这个ppp0网络

sudo ip route add default via 10.86.31.158
echo "nameserver 202.103.24.68" | tee -a /etc/resolv.conf
echo "nameserver 202.103.44.150" | tee -a /etc/resolv.conf

配置好之后我们就可以上网了,可以ping百度来测试
在这里插入图片描述

2.3 ECM模式拨号上网

上面的ppp模式拨号较为繁琐,需要大量的步骤依赖pppd软件,并且ppp拨号的稳定性不强,所以接下来介绍ECM模式,只需要AT命令就可以拨号上网

当我们上电4G模块之后,我们发送如下AT命令切换模块的工作模式为ECM

microcom /dev/ttyUSB3 -s 115200
AT+QCFG="usbnet",1

发送AT命令后,模块会自动重启,如下图所示
在这里插入图片描述
我们在ifconfig查看网络时候,可以看到多了一个usb0网络,并且自动获取IP地址
在这里插入图片描述
同样,我们可以ping百度测试上网功能
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/529505.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是电子邮件组,为什么要使用它们?

在当今时代&#xff0c;电子邮件无处不在&#xff0c;尤其是对于商业活动而言。电子邮件的重要性不容忽视&#xff0c;因为它在沟通中极为高效。然而&#xff0c;电子邮件也存在降低工作效率和阻碍流程的风险。在这种情况下&#xff0c;电子邮件群组就是最佳的解决方案。什么是…

蓝桥杯刷题-15-异或和之和-拆位+贡献法⭐⭐(⊙o⊙)

蓝桥杯2023年第十四届省赛真题-异或和之和 题目描述 给定一个数组 Ai&#xff0c;分别求其每个子段的异或和&#xff0c;并求出它们的和。或者说&#xff0c;对于每组满足 1 ≤ L ≤ R ≤ n 的 L, R &#xff0c;求出数组中第 L 至第 R 个元素的异或和。然后输出每组 L, R 得到…

C++初阶:stack和queue使用及模拟实现

stack的介绍和使用 stack的介绍 堆栈 - C 参考 (cplusplus.com) 翻译 : 1. stack 是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack 是作为容器适配器被实现的&#xff0c;容器…

基于单片机和ICL7135多档位数字电压表设计

**单片机设计介绍&#xff0c;基于单片机和ICL7135多档位数字电压表设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机和ICL7135的多档位数字电压表设计是一个结合了硬件与软件技术的综合性项目。这种设计旨在实现一…

数据库的基本使用

一、数据库的简介 RDBMS简介&#xff1a; Relational Database Management System,通过表来表示关系类型。当前主要使用两种类型的数据库:关系型数据库和非关系型数据库。所谓的关系型数据库RDBMS是建立在关系模型基础上的数据库&#xff0c;借助于集合代数等数学概念和方法来…

使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…

Spingboot落地国际化需求,Springboot按照请求的地区返回信息

文章目录 一、国际化1、概述2、Spring国际化 二、springboot简单使用国际化1、定义MessageSource2、定义message配置文件3、测试 三、根据请求的地区获取信息1、定义message配置文件2、定义配置类3、基础模板工具4、消息模板定义枚举5、测试一下6、总结 一、国际化 1、概述 国…

设计模式-结构型-装饰器模式-decorator

发票基本类 public class Invoice {public void printInvoice() {System.out.println("打印发票正文");} } 发票正文类 public class Decorator extends Invoice {protected Invoice ticket;public Decorator(Invoice ticket) {this.ticket ticket;}Overridepubl…

Java配置自定义校验

1、自定义注解State message、groups、payload package com.zhang.anno;import com.zhang.validartion.StateValidation; import jakarta.validation.Constraint; import jakarta.validation.Payload;import java.lang.annotation.*;import static java.lang.annotation.Eleme…

javaScript中原型链

一、原型链 js 的对象分为普通对象和函数对象。每个对象都有__proto__ 但是只有函数对象 (非箭头函数) 才有 prototype 属性。 new的过程&#xff1a; 1、创建一个空的简单 javaScript对象 2、将空对象的 __proto__连接到该函数的 prototype 3、将函数的this指向新创建的对象…

鲁棒线性模型估计(Robust linear model estimation)

鲁棒线性模型估计 1.RANSAC算法1.1 算法的基本原理1.2 迭代次数N的计算1.3 参考代码 参考文献 当数据中出现较多异常点时&#xff0c;常用的线性回归OLS会因为这些异常点的存在无法正确估计线性模型的参数&#xff1a; W ( X T X ) − 1 X T Y \qquad \qquad W(X^TX)^{-1}X^T…

【docker】Docker 简介

Docker 简介 什么是虚拟化、容器化?为什么要虚拟化、容器化&#xff1f;虚拟化实现方式应用程序执行环境分层虚拟化常见类别虚拟机容器JVM 之类的虚拟机 常见虚拟化实现主机虚拟化(虚拟机)实现容器虚拟化实现容器虚拟化实现原理容器虚拟化基础之 NameSpace 什么是虚拟化、容器…

人体跟随小车(旭日x3派、yolov5、目标检测)

人体跟随小车&#xff08;yolov5、目标检测&#xff09; 前言最终结果接线实现注意 前言 上板运行的后处理使用cython封装了&#xff0c;由于每个版本的yolo输出的形状不一样&#xff0c;这里只能用yolov5-6.2这个版本。 ①训练自己的模型并部署于旭日x3派参考&#xff1a; ht…

RuntimeError: Library cublas64_12.dll is not found or cannot be loaded

运行guillaumekln/faster-whisper-large-v2模型进行语音识别的时候报错了 RuntimeError: Library cublas64_12.dll is not found or cannot be loaded 代码&#xff1a; from faster_whisper import WhisperModelmodel WhisperModel("H:\\model\\guillaumekln\\faster…

【C++】优先级队列(priority_queue)的用法与实现

目录 一、概念&#xff1a; 二、仿函数&#xff08;Functor&#xff09;&#xff1a; 概念&#xff1a; 应用&#xff1a; 三、底层实现&#xff1a; 基本操作&#xff1a; 完整代码&#xff1a; 测试示例&#xff1a; 一、概念&#xff1a; 优先级队列&#xff08;pri…

PostgreSQL入门到实战-第六弹

PostgreSQL入门到实战 PostgreSQL查询语句(三)官网地址PostgreSQL概述PostgreSQL中ORDER BY理论PostgreSQL中ORDER BY实操更新计划 PostgreSQL查询语句(三) 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.post…

tcp的全连接队列和半连接队列满时,客户端再connect发生的情况

首先简单介绍下tcp的全连接队列(accept queue)和半连接队列(syn queue)&#xff0c; 1.客户端发起syn请求时&#xff0c;服务端收到该请求&#xff0c;将其放入到syn queue&#xff0c;然后回复acksyn给客户端。 2.客户端收到acksyn&#xff0c;再发送ack给服务端。 3. 服务端从…

3、最大池化maxinmum pooling

了解有关最大池化特征提取的更多信息。 简介 在第二课中,我们开始讨论卷积神经网络(convnet)的基础如何进行特征提取。我们了解了这个过程中的前两个操作是在带有 relu 激活的 Conv2D 层中进行的。 在这一课中,我们将看一下这个序列中的第三个(也是最后一个)操作:通过…

3dmax渲染十几个小时怎么办?3dmax怎么多机渲染

当使用3ds Max进行渲染作业时&#xff0c;如果发现单张图像的渲染时间长达十数小时&#xff0c;这可能是由于计算机硬件配置较低或渲染场景过于复杂所致。为了缩短渲染时间并提高效率&#xff0c;我们可以考虑采用多台计算机进行协同渲染。下面&#xff0c;让我们一起探讨如何通…

MyBatis操作数据库(2)

MyBatis XML配置文件 MyBatis开发有两种方式: 1.注解 2.xml 上面我们学习了注解的方式, 下面来学习xml的方式 使用MyBatis的注解方式, 主要是为了完成一些简单的增删改查功能, 而下面我们介绍的xml方式, 则一般用于写一些比较复杂的sql语句. MyBatis XML的方式需要以下两步: …