目录

系统概述

OpenHarmony LiteOS-M核内核架构图

组件、芯片解决方案和产品解决方案配置规则

板级系统移植

HAL层实现

UTILS

IOT外设子系统


系统概述

需要明确一个大的前提,不管是kernel,lite os-a,还是lite os-m,在鸿蒙系统中的分层层次地位,他是最底层,最低层,也就说这规范了他的功能和能力范围,对于这两个小的系统来说,基本上也没有什么东西,只是鼓吹了软总线的概念。和其他任何os的功能无本质差异。简单的说这个os的移植实际上对于开发者来说无意义。只有他的服务层和业务能力层才能体现鸿蒙的特性。华为总是不提本质,只说几十KB内存大小,有些回避的意思。

以下这些资料也只是网上的说法,最终还是要看具体的代码,技术一旦被吹,就很难着地。很多东西也不正确,或者说只是一些提法,但未必能实现。 LiteOS-M内核代码本质上是套娃操作,里面用的还是之前旧的系统,本来就是个小系统。

OpenHarmony LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系统内核,具有小体积、低功耗、高性能的特点,其代码结构简单,主要包括内核最小功能集、内核抽象层、可选组件以及工程目录等,分为硬件相关层以及硬件无关层,硬件相关层提供统一的HAL(Hardware Abstraction Layer)接口,提升硬件易适配性,不同编译工具链和芯片架构的组合分类,满足AIoT类型丰富的硬件和编译工具链的拓展。其架构图如图1所示:

OpenHarmony LiteOS-M核内核架构图

liteos-m中主要分为KAL、Components、Kernel和Utils四个模块。

  • KAL模块作为内核对外的接口依赖Components模块和Kernel模块。

  • Components模块可插拔,它依赖Kernel模块。

  • 在Kernel模块中,其中硬件相关的代码放在kernel的arch目录中,其余为硬件无关的代码。内核功能集(task、sem等)的实现依赖硬件相关的arch代码,例如任务上下文切换、原子操作等。

  • Utils模块作为基础代码块,被其他模块依赖。

OpenHarmony LiteOS-M内核的编译构建系统是一个基于gn和ninja的组件化构建系统,支持按组件配置、裁剪和拼装,按需构建出定制化的产品。编译构建系统的详细信息可以参考轻量和小型系统编译构建指导。

一个基于gn和ninja的构建系统,以支持OpenHarmony组件化开发为目标,提供以下基本功能:

  • 支持按组件拼装产品并编译。

  • 独立构建芯片解决方案厂商源码。

  • 独立构建单个组件。

  1. hb set: 设置OpenHarmony源码目录和要编译的产品。
  1. hb build: 编译产品、开发板或者组件。编译主要过程如下:

    • 读取编译配置:根据产品选择的开发板,读取开发板config.gni文件内容,主要包括编译工具链、编译链接命令和选项等。
    • 调用gn:调用gn gen命令,读取产品配置生成产品解决方案out目录和ninja文件。
    • 调用ninja:调用ninja -C out/board/product启动编译。
    • 系统镜像打包:将组件编译产物打包,设置文件属性和权限,制作文件系统镜像。

组件、芯片解决方案和产品解决方案配置规则

为了实现芯片解决方案、产品解决方案与OpenHarmony是解耦的、可插拔的,组件、芯片解决方案和产品解决方案的路径、目录树和配置需遵循一定的规则,具体如下:

  • 组件

组件源码路径命名规则为:{领域}/{子系统}/{组件},组件目录树规则如下:

  • 芯片解决方案

芯片解决方案是指基于某款开发板的完整解决方案,包含驱动、设备侧接口适配、开发板sdk等。芯片解决方案是一个特殊的组件,源码路径规则为:device/{芯片解决方案厂商}/{开发板}。芯片解决方案组件会随产品选择的开发板默认编译。芯片解决方案目录树规则如下:

板级系统移植

  • 移植概述

  • 板级驱动适配

  • HAL层实现

  • 系统组件调用

  • 三方组件适配

  • XTS认证

zh-cn/device-dev/porting/移植概述-0.md · OpenHarmony/docs - Gitee.com

以开发板Nucleo-F767Zi为例,演示如何编译运行OpenHarmony LiteOS-M内核工程。在本地目录,执行下述命令克隆示例代码。

git clone https://gitee.com/harylee/nucleo_f767zi.git

https://gitee.com/openharmony/docs/tree/master

HAL层实现

  • UTILS
  • IOT外设子系统
  • WLAN服务

HAL层主要功能是实现轻OpenHarmony与芯片的解耦,以下模块描述的是轻OpenHarmony系统对芯片接口的依赖情况。

git@gitee.com:openharmony/docs.git
zh-cn/device-dev/porting · OpenHarmony/docs - 码云 - 开源中国 (gitee.com)
OpenHarmony文档仓库  docs: OpenHarmony documentation | OpenHarmony开发者文档 - Gitee.com

UTILS

基本介绍:

公共基础提供通用的基础组件,这些基础组件可被各业务子系统及上层应用所使用

IOT外设子系统

基本介绍

提供轻OpenHarmony专有的外部设备操作接口。本模块提供设备操作接口有:FLASH, GPIO, I2C, PWM, UART, WATCHDOG等。

IOT外设子系统HAL层接口说明:

需要芯片适配相关接口的实现,对芯片设备外设接口依赖请参考IOT外设子系统的HAL头文件。

WLAN服务适用于设备接入WLAN无线局域网场景,包括:

  • 使用STA模式,作为接入方接入其他设备、路由器开启的WLAN无线局域网接入点;

  • 使用AP模式,开启无线局域网接入点,允许其他设备连接。

XTS是OpenHarmony生态认证测试套件的集合,当前包括acts(application compatibility test suite)应用兼容性测试套

鸿蒙系统学习 LiteOS-m(六)相关推荐

  1. 华为鸿蒙系统学习笔记9-华为鸿蒙OS与LiteOS对比

    8月9日,在华为开发者大会上,华为消费者业务CEO余承东正式发布了鸿蒙OS(操作系统),在业界算是引起了不小轰动. 之前华为曾透露鸿蒙OS具有低延时.可用于路由器.自动驾驶等特性,明显具有嵌入式RTO ...

  2. 华为鸿蒙系统学习笔记8-开发者生态建设

    2019年8月9日,在华为开发者大会上,华为消费者业务CEO余承东正式发布了鸿蒙系统,并宣布鸿蒙系统开源. 华为正式发布鸿蒙系统,将拿出10亿美金激励开发者建设生态. 据了解,华为原本打算在明年春天推 ...

  3. 鸿蒙系统学习系列 | 上手HarmonyOS十大必看指南!

    华为的鸿蒙系统优点是流畅度和大一统.这套系统主要是基于微内核的全场景分布式OS,可以按照需要进行扩展,由此来实现更为广泛的系统的安全,它主要用于物联网,它的主要特点是很低的时延. HarmonyOS是 ...

  4. 鸿蒙系统学习笔记(一) 鸿蒙系统介绍

    个人学习鸿蒙系列 鸿蒙系统介绍 目录 个人学习鸿蒙系列 鸿蒙系统介绍 一.鸿蒙系统简介 1.简介 2.技术架构 (1)内核层 (2)系统服务层 (3)框架层 (4)应用层 3.发展进程 二.鸿蒙系统特 ...

  5. 鸿蒙系统学习 框架概述(一)

    鸿蒙系统个人理解,他就是一个大杂烩,但也自成体系,核心的理念是"分布式总线",将任何外设看成一个独立的组件,虚拟独立设备,即使是在华为手机上自带的Lcd,Camera,NFC,Se ...

  6. 系统学习 Java IO (六)----管道流 PipedInputStream/PipedOutputStream

    目录:系统学习 Java IO---- 目录,概览 PipedInputStream 类使得可以作为字节流读取管道的内容. 管道是同一 JVM 内的线程之间的通信通道. 使用两个已连接的管道流时,要为 ...

  7. 华为鸿蒙系统学习笔记10-华为鸿蒙 OS 2.0 发布,源代码现已开放

    2020年9月10日,在华为开发者大会 2020 上,华为消费者业务 CEO 余承东宣布推出鸿蒙 OS 2.0 版本(HarmonyOS 2.0).据 InfoQ 向华为官方了解,鸿蒙 OS 的代码将 ...

  8. 华为鸿蒙系统学习笔记2-生态系统介绍

    华为自研的鸿蒙操作系统,成为华为全球开发者大会上最引人注目的热点.此前,华为注册了鸿蒙操作系统的商标,引起了世界范围的关注.华为董事长任正非表示,鸿蒙系统不是专门用于手机的,而是为了做物联网用的.鸿蒙 ...

  9. 华为鸿蒙系统学习笔记1-介绍

    华为鸿蒙系统(HarmonyOS)是基于微内核的全场景分布式OS,可按需扩展,实现更广泛的系统安全,主要用于智能物联网,特点是低时延,甚至可到毫秒级乃至亚毫秒级,由华为技术有限公司开发. 华为自研操作 ...

最新文章

  1. “技术崇拜”与“技术恐惧”都会阻碍 AI 创新,“技术节制”才是正道
  2. Go 语言运行时环境变量快速导览
  3. 让Python pip下载速度加速
  4. 计算机视觉:单阶段目标检测模型YOLO-V3
  5. YOLOv3中darknet的各种层的说明
  6. 如何判断对象是否存活之根搜索算法
  7. 使用ADOMD.NET获取Analysis Services元数据
  8. minigui大号字体的实现,即ttf库的使用【转】
  9. oracle高压水位线,Oracle 高水位线详解(HWM)
  10. linux终端 打开光驱,ubuntu如何挂载光盘? Ubuntu下中手动挂载光盘的教程
  11. Layui组件 sliderVerify 实现滑块验证
  12. OpenCV 4 中文文档(更新mat部分)
  13. 数据时代的我们,应该拥有的大数据思维
  14. ad转3d视图快捷键_AD详细快捷键按键
  15. Java——类与对象
  16. 国际上炒黄金平台有哪些
  17. CentOS 使用二进制部署 Kubernetes 1.13集群
  18. 科学研究是有闲人群的玩艺———读爱因斯坦的短文有感
  19. 自定义UDF函数和UDTF函数
  20. error processing condition on org.autoconfigure.transaction.TransactionAutoConfiguration$Transaction

热门文章

  1. 机器人机构学基础(朱大昌)第四章部分习题答案
  2. mach3软件常见问题和解决方案
  3. 徐一帆:数字化转型为主轴,LTD方法论思想创新引领产教融合教育
  4. 缓冲区溢出攻击实验(深大计系2实验4)三题思路+答案
  5. 超强综述 | Rob Knight等手把手教你分析菌群数据(全文翻译1.8万字)
  6. css 获取元素高度,如何获取没有给出高度的元素的高度?
  7. 设计一个适合三维网格重建的卷积神经网络
  8. 数字孪生白皮书(附下载)
  9. 光纤跳线性能测试科普
  10. 用fopen写入一个文件