4G Modem 模块示例
源码位置: samples/network/modem 查看源码
功能说明
本示例演示如何使用 lisa_modem 的 socket 风格接口进行蜂窝网络通信,包括:
modem 初始化
DNS 域名解析
TCP socket 建立、发送、接收、关闭
UDP
sendto/recvfrom打印 UDP 响应源地址
示例内部不再依赖默认全局 modem,而是:
通过
sample_modem_open()按 backend 创建lisa_modem_t *通过
lisa_modem_*_on()实例接口执行 DNS / socket 操作
Backend 模式
本 sample 现在支持两种 AT 传输后端,默认使用 UART。
1. UART backend(默认)
使用
src/modem_backend_uart.c通过
lisa_modem_create_uart()打开 modem默认 AT 设备为
uart2sample 内部会覆盖
lisa_uart2_pinmux(),默认把uart2配到PA15/PA16
2. USB AT backend(overlay)
使用
src/modem_backend_usb_at.c通过 CherryUSB Host 枚举
/dev/ttyUSBx当前仅匹配
EC801E USB ECM当前仅使用 AT 接口
intf=3通过
at_transport_usbh_serial_create()包装 USB 串口再通过
lisa_modem_create_with_transport()创建 modem
注意:
“找 AT 口”的逻辑保留在 sample 内部,不放到
lisa_modem或 CherryUSB 侧这个 USB backend 只替换 AT 传输层,不会在 sample 中自动执行
AT+QCFG="usbnet"、AT+QCFG="nat"、AT+QNETDEVCTL如果你的 USB 方案依赖 ECM 数据面,请先用独立流程把模块准备好;本示例仍然走
lisa_modem的 AT socket 能力
硬件连接
UART 模式
4G 模块通过 UART 与主控连接
默认使用
uart2需要根据实际硬件连接修改
src/main.c中的MODEM_UART_DEVICE
USB AT 模式
目前只支持 ARCS EVB 作为 USB Host 接入 EC801E
需要把 EC801E 的 USB 口接到开发板
USB_ARCS线材必须支持数据通信
如果开发板默认是 Device 角色,需要先完成 Host 侧硬件改造
示例流程
初始化文件系统和 KV 存储
根据 backend 打开 modem
等待网络注册
解析
httpbin.org建立 TCP 连接并发送 HTTP GET
接收服务器响应
解析
ntp.aliyun.com发送 UDP NTP 请求并通过
recvfrom()读取响应
关键配置
使用前请检查 src/main.c 中的配置:
#define MODEM_UART_DEVICE "uart2"
#define TEST_SERVER_HOST "httpbin.org"
#define TEST_SERVER_PORT 80
#define UDP_TEST_HOST "ntp.aliyun.com"
#define UDP_TEST_PORT 123
编译
UART backend
./build.sh -C -S samples/network/modem -DBOARD=arcs_evb
USB AT backend
./build.sh -C -S samples/network/modem -DBOARD=arcs_evb -DCONFIG_FILES=prj_usb_at.conf
prj_usb_at.conf 会额外启用:
CONFIG_SAMPLE_MODEM_BACKEND_USB_AT=yCONFIG_CHERRYUSB=yCONFIG_CHERRYUSB_HOST=yCONFIG_CHERRYUSB_HOST_MUSB_LISA=yCONFIG_CHERRYUSB_HOST_CDC_ECM=yCONFIG_CHERRYUSB_HOST_GSM=yCONFIG_CHERRYUSB_HOST_CDC_ECM_NETIF=n
同时会切换到适合 CherryUSB Host 的单核内存布局,并保留 EC801E 的 ECM 类驱动加载能力,但不在 lwIP 中注册 USB 网卡,不影响 USB AT 口创建。
烧录
编译完成后,使用 SDK tools 目录下的 cskburn 工具烧录固件:
./tools/burn/cskburn -s /dev/ttyUSB0 -b 3000000 0x0 build/arcs.bin -C arcs
Note
烧录参数说明:
-s /dev/ttyUSB0:串口设备路径,需要根据实际情况修改 - Linux 系统:通常是/dev/ttyUSB0或/dev/ttyACM0- 可通过ls /dev/tty*命令查看可用串口设备 - 不同开发板或 USB 转串口芯片可能使用不同的设备名-b 3000000:烧录波特率(3Mbps)0x0:烧录起始地址build/arcs.bin:编译生成的固件路径-C arcs:芯片类型
注意事项:
确保开发板已正确连接到电脑
如果无法识别串口设备,请检查 USB 连接线是否正常,或尝试其他 USB 端口
关键 API
API |
说明 |
|---|---|
|
按 sample backend 创建 modem |
|
销毁 sample 创建的 modem |
|
DNS 解析 |
|
创建 TCP/UDP socket |
|
建立 TCP 连接 |
|
发送 TCP 数据 |
|
接收 TCP 数据 |
|
发送 UDP 数据 |
|
接收 UDP 数据并带回源地址 |
|
关闭 socket |
验证要点
UART 默认配置可编译
USB AT overlay 可编译
DNS 解析
TCP connect / send / recv / close
UDP
sendto/recvfromrecvfrom src=源地址打印
注意事项
使用 USB AT 模式时,当前只支持
VID:PID=0x2c7c:0x0903的 EC801E USB ECM 设备。使用 USB AT 模式时,当前只扫描并匹配 AT 接口
intf=3。发送和接收都带超时参数,网络较差时请适当调大。
UDP 响应依赖运营商网络和目标服务器,可优先关注是否打印
recvfrom src=...。