IMX6 L508EN 模块调试(4G)

一、概述

        提起 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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春风从不入睡、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值