把电池供电的水表、车检器、共享单车锁、智能家居传感器接到云端,关键是找到一款内核小、低功耗、协议栈全的操作系统。截至 2025 年,Huawei LiteOS 已支持 40 多款业界标准 MCU 开发板与 3 款 NB-IoT 开发板,商业出货累计超过 5000 万台,最小内核尺寸 6KB、RAM 可低至 2KB,Tickless 机制在特定场景下把功耗开销压低到原来的 40%。下文拆解 LiteOS 的能力矩阵,并把 LiteOS 与 OpenHarmony、FreeRTOS、RT-Thread 的差异放到同一张表里。
一、LiteOS 在物联网体系中的位置
LiteOS 是华为面向物联网终端推出的轻量级实时操作系统,2015 年在华为网络大会上发布,内核代码以开源方式托管在 GitHub 仓库,围绕 NB-IoT 与 LPWA 场景持续迭代。它的定位非常聚焦:为硬件资源受限、成本与功耗敏感的弱终端提供“内核 + 端云协议栈 + 远程升级”的一站式平台,把开发者从逐个适配芯片、协议、加密算法的工程细节里解放出来。
LiteOS 现在有两个分支:独立演进的 LiteOS 仓库,以及作为 OpenHarmony 多内核架构一部分的 LiteOS-A 与 LiteOS-M。LiteOS-M 面向 Cortex-M/RISC-V 等 MCU 设备,适合智能水表、共享单车锁、可穿戴传感器;LiteOS-A 面向 Cortex-A 等资源相对丰富的设备,支持 MMU 与 POSIX 接口,适合智能摄像头、支付终端、智能家居中控。这种“双内核”形态让 LiteOS 在 OpenHarmony 体系内依然保留独立演进路径,选型时不必担心被绑定到某个上层框架。
二、核心能力矩阵
LiteOS 的能力可以拆为低功耗框架、OpenCPU 架构、安全传输、端云互通、远程升级、IDE 工具六个维度,每个维度都有清晰的工程指标。
| 能力维度 | 关键能力 | LiteOS 的实现 |
|---|---|---|
| 内核体积 | 资源占用 | 最小内核 6KB、RAM 低至 2KB,可静态裁剪 |
| 低功耗 | Tickless 与休眠 | Tickless 机制按需唤醒,特定场景功耗开销压低到原来 40% |
| OpenCPU 架构 | MCU + 通信模组合一 | 通信模组内置 MCU,水表/气表/车检器 BOM 显著降低 |
| 安全传输 | 双向认证与加密 | 双向认证、FOTA 差分升级、DTLS/DTLS+ 轻量加密 |
| 端云互通 | 协议栈 | LwM2M、CoAP、MQTT、mbed TLS、LwIP 全栈集成,默认对接 OceanConnect |
| 远程升级 | SOTA 差分 | 差分包降低传输量,适配低带宽、电池供电环境,RAM 占用更少 |
| 开发工具 | IDE | LiteOS Studio 支持 C/C++/汇编,Windows/Linux 全平台编译 |
这套组合最容易被低估的是“端云互通组件”:LiteOS SDK 把 LwM2M/CoAP/MQTT/mbed TLS/LwIP 直接集成,意味着水表/气表这类设备不需要 AT 指令逐条适配,默认就能把数据送到 OceanConnect 这类 IoT 平台,缩短从样机到商用的距离。
三、内核架构与功能模块
LiteOS 基础内核按“系统 > 子系统 > 功能/模块”分层组织,提供了任务、内存、时间、通信、中断、队列、事件、定时器、异常管理等基础组件,既可以独立运行,也可以作为更复杂系统的子模块嵌入。
任务调度支持按优先级抢占与同优先级时间片轮转,中断管理提供创建/使能/禁止/请求位清除等完整 API。内存管理同时提供静态 BOX 算法与动态 bestfit/bestfit_little 算法,内置越界检测。Tickless 框架与定时器对齐机制让系统在空闲时直接进入深度休眠,事件唤醒时再恢复调度,这是低功耗场景下的关键机制。
| 模块 | 能力 | 适用场景 |
|---|---|---|
| 任务调度 | 抢占 + 时间片 | 多任务传感器、周期性上报 |
| 内存管理 | 静态 BOX / 动态 bestfit | 资源受限 / 动态分配需求 |
| IPC 通信 | 队列、信号量、互斥锁、事件 | 任务间/中断与任务通信 |
| 时间管理 | Tick、定时器、Tickless | 周期采样、低功耗休眠 |
| 中断/异常 | 中断管理、异常处理 | 外部触发、故障保护 |
| 远程升级 | FOTA/SOTA 差分 | 固件迭代、安全补丁 |
四、与同类物联网操作系统的对比
国内做嵌入式/物联网开源操作系统的项目较多,选型时常见对照的是 LiteOS、OpenHarmony、FreeRTOS、RT-Thread、AliOS Things。下表从内核尺寸、典型场景、生态、跨设备能力四个维度做对比。
| 维度 | LiteOS | OpenHarmony | FreeRTOS | RT-Thread | AliOS Things |
|---|---|---|---|---|---|
| 内核 | 6KB,RTOS | 128KiB 起,多内核 | 几 KB 到几十 KB,RTOS | 可裁剪,组件丰富 | 轻量,云端一体 |
| 典型场景 | LPWA 弱终端 | 智能手机/全场景 | 小型嵌入式 | 智能家居/工控 | 智能家居/新出行 |
| 跨设备 | 单设备为主 | 分布式软总线 | 单设备 | 单设备/部分组件 | 单设备为主 |
| 端云协议 | LwM2M/CoAP/MQTT 内置 | 需适配 | 需自行集成 | 需自行集成 | 组件化集成 |
| MCU 适配 | 40+ 开发板 | 主流 ARM/RISC-V | 几乎全 MCU | 国内主流 | 主流 ARM/RISC-V |
| 商用实践 | 5000 万+ 出货 | 鸿蒙生态 | 工业广泛 | 工业广泛 | 智能家居/出行 |
从这张表能看出 LiteOS 的差异点:把“端云互通协议栈”直接内置,而不是留给开发者逐项集成;OpenCPU 架构把通信模组和 MCU 合一,降低 LPWA 设备的硬件成本;Tickless 框架在电池供电场景下把功耗压到极致。这些能力叠加,让 LiteOS 在水表/气表/车检器这类弱终端上仍是主流选择。
五、移植与开发的关键步骤
把 LiteOS 跑到目标硬件上,通常按以下五步推进:
- 选型:根据 MCU 内核(Cortex-M0/M3/M4/M7 还是 RISC-V)、RAM 与 Flash 大小,确认 LiteOS 是否已有现成 targets 工程;
- 拉源码:在 GitHub 上克隆 LiteOS 仓库,根据需要切换到 develop 或 master 分支;
- 建裸机工程:用 STM32CubeMX 或厂商 IDE 创建一个最小裸机工程,确认串口、GPIO、时钟可工作;
- 整合内核目录:把
arch、components/cmsis、kernel、OS_CONFIG四个核心目录加入工程,设置好头文件路径与宏定义; - 编译烧录:配置
BOARD_SRAM_SIZE_KB等板级参数后,生成 hex/bin 烧录到开发板,串口观察任务调度日志。
5.1 任务创建的最小示例
下面这段代码演示了 LiteOS 下创建一个周期性打印任务的最小流程。示例中用 LOSTaskCreate 把任务注册到调度器,任务体内调用 LOSTaskDelay 让出 CPU,避免阻塞其他任务。
/* liteos_task_demo.c(精简示例) */
#include "los_task.h"
#include "los_config.h"
static UINT32 g_taskId;
static void DemoTaskEntry(void)
{
while (1) {
printf("LiteOS tickless demo: hello, iot!\r\n");
LOS_TaskDelay(2000); /* 休眠 2 秒,期间进入 Tickless 低功耗 */
}
}
UINT32 DemoTaskCreate(void)
{
TSK_INIT_PARAM_S taskParam = {0};
taskParam.pfnTaskEntry = (TSK_ENTRY_FUNC)DemoTaskEntry;
taskParam.uwStackSize = 0x400;
taskParam.usTaskPrio = 5;
taskParam.pcName = "demo-task";
return LOS_TaskCreate(&g_taskId, &taskParam);
}
实际移植中最常见的三个坑:一是 HAL 库的 SysTick 时基与 LiteOS 的 tick 冲突,需要在 CubeMX 中把 SysTick 时基切换到其他定时器,否则会进入 HardFault;二是 BOARD_SRAM_SIZE_KB 必须与实际 RAM 匹配,过小会导致内存分配失败,过大虽然能编译但运行时会异常;三是中断接管配置,如果 LiteOS 接管了中断,就不能在中断向量表里重复注册 HAL 的中断处理函数。
六、典型应用与边界
LiteOS 的典型落地有三类:一是 LPWA 场景的智能水表/气表/车检器/路灯,依靠 NB-IoT 与 OpenCPU 架构在电池供电下长期运行;二是共享设备,如共享单车智能锁、共享邮箱、智能猫眼/门铃/安防摄像头,2018 年起搭载 LiteOS 的 NB-IoT 产品累计出货超过 2000 万,ofo 共享单车锁平均可连续工作 26 个月;三是智能渔业,户外传感器配合 NB-IoT 模组,采集水温/溶氧等数据上传云端,带动养殖管理从人工巡检升级为 7×24 自动监测。
需要客观看到的是,LiteOS 偏重“端管云”中的“端”层,不直接替代行业 PaaS。当业务强依赖复杂 UI、图像处理、多媒体交互时,更适合选 LiteOS-A 或 OpenHarmony;当终端需要执行复杂业务规则、与多个云服务深度集成时,仍需在云端引入 IoT 平台与业务系统,而不是把责任压在终端 OS 上。开发层面,LiteOS 的文档与社区已经覆盖 STM32 全系、野火/小熊派/正点原子等主流开发板,迁移到国产 MCU 的移植指南与示例工程也已就位,初学者从裸机工程走到第一个任务打印通常只需要 1-2 天。
常见问题(FAQ)
Q1:LiteOS 和 OpenHarmony 是什么关系?
LiteOS 是 OpenHarmony 多内核架构中的可选内核之一,继续独立演进;OpenHarmony 还包含 Linux 内核,面向更复杂的智能终端。
Q2:最小内核 6KB 的产品真能商用吗?
可以。LPWA 弱终端通常只需要任务调度、内存管理、Tickless 休眠与几项 IPC,6KB 内核已能稳定运行水表/车检器等设备。
Q3:LiteOS 能否对接第三方云平台?
可以。端云互通组件默认对接 OceanConnect,同时也支持通过 LwM2M/CoAP/MQTT 适配其他云平台。