IMX6 L508EN 模块调试(4G)

news2024/9/20 7:51:11

一、概述

        提起 4G 网络连接,大家可能会觉得是个很难的东西,其实对于嵌入式 Linux 而言,4G 网络连接恰恰相反,不难!大家可以看一下其他的嵌入式 Linux 或者 Android 开发板,4G 模块都是 MiniPCIE 接口的,包括很多 4G 模块都是 MiniPCIE 接口的。但是大家稍微深入研究一下就会发现,这些 4G 模块虽然用了 MiniPCIE 接口,但是实际上的通信接口都是 USB,所以 4G 模块的驱动就转换为了 USB 驱动。而这些 4G 模块厂商都提供了详细的文档讲解如何在 Linux 下使用 4G 模块,以及如何修改 Linux 内核加入 4G 模块驱动。

二、确认硬件接口

1、原理图:

2、供电:

需软件配置对应GPIO拉高

3、RESET:

手册上说明是低有效,使用是拉高

但具体介绍中提到,模块接收到1s低电平信号后复位硬件。它在内部上拉到VDD_1V8,不需要在外部上拉。

三、软件配置

1、添加 PID 和 VID

在解压的内核代码 dirvers/usb/serial/option.c 文件中的 option_ids 数组下面加

入 L501 模块 的 VID 和 PID:

某些 linux 下的版本会有 rndis 网口无法正确枚举问题,如果遇到,请修改内核 option.c文件中的 option_probe 函数,增加如下判断条件代码:(PID VID根据实际情况修改)

2、内核配置

RNDIS

USBNET

如使用PPP的话,将其相关的全部勾选,还有其他相应模块就不一一例举

四、编译测试

模块上电开机,在 Linux 下使用 lsusb 查看目前模块的 PID 和 VID 是否为内核修改编译的 PID 和 VID

奇怪的问题出现了,在lsusb时一直未出现我们添加的PID和VID

万用表测量供电脚,以及模块的电压是否正常

测量后均为正常,之后就怀疑是不是复位脚的问题,但是上述手册已经提到不用进行操作

修改尝试,LTE_MOUDLE_RST脚的链接到了DISP0_CLK

查看手册得知为GPIO4_IO16

GPIO 号计算公式:  (n-1)*32 +m

(M-1)*32+n  = (4-1)*32+16=112

修改GPIO状态测试

GPIO 同样也是通过 sysfs 方式进行操控,进入到/sys/class/gpio 目录下,如下所示:

root@qiyang:~# echo 112 > /sys/class/gpio/export

root@qiyang:~# echo out > /sys/class/gpio/gpio112/direction

root@qiyang:~# echo 0 > /sys/class/gpio/gpio112/value

再次lsusb时,成功

添加脚本文件

#!/bin/sh

RESET_GPIO=112
#PWR_GPIO=89

io_cfg() {                                 
    if [ ! -d /sys/class/gpio/gpio${RESET_GPIO} ];then
        echo ${RESET_GPIO} > /sys/class/gpio/export
        echo out > /sys/class/gpio/gpio${RESET_GPIO}/direction
        echo 0 > /sys/class/gpio/gpio${RESET_GPIO}/value
    fi
    
}


start() {
    io_cfg

    while [ ! -e /dev/ttyUSB2 ];do                    
        usleep 50000                                          
    done
    
    udhcpc -i eth1
    sleep 3
        
    echo -e "AT+QNETDEVCTL=1,1,1\r\n" > /dev/ttyUSB2
    #pppd call quectel-ppp&
    #/etc/init.d/quectel-CM &
    
    #sleep 30
        #ifconfig eth0 up
        #ifconfig eth1 up

}

stop() {
    #killall pppd
    #killall quectel-CM
    echo -e "AT+QNETDEVCTL=0,1,1\r\n" > /dev/ttyUSB2
    pwr_off
}

if [ -z $1 ];then
    echo "usage:"
    echo "\t./ec20.sh start|stop|restart"
    exit 0
fi

if [ $1 = "start" ];then
    start

    #while [ ! -e /dev/ttyUSB23 ];do
    #    usleep 50000
    #done
fi

if [ $1 = "stop" ];then
    stop
fi

if [ $1 = "restart" ];then
    stop
    start
fi

烧录系统,执行如下,成功上网

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++从入门到起飞之——继承上篇 全方位剖析!

🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1、继承的概念 2、继承定义 2.1 定义格式 2.2 继承基类成员访问⽅式的变化 3、继承类模板 4、 基…

linux网络编程——UDP编程

写在前边 本文是B站up主韦东山的4_8-3.UDP编程示例_哔哩哔哩_bilibili视频的笔记,其中有些部分博主也没有理解,希望各位辩证的看。 UDP协议简介 UDP 是一个简单的面向数据报的运输层协议,在网络中用于处理数据包,是一种无连接的…

操作系统 ---- 处理机调度

一、处理机调度学习路线 二、调度要研究的问题? 当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题。 三、调度的三个层次 3.1 高级调度&…

深入解读Docker核心原理:Namespace资源隔离机制详解

在容器技术中,资源隔离 是容器化能够实现轻量级虚拟化的关键技术之一。通过资源隔离,容器可以拥有自己的独立环境,确保容器之间互不干扰,从而实现应用的安全和稳定。Docker作为主流的容器平台,其核心的资源隔离机制依赖…

LabVIEW软件授权与分发要求

在LabVIEW开发中,将软件打包成安装程序并销售给其他公司(例如对知识产权有严格要求的国外公司)时,涉及授权和许可的多个关键环节。NI对LabVIEW的开发、分发、安装和使用都有明确的授权要求,以确保知识产权的合法性和软…

CentOS 7 最小化安装后如何安装图形化桌面

CentOS 7 最小化安装后如何安装图形化桌面 一、准备工作1. 登录系统2. 配置网络 二、安装图形化桌面1. 安装 X Window System2. 安装 GNOME 桌面 三、配置默认启动模式1. 查看当前启动模式2. 修改默认启动模式 四、重启系统并验证 💖The Begin💖点点关注…

基于微信小程序的高校实验室管理系统的设计与实现

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的高…

FreeRTOS学习笔记(十一)内存管理

文章目录 前言一、内存管理1.1 内存管理的引入1.2 内存碎片 二、内存分配的方法2.1 heap_12.1.1 实现原理2.1.2 源码解析 2.2 heap_2 内存分配方法2.2.1 实现原理2.2.2 源码解析 2.3 heap_3 内存分配方法2.4 heap_4 内存分配方法2.4.1 实现原理2.4.2 源码解析 2.5 heap_5 内存分…

【论文解读系列】DPD-BiReconstructor的神经网络架构

原标题:Semisupervised Neural Proto-Language Reconstruction 论文地址:https://arxiv.org/pdf/2406.05930 现有实现祖先语言(原语言)比较重建的工作通常需要完全监督。然而,如果历史重建模型只能用少量标记数据进行训…

二、栈和队列-算法总结

文章目录 二、栈和队列2.1 基本应用2.1.1 逆波兰表达式求值2.1.2 有效的括号 2.2 单调栈2.2.1 柱状图中最大的矩形 二、栈和队列 2.1 基本应用 2.1.1 逆波兰表达式求值 150. 逆波兰表达式求值 class Solution {/**思路分析:遇到数则压栈,遇到运算符…

每日一练12:杨辉三角(含链接)

1.链接 杨辉三角_牛客题霸_牛客网 2.题目 3.代码 #include <iostream> #include<vector> using namespace std; vector<int> arr(35); int main() {int n;cin>>n;for(int i1;i<n;i){if(i1) {printf("%5d",1);arr[1]1;cout<<end…

电商API接口安全:构建稳固的数字防线

电子商务的蓬勃发展带来了前所未有的便利&#xff0c;同时也带来了新的安全挑战。API接口作为电商系统的核心组件&#xff0c;其安全性直接关系到企业的数据安全和业务连续性。因此&#xff0c;评估和加固电商API接口的安全性变得尤为重要。 电商API接口安全的重要性 电商API接…

【Redis】Redis 典型应用 - 分布式锁原理与实现

目录 Redis 典型应⽤ - 分布式锁什么是分布式锁分布式锁的基础实现引⼊过期时间引⼊校验 id引⼊ lua引⼊ watch dog (看⻔狗)引⼊ Redlock 算法其他功能 Redis 典型应⽤ - 分布式锁 什么是分布式锁 在⼀个分布式的系统中&#xff0c; 也会涉及到多个节点访问同⼀个公共资源的…

YOLOv5改进:CA注意力机制【注意力系列篇】(附详细的修改步骤,以及代码)

如果实验环境尚未搭建成功&#xff0c;可以参考这篇文章 ->【YOLOv5超详细环境搭建以及模型训练&#xff08;GPU版本&#xff09;】 文章链接为&#xff1a;http://t.csdnimg.cn/Ke0bb ---------------------------------------------------------------------------​ 1…

09-排序1 排序(C)

这一节&#xff0c;测试各类排序算法的运行速度&#xff08;没有基数排序&#xff08;桶&#xff09; 其实在实际学习中&#xff0c;还是有意义的 给定 n 个&#xff08;长整型范围内的&#xff09;整数&#xff0c;要求输出从小到大排序后的结果。 本题旨在测试各种不同的排序…

Unity Addressables 使用说明(三)构建内容(Build Content)

Build Content 【概述】Build Content 内容构建会处理 Addressables 组&#xff0c;生成内容目录&#xff08;content catalog&#xff09;、运行时设置以及包含你的资源的 AssetBundles。Addressables 使用这些文件在运行时加载内容。 你可以配置 Addressables 系统将 Addr…

重磅!OpenAI正式发布博士水平的推理模型o1!附详细说明

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

【android10】【binder】【2.servicemanager启动——全源码分析】

系列文章目录 可跳转到下面链接查看下表所有内容https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501文章浏览阅读2次。系列文章大全https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501 目录 …

登山第九梯:稀疏点云实例分割——又快又准

文章&#xff1a;Fast Range Image-Based Segmentation of Sparse 3D Laser Scans for Online Operation 代码&#xff1a;https://github.com/PRBonn/depth_clustering 1&#xff09;摘要 从 3D 距离数据中分割对象是移动机器人领域的一个重要主题。在动态环境中导航的机器人需…

C51单片机-单按键输入识别,键盘消抖

【实验目的】 独立按键的识别方法、键盘消抖等。 【实验现象】 每按一次独立键盘的S2键&#xff0c;与P1口相连的八个发光二极管中点亮的一个往下移动一位。 【实验说明】 关于按键去抖动的解释&#xff0c;我们在手动按键的时候&#xff0c;由于机械抖动或是其它一些非人为的因…