文章目录

  • 前言
  • 内核
    • 任务管理
    • 内存管理
    • 硬件相关
    • IPC通信
    • 软件定时器
    • 自旋锁
    • 低功耗
    • 维测
    • C++支持
  • 后语
  • 参考

前言

Huawei LiteOS是华为面向物联网领域开发的一个基于实时内核的轻量级操作系统。当前最新版本为v5.0.0,可以访问官网 https://gitee.com/LiteOS/LiteOS 了解更多。

从官网看,目前还不断有代码提交,应该还有专门团队负责维护,没有都去搞OpenHarmony(https://gitee.com/openharmony)。

OpenHarmony基于LiteOS的内核分出两种形态的内核,分别为小核的kernel_liteos_m(https://gitee.com/openharmony/kernel_liteos_m)和大核的kernel_liteos_a(https://gitee.com/openharmony/kernel_liteos_a)。对OpenHarmony有兴趣的读者,可以访问其官网了解更多。

本文主要介绍Huawei LiteOS的基础内核模块,跟OpenHarmony没有关系。

内核


Huawei LiteOS基础内核包括不可裁剪的极小内核和可裁剪的其他模块。极小内核包含任务管理、内存管理、中断管理、异常管理和系统时钟。可裁剪的模块包括信号量、互斥锁、队列管理、事件管理、软件定时器等。 Huawei LiteOS支持 UP(单核)与 SMP(多核)模式,即支持在单核或者多核的环境上运行。

任务管理

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

内存管理

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

硬件相关

提供中断管理、异常管理、系统时钟等功能。

  • 中断管理:提供中断的创建、删除、使能、禁止、请求位的清除功能。
  • 异常管理:系统运行过程中发生异常后,跳转到异常处理模块,打印当前发生异常的函数调用栈信息,或者保存当前系统状态。
  • Tick:Tick是操作系统调度的基本时间单位,对应的时长由每秒Tick数决定,由用户配置。

IPC通信

提供消息队列、事件、信号量和互斥锁功能。

  • 消息队列:支持消息队列的创建、删除、发送和接收功能。
  • 事件:支持读事件和写事件功能。
  • 信号量:支持信号量的创建、删除、申请和释放功能。
  • 互斥锁:支持互斥锁的创建、删除、申请和释放功能。

软件定时器

软件定时器提供了定时器的创建、删除、启动、停止功能。

自旋锁

多核场景下,支持自旋锁的初始化、申请、释放功能。

低功耗

  • Run-stop:即休眠唤醒,是Huawei LiteOS提供的保存系统现场镜像以及从系统现场镜像中恢复运行的机制。
  • Tickless:Tickless机制通过计算下一次有意义的时钟中断的时间,来减少不必要的时钟中断,从而降低系统功耗。打开Tickless功能后,系统会在CPU空闲时启动Tickless机制。

维测

  • CPU占用率:可以获取系统或者指定任务的CPU占用率。
  • Trace事件跟踪:实时获取事件发生的上下文,并写入缓冲区。支持自定义缓冲区,跟踪指定模块的事件,开启/停止Trace,清除/输出trace缓冲区数据等。
  • LMS:实时检测内存操作合法性,LMS能够检测的内存问题包括缓冲区溢出(buffer overflow),释放后使用(use after free),多重释放(double free)和释放野指针(wild pointer)。
  • Shell:Huawei LiteOS Shell使用串口接收用户输入的命令,通过命令的方式调用、执行相应的应用程序。Huawei LiteOS Shell支持常用的基本调试功能,同时支持用户添加自定义命令。

C++支持

Huawei LiteOS支持部分STL特性、异常和RTTI特性,其他特性由编译器支持。

后语

后续 “LiteOS 知:系列” 文章也主要是基于v5.0.0版本解读LiteOS内核代码。获取代码方法:

$ git clone https://gitee.com/LiteOS/LiteOS.git
$ cd LiteOS
$ git checkout -b v5.0.0 v5.0.0

基于tag v5.0.0拉取本地分支v5.0.0。

参考

  • Huawei LiteOS Kernel开发指南

LiteOS 知:简介相关推荐

  1. LiteOS 知:序

    文章目录 LiteOS 知:官方 LiteOS 知:简介 LiteOS 知:目录结构 LiteOS 知:通用功能 LiteOS 知:任务管理 LiteOS 知:系统调度 LiteOS 知:内存管理 L ...

  2. 按键精灵开发者认证1-6题库

    这是以前整理的题库,包过. 题目:(前台)区域范围为(100,150)到(200,300)内的所有点是否均为"FFFFFF",是则弹出对话框"没有其他颜色",否 ...

  3. ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区 1 Desktop简介 1.1 ArcGIS for Desktop ...

  4. Huawei LiteOS简介

    Huawei LiteOS简介 Huawei LiteOS是华为面向物联网领域开发的一个基于实时内核的轻量级操作系统.本项目属于华为物联网操作系统Huawei LiteOS源码,现有基础内核支持任务管 ...

  5. liteos简介(一)

    LiteOS是在2015华为网络大会上华为发布的敏捷网络3.0中的一个轻量级的物联网操作系统,LiteOS体积只有10KB级. 在Hi3559A中,liteos是用于Cortex-A53,用于处理MP ...

  6. android知乎日报中的动画,开发Android知乎日报(一)简介

    对于一个新手来说开发一个完整点的项目还是会有点难度的,可是真的开发过了就会明白,其实开发一个项目,知识已知知识点的堆叠,今天我从0开始开发一个知乎日报,希望能给新手一些帮助吧.代码会同步到GitHub ...

  7. 微软CRM与知客CRM简介及互补营销

    一.微软 CRM和知客CRM简介 1.Microsoft Dynamics CRM(微软CRM) 微软CRM是一个完全集成的客户关系管理系统.使用微软CRM,您可从第一次接触客户开始,在整个销售和售后 ...

  8. 知识图谱问答系列文档(一)——思知机器人简介

    (一)思知项目介绍 思知机器人项目简介 知识图谱 对话机器人 思知机器人项目简介 思知项目开放了对话机器人.知识图谱.语义理解.自然语言处理工具.知识图谱融合了两千五百多万的实体,拥有亿级别的实体属性 ...

  9. HI3556V200 Linux+Liteos双系统学习(2)----SDK简介

    文章目录 1 SDK目录 2 目录简介 2.1 amp 2.1.1 drv 2.1.2 hisyslink 2.1.3 mpp 2.1.4 osal 2.2 build 2.3 configs 2.4 ...

最新文章

  1. C++语言map和unordered_map的下标操作
  2. VDI序曲九 实战体验Remote FX(重磅推荐)
  3. oracle 增长型分区,oracle表分区增加分区
  4. net use命令详解
  5. hmr webpack 不编译_webpack HMR未加载更改
  6. JS正则表达式验证账号、手机号、电话和邮箱
  7. Huawei S8512
  8. Fix an “Unapproved Caller” SecurityAgent Message in Mac OS X
  9. JS之this与语句分号问题v(**V**)v
  10. Intellij IDEA中分屏显示方法
  11. matlab如何进行数字信号处理,数字信号处理基础及MATLAB实现(第2版)
  12. Java设计模式-设计模式概述
  13. 【转】Android 平台下使用 i2c-tools
  14. php date 函数用法,PHP日期时间函数date()使用方法
  15. 计算机与网络时间同步,电脑时间同步,小编教你怎么让电脑时间和网络时间同步...
  16. tcpdump使用详解及数据包分析
  17. Libgdx粒子效果介绍与使用心得
  18. Django自动化测试平台项目案例
  19. 版权问题某些资源无法下载
  20. 计算机安全类论文题目,★计算机络安全论文题目计算机络安全毕业论文题目大全计算机络安全论文选题参考...

热门文章

  1. iOS Technical Support For All
  2. emlog系统模版源码适用于资源网教程网
  3. 实时监测蓄电池状况,看企业如何出新招应对?
  4. JavaScript刷LeetCode拿offer-经典高频40题
  5. 多多情报通:拼多多物流信息异常是什么原因呢?要如何处理
  6. Selenium之模拟登录铁路12306
  7. php 问卷统计怎么做,使用php问卷调查结果统计
  8. [Homework#1]回味·神笔马良
  9. devDependencies与dependencies如何理解
  10. [4G5G专题-10]:前传接口 eCPRI协议的那些事