移远 5G RG255AA-CN 调试

5G模块引脚配置与识别流程

一、相关引脚配置

在软件部分,需要配置如下引脚状态,并检查模块供电是否正常使能,以及使用万用表确认供电情况。如果配置正确,lusb 工具可以检测到该5G模块对应的 PID 和 VID。

硬件连接说明

根据硬件连接,5G模块的 RESET、5G_KEY、AIRPLA_EN 均由 MCU 控制。

相关代码示例(根据实际情况进行配置,此处只是做个别示例)
复制代码
#include "eh.h"
#include "eh_debug.h"
#include "eh_module.h"

#include "gd32f10x.h"
#include "io-ctrl.h"
#include "gd32f10x_gpio.h"
#include <stdbool.h>

// 信号定义
EH_DEFINE_SIGNAL(signal_io_smi_change);

// 电源控制函数
void io_ctrl_mpu_power_set(bool is_on){
    gpio_bit_write(GPIOE, GPIO_PIN_8, is_on ? SET : RESET );
}
void io_ctrl_lte_power_set(bool is_on){
    gpio_bit_write(GPIOE, GPIO_PIN_7, is_on ? SET : RESET );
}
void io_ctrl_5g_reset_set(bool is_on){
    gpio_bit_write(GPIOE, GPIO_PIN_14, is_on ? SET : RESET );
}
void io_ctrl_airplane_mode_set(bool is_on){
    gpio_bit_write(GPIOE, GPIO_PIN_11, is_on ? SET : RESET );
}
void io_ctrl_5g_key_set(bool is_on){
    gpio_bit_write(GPIOE, GPIO_PIN_10, is_on ? SET : RESET );
}

// SMI状态检测
extern bool io_ctrl_smi_status(void){
    return gpio_input_bit_get(GPIOD, GPIO_PIN_0);
}

// 初始化函数
static __init int io_ctrl_init(void){
    rcu_periph_clock_enable(RCU_AF);
    rcu_periph_clock_enable(RCU_GPIOE);
    rcu_periph_clock_enable(RCU_GPIOD);

    gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8);
    eh_minfofl(IO_CTRL, "io_ctrl_mpu_power_set true");
    io_ctrl_mpu_power_set(true);

    gpio_init(GPIOD, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_0);
    nvic_irq_enable(EXTI0_IRQn, 0U, 2U);
    gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOD, GPIO_PIN_SOURCE_0);
    exti_init(EXTI_0, EXTI_INTERRUPT, EXTI_TRIG_BOTH);
    exti_interrupt_flag_clear(EXTI_0);

    gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7);
    eh_minfofl(IO_CTRL, "io_ctrl_lte_power_set true");
    io_ctrl_lte_power_set(true);

    gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
    eh_minfofl(IO_CTRL, "io_ctrl_5g_key_set true");
    io_ctrl_5g_key_set(true);

    gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
    eh_minfofl(IO_CTRL, "io_ctrl_airplane_mode_set true");
    io_ctrl_airplane_mode_set(true);

    gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13);

    gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_14);
    eh_minfofl(IO_CTRL, "io_ctrl_5g_reset_set true");
    io_ctrl_5g_reset_set(false);

    return 0;
}

void io_ctrl_exit(void){
    // 退出处理
}

eh_module_level1_export(io_ctrl_init, io_ctrl_exit);

二、查看 PID 与 VID

使用 lusb 等工具确认模块已正常识别,检查 PID 和 VID 是否正确。

三、添加 PID 和 VID

在 MPU 内核代码 drivers/usb/serial/option.c 文件的 option_ids 数组下方,添加 RG255AA 模块的 VID 和 PID:

复制代码
#define QUECTEL_VENDOR_ID                      0x2c7c
#define QUECTEL_PRODUCT_RG255AA                0x600b

四、在内核中启用 USB SERIAL 配置

请确保在内核配置中启用如下选项:

复制代码
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_WWAN=y
CONFIG_USB_SERIAL_OPTION=y
CONFIG_USB_ACM=y
CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_USBNET=y
CONFIG_USB_NET_CDCETHER=y

五、添加 option_ids

在 option_ids 列表内增加 RG255AA 的 PID/VID,以便系统能够识别该 USB 设备为串口设备。

复制代码
// /kernel/linux-5.15/drivers/usb/serial/option.c
static const struct usb_device_id option_ids[] = {
    ......
    { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200A, 0xff, 0, 0) },
    { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RG255AA, 0xff, 0, 0) },
    { USB_DEVICE_AND_INTERFACE_INFO(AWQUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_AW190, 0xff, 0, 0) },
    ......
}

六、测试与验证

  1. 查看日志是否正常
  2. 检查串口设备是否正常枚举
  3. 检查5G网卡设备是否生成
  4. 联网测试


总结:按照上述步骤配置和检查后,可实现5G模块的正常识别与联网功能。如遇问题,建议逐步排查硬件连接、驱动配置及内核日志。

相关推荐
wuminyu1 分钟前
JDK21中虚拟线程和FFM协同实现高并发源码剖析
java·linux·c语言·jvm·c++
Android系统攻城狮27 分钟前
Linux PipeWire深度解析之pw_stream_new调用流程与实战(七十八)
linux·运维·服务器·音频进阶·pipewire音频实战进阶
徽京人1 小时前
VS Code 接入Esp 32步骤
vscode·单片机·嵌入式硬件
换个号退隐江湖i2 小时前
LLM 调试日志刷屏怎么办?用 tee 边看边存
linux
DYWorker0012 小时前
搭建嵌入式Linux虚拟机开发环境
linux
QH139292318802 小时前
Keysight N5183B N5183B 微波模拟信号发生器
网络·单片机·嵌入式硬件·集成测试·信息与通信
weipt2 小时前
从ollama到llama.cpp
linux·服务器·llama
加油码2 小时前
动静态库的链接底层原理(进阶版)
linux·c++
笨笨饿3 小时前
#110_SCH3000 平台图传系统配置指南:从 DVP 摄像头到 UVC/WiFi 双通道传输
c语言·stm32·单片机·嵌入式硬件·物联网·vim
H_oRIZoN_4 小时前
Linux入门DAY23(C语言树形结构)
linux·c语言·数据结构