概述

Huawei LiteOS是华为面向物联网领域开发的一个基于实时内核的轻量级操作系统。本项目属于华为物联网操作系统Huawei LiteOS源码,现有基础内核支持任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理、定时器等操作系统基础组件,更好地支持低功耗场景,支持tickless机制,支持定时器对齐。

同时提供端云协同能力,集成了LwM2M、CoAP、mbedtls、LwIP全套IoT互联协议栈,且在LwM2M的基础上,提供了AgentTiny模块,用户只需关注自身的应用,而不必关注LwM2M实现细节,直接使用AgentTiny封装的接口即可简单快速实现与云平台安全可靠的连接。

Huawei LiteOS自开源社区发布以来,围绕NB-IoT物联网市场从技术、生态、解决方案、商用支持等多维度使能合作伙伴,构建开源的物联网生态,目前已经聚合了30+ MCU和解决方案合作伙伴,共同推出一批开源开发套件和行业解决方案,帮助众多行业客户快速的推出物联网终端和服务,客户涵盖抄表、停车、路灯、环保、共享单车、物流等众多行业,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。

LiteOS Kernel的优势

  • 高实时性,高稳定性。
  • 超小内核,基础内核体积可以裁剪至不到10K。
  • 低功耗。
  • 支持功能静态裁剪。

背景介绍

Huawei LiteOS是轻量级的实时操作系统,是华为IoT OS。

图 1  Huawei LiteOS Kernel的基本框架图



物联网开源项目 java 物联网开源操作系统_内存管理

Huawei LiteOS基础内核是最精简的Huawei LiteOS操作系统代码,包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理、定时器等操作系统基础组件,可以单独运行。

各模块简介

任务

提供任务的创建、删除、延迟、挂起、恢复等功能,以及锁定和解锁任务调度。支持任务按优先级高低的抢占调度及同优先级时间片轮转调度。

任务同步

  • 信号量:支持信号量的创建、删除、申请和释放等功能。
  • 互斥锁:支持互斥锁的创建、删除、申请和释放等功能。

硬件相关

提供中断、定时器等功能。

  • 中断:提供中断的创建、删除、使能、禁止、请求位的清除等功能。
  • 定时器:提供定时器的创建、删除、启动、停止等功能。

IPC通信

提供事件、消息队列功能。

  • 事件:支持读事件和写事件功能。
  • 消息队列:支持消息队列的创建、删除、发送和接收功能。

时间管理

  • 系统时间:系统时间是由定时/计数器产生的输出脉冲触发中断而产生的。
  • Tick时间:Tick是操作系统调度的基本时间单位,对应的时长由系统主频及每秒Tick数决定,由用户配置。
  • 软件定时器:以Tick为单位的定时器功能,软件定时器的超时处理函数在系统创建的Tick软中断中被调用。

内存管理

  • 提供静态内存和动态内存两种算法,支持内存申请、释放。目前支持的内存管理算法有固定大小的BOX算法、动态申请SLAB、DLINK算法。
  • 提供内存统计、内存越界检测功能。

LiteOS的代码目录结构

关于代码树中各个目录存放的源代码的相关内容简介如下:

一级目录

二级目录

三级目录

说明

arch

arm

cortex-a

A核内存mmu、异常处理、时钟等相关代码,新增

cortex-m

M核中断、调度、tick相关代码

common

arm核公用的cmsis core接口

include

arm头文件

common

cmsis头文件

msp430

msp430架构中断、调度、tick相关代码

build

预留的一个空的makefile

components

connectivity

agent_tiny

agent_tiny端云互通组件,包括公共头文件、示例代码、客户端实现代码、操作系统适配层代码

lwm2m

lwm2m协议实现

nb_iot

LiteOS NB-IoT API

mqtt

MQTT开源协议实现

ota

固件升级代码

fs

文件系统,含VFS、spiffs、ramfs、kifs、fatfs、devfs

lib

libc

LiteOS libc优化

libsec

安全函数库

cJSON

c语言json库

log

日志等级控制

net

at_frame

LiteOS AT框架API

at_device

AT设备适配层

lwip/lwip_port

lwip驱动及OS适配代码

lwip/lwip-2.0.3

lwip协议实现

lwip/ppp_port

lwip协议ppp端口支持

sal

socket通讯支持

security

mbedtls/mbedtls_port

mbed TLS的OS适配代码

mbedtls/mbedtl-2.6.0

mbed TLS协议实现

doc

此目录存放的是LiteOS的使用文档和API说明等文档

demos

kernel

API

供开发者测试LiteOS内核的demo示例,此目录存放的是内核功能测试用的相关用例的代码

include

API功能头文件存放目录

agenttiny_lwm2m

lwm2m协议 demo

agenttiny_mqtt

mqtt 协议demo

dtls_server

dtls协议demo

fs

文件系统demo

ipv6_client

Ipv6协议demo

nbiot_without_atiny

NB_IoT demo

include

components各个模块所依赖的头文件

kernel

base

core

LiteOS基础内核代码,包括队列、task调度、软timer、时间片计算等功能

om

与错误处理相关的文件

include

LiteOS内核内部使用的头文件

ipc

LiteOS中task间通讯的相关接口,包括事件、信号量、消息队列、互斥锁等

mem

LiteOS中的内核内存管理的相关代码

misc

内存对齐功能以及毫秒级休眠sleep功能

mp

预留多CPU支持

sched

任务调度支持

include

LiteOS开源内核头文件

extended

tickless

tickless定时机制实现

osdepends

liteos

cmsis

liteos cmsis_os 1.0和2.0支持

targets

Cloud_STM32F429IGTx_FIRE

野火STM32F429(ARM Cortex M4)开发板对应的编程及开发工程源码包

Mini_Project

最小工程

NXP_LPC51U68

NXP ARM Cortex M0 ENC28J60以太网LiteOS SDK端云demo

STM32F103VET6_NB_GCC

F103(ARM Cortex M3)内核移植demo,NB-IoT,GCC环境

bsp

通用板级支持包

test

内核及系统库的参考测试代码