LiteOS 华为物联网操作系统简介

时间:2024-04-13 21:11:10

LiteOS华为物联网操作系统

一、Huawei LiteOS 简介

Huawei LiteOS 是华为面向IoT领域,构建的"统一物联网操作系统和中间件软件平台",以轻量级(内核小于10k)、低功耗(1节5号电池最多可以工作5年),快速启动,互联互通,安全等关键能力,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。

Huawei LiteOS 目前主要应用于智能家居、穿戴式、车联网、智能抄表、工业互联网等 IoT 领域的智能硬件上。

LiteOS是在2015华为网络大会上华为发布的敏捷网络3.0中的一个轻量级的物联网操作系统,LiteOS体积只有10KB级。

在Hi3559A中,liteos是用于Cortex-A53,用于处理MPP 媒体业务逻辑的;

LiteOS 华为物联网操作系统简介

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

二、Huawei LiteOS Kernel 的优势

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

三、各模块简介

任务:

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

任务同步:

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

硬件相关:

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

IPC通信:

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

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

时间管理

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

内存管理

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

异常接管

异常接管是指在系统运行过程中发生异常后,跳转到异常处理信息的钩子函数,打印当前发生异常函数调用栈信息,或者保存当前系统状态的一系列动作。

Huawei LiteOS的异常接管,会在异常后打印发生异常的任务ID号、栈大小,以及LR、PC等寄存器信息;

动态加载

动态加载是一种软件加载链接技术,不对组成程序的目标文件进行一次性链接加载,等到程序要运行时才进行链接加载。

Huawei LiteOS提供支持OBJ目标文件和SO共享目标文件的动态加载机制。

分散加载

分散加载是通过重排镜像等手段,把关键业务优先加载,从而缩短启动时间。

四、源码分析

Huawei LiteOS已经完全开源,下载链接如下:https://www.oschina.net/p/liteos?hmsr=aladdin1e1

如果大家觉得麻烦,可以直接从网盘下载:https://pan.baidu.com/s/15nQ7CWsX9VNMNQoPwhJjhA

提取码:k2lr

LiteOS的代码目录结构说明

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

一级目录 二级目录 三级目录 说明
arch arm cortex_a_r A核架构支持
cortex_m M核中断、调度、tick相关代码
common arm核公用的cmsis core接口
include arm头文件
arm64 arm64架构支持
common 中断处理API
msp430 msp430架构中断、调度、tick相关代码
build LiteOS编译系统需要的配置及脚本
compat cmsis liteos提供的CMSIS-RTOS 1.0和2.0接口
posix include posix接口的头文件
src posix接口的源码
components connectivity agent_tiny agent_tiny端云互通组件,包括公共头文件、示例代码、客户端实现代码、操作系统适配层代码
lwm2m lwm2m协议实现
mqtt MQTT开源协议实现
nb_iot LiteOS NB-IoT API
fs 文件系统,含VFS、spiffs、ramfs、kifs、fatfs、devfs
gui lvgl 开源LittlevGL的源码
lib cJSON c语言json库
log 日志等级控制
net at_device AT设备适配层
at_frame LiteOS AT框架API
lwip/lwip_port lwip驱动及OS适配代码
lwip/lwip-2.0.3 lwip协议实现
lwip/ppp_port lwip协议ppp端口支持
sal socket通讯支持
ota 固件升级代码
security mbedtls/mbedtls_port mbed TLS的OS适配代码
mbedtls/mbedtl-2.6.0 mbed TLS协议实现
sensorhub include sensor manager头文件
src sensor manager的源码实现
demos agenttiny_lwm2m lwm2m协议 demo
agenttiny_mqtt mqtt 协议demo
dtls_server dtls协议demo
fs 文件系统demo
gui gui的demo
ipv6_client Ipv6协议demo
kernel api 供开发者测试LiteOS内核的demo示例,此目录存放的是内核功能测试用的相关用例的代码
include API功能头文件存放目录
nbiot_without_atiny NB_IoT demo
sensorhub gyro 基于sensorhub传感框架定时读取MPU6050原始数据的demo
doc 此目录存放的是LiteOS的使用文档和API说明等文档
include components各个模块所依赖的头文件
kernel base core LiteOS基础内核代码,包括队列、task调度、软timer、时间片计算等功能
include LiteOS内核内部使用的头文件
ipc LiteOS中task间通讯的相关接口,包括事件、信号量、消息队列、互斥锁等
mem LiteOS中的内核内存管理的相关代码
misc 内存对齐功能以及毫秒级休眠sleep功能
mp 预留多CPU支持
om 与错误处理相关的文件
sched 任务调度支持
extended cppsupport C++兼容适配层底层接口
cpup CPU占用率统计接口
include extended目录所需的头文件
tickless tickless定时机制实现
include LiteOS开源内核头文件
lib hw LiteOS适配的malloc、errno、strnstr函数接口
libc LiteOS适配的libc库
libsec 华为安全函数库
zlib 开源zlib库
osdepends liteos LiteOS提供的部分OS适配接口
targets bsp 通用板级支持包
Cloud_STM32F429IGTx_FIRE 野火STM32F429(ARM Cortex M4)开发板的开发工程源码包
Mini_Project 仿真工程
STM32F769IDISCOVERY STM32F769IDISCOVERY(ARM Cortex M7)开发板的开发工程源码包
STM32L431_BearPi 小熊派STM32L431(ARM Cortex M4)开发板的开发工程源码包
tests 内核及系统库的参考测试代码
tools build LiteOS支持的开发板编译配置文件
menuconfig LiteOS编译所需的menuconfig脚本
stackusage LiteOS栈使用估计工具
Makefile LiteOS Makefile