7.2.5 Molink 蜂窝模组抽象层
2026/7/18大约 3 分钟常用组件组件网络Molink蜂窝模组AT指令
7.2.5 Molink 蜂窝模组抽象层
📚 本节导读
学习时长:约 15 分钟
难度级别:⭐⭐⭐☆☆
前置知识:AT 指令基础、蜂窝网络概念、第 7.2.1 节 Socket 基础
🎯 学习目标
- 理解 Molink 蜂窝模组抽象层的架构设计
- 了解 Molink 支持的模组型号
- 掌握 Molink 核心 API 的使用
- 能够基于 Molink 进行模组管理和 AT 指令通信
一、概述
Molink 是 OneOS 的蜂窝通信模组抽象层,位于 components/net/molink/。它为上层应用提供统一的 AT 指令通信接口,屏蔽不同品牌、不同型号模组的差异,使得应用代码与具体硬件解耦。
二、架构设计
┌──────────────────────────────────────────────┐
│ 应用程序层 │
│ (Socket / HTTP / MQTT / CoAP / 自定义 AT) │
├──────────────────────────────────────────────┤
│ Molink 统一 API 层 │
│ mo_create / mo_destroy / mo_at_exec / ... │
├──────────────────────────────────────────────┤
│ Molink 核心层 (core) │
│ 模组管理、AT 通道管理、数据收发、状态机 │
├──────────────────────────────────────────────┤
│ Molink 解析器层 (parser) │
│ AT 响应解析、URC 处理、网络注册状态解析 │
├──────────────────────────────────────────────┤
│ Molink 模组适配层 (module) │
│ EC20 │ BC26 │ ESP8266 │ M5311 │ SIM7600 │ ... │
└──────────────────────────────────────────────┘三、支持的模组列表
| 品牌 | 型号 | 网络类型 |
|---|---|---|
| 移远 Quectel | EC20 / EC200x / EC600S | 4G LTE |
| BC20 / BC26 / BC28 / BC95 | NB-IoT | |
| RG500 | 5G | |
| 中移物联 | M5310A / M5311 | NB-IoT |
| 广和通 Fibocom | N21 / N58 | 4G LTE |
| 乐鑫 Espressif | ESP32 / ESP8266 | WiFi |
| SIMCom | SIM7020 | NB-IoT |
| SIM7070x / SIM7600CE | 4G LTE | |
| 合宙 AirM2M | Air720UH / Air723UG | 4G LTE |
| 高新兴 Gosuncn | GM120 / GM190 / GM510 | 4G LTE |
四、核心 API 参考
/* 创建模组对象 */
mo_object_t *mo_create(const char *name, mo_parser_t *parser, void *user_data);
/* 销毁模组对象 */
int mo_destroy(mo_object_t *self);
/* 执行 AT 指令 */
int mo_at_exec(mo_object_t *self, const char *cmd, ...);
/* 获取网络注册状态 */
int mo_get_netstat(mo_object_t *self);
/* 获取信号强度(CSQ,0-31) */
int mo_get_csq(mo_object_t *self);
/* 获取模组 IMEI 号 */
int mo_get_imei(mo_object_t *self, char *imei, size_t len);
/* 获取模组 ICCID 号(SIM 卡标识) */
int mo_get_iccid(mo_object_t *self, char *iccid, size_t len);五、Molink 使用示例
#include <molink.h>
#include <oneos/os_kernel.h>
void molink_example(void *arg)
{
mo_object_t *mo = NULL;
char imei[32] = {0};
/* 1. 创建模组对象 */
mo = mo_create("my_modem", NULL, NULL);
if (!mo) {
os_kprintf("[Molink] create modem object failed\r\n");
return;
}
/* 2. 查询 IMEI */
mo_get_imei(mo, imei, sizeof(imei));
os_kprintf("[Molink] IMEI: %s\r\n", imei);
/* 3. 查询信号强度 */
int csq = mo_get_csq(mo);
os_kprintf("[Molink] CSQ: %d (0-31)\r\n", csq);
/* 4. 查询网络注册状态 */
int netstat = mo_get_netstat(mo);
os_kprintf("[Molink] Network Status: %d\r\n", netstat);
/* 5. 执行自定义 AT 指令 */
mo_at_exec(mo, "AT+CGMI\r\n"); /* 查询制造商 */
mo_at_exec(mo, "AT+CGMM\r\n"); /* 查询型号 */
/* 6. 使用完毕后销毁 */
mo_destroy(mo);
}📝 本节小结
本节介绍了 OneOS 的 Molink 蜂窝模组抽象层。Molink 通过统一的 AT 指令接口屏蔽了 30+ 种模组的硬件差异,使得上层应用代码与具体模组解耦,大幅提升了可移植性。
核心要点回顾:
- Molink 采用四层架构:API 层 → 核心层 → 解析器层 → 模组适配层
- 支持 4G LTE、NB-IoT、WiFi、5G 等多种网络类型
- 通过
mo_create创建模组对象,mo_destroy销毁 mo_at_exec执行 AT 指令,mo_get_imei/mo_get_csq查询模组信息