鸿蒙系统学习 LiteOS-m(六)
目录
系统概述
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组件化开发为目标,提供以下基本功能:
支持按组件拼装产品并编译。
独立构建芯片解决方案厂商源码。
独立构建单个组件。
- hb set: 设置OpenHarmony源码目录和要编译的产品。
- 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(六)相关推荐
- 华为鸿蒙系统学习笔记9-华为鸿蒙OS与LiteOS对比
8月9日,在华为开发者大会上,华为消费者业务CEO余承东正式发布了鸿蒙OS(操作系统),在业界算是引起了不小轰动. 之前华为曾透露鸿蒙OS具有低延时.可用于路由器.自动驾驶等特性,明显具有嵌入式RTO ...
- 华为鸿蒙系统学习笔记8-开发者生态建设
2019年8月9日,在华为开发者大会上,华为消费者业务CEO余承东正式发布了鸿蒙系统,并宣布鸿蒙系统开源. 华为正式发布鸿蒙系统,将拿出10亿美金激励开发者建设生态. 据了解,华为原本打算在明年春天推 ...
- 鸿蒙系统学习系列 | 上手HarmonyOS十大必看指南!
华为的鸿蒙系统优点是流畅度和大一统.这套系统主要是基于微内核的全场景分布式OS,可以按照需要进行扩展,由此来实现更为广泛的系统的安全,它主要用于物联网,它的主要特点是很低的时延. HarmonyOS是 ...
- 鸿蒙系统学习笔记(一) 鸿蒙系统介绍
个人学习鸿蒙系列 鸿蒙系统介绍 目录 个人学习鸿蒙系列 鸿蒙系统介绍 一.鸿蒙系统简介 1.简介 2.技术架构 (1)内核层 (2)系统服务层 (3)框架层 (4)应用层 3.发展进程 二.鸿蒙系统特 ...
- 鸿蒙系统学习 框架概述(一)
鸿蒙系统个人理解,他就是一个大杂烩,但也自成体系,核心的理念是"分布式总线",将任何外设看成一个独立的组件,虚拟独立设备,即使是在华为手机上自带的Lcd,Camera,NFC,Se ...
- 系统学习 Java IO (六)----管道流 PipedInputStream/PipedOutputStream
目录:系统学习 Java IO---- 目录,概览 PipedInputStream 类使得可以作为字节流读取管道的内容. 管道是同一 JVM 内的线程之间的通信通道. 使用两个已连接的管道流时,要为 ...
- 华为鸿蒙系统学习笔记10-华为鸿蒙 OS 2.0 发布,源代码现已开放
2020年9月10日,在华为开发者大会 2020 上,华为消费者业务 CEO 余承东宣布推出鸿蒙 OS 2.0 版本(HarmonyOS 2.0).据 InfoQ 向华为官方了解,鸿蒙 OS 的代码将 ...
- 华为鸿蒙系统学习笔记2-生态系统介绍
华为自研的鸿蒙操作系统,成为华为全球开发者大会上最引人注目的热点.此前,华为注册了鸿蒙操作系统的商标,引起了世界范围的关注.华为董事长任正非表示,鸿蒙系统不是专门用于手机的,而是为了做物联网用的.鸿蒙 ...
- 华为鸿蒙系统学习笔记1-介绍
华为鸿蒙系统(HarmonyOS)是基于微内核的全场景分布式OS,可按需扩展,实现更广泛的系统安全,主要用于智能物联网,特点是低时延,甚至可到毫秒级乃至亚毫秒级,由华为技术有限公司开发. 华为自研操作 ...
最新文章
- “技术崇拜”与“技术恐惧”都会阻碍 AI 创新,“技术节制”才是正道
- Go 语言运行时环境变量快速导览
- 让Python pip下载速度加速
- 计算机视觉:单阶段目标检测模型YOLO-V3
- YOLOv3中darknet的各种层的说明
- 如何判断对象是否存活之根搜索算法
- 使用ADOMD.NET获取Analysis Services元数据
- minigui大号字体的实现,即ttf库的使用【转】
- oracle高压水位线,Oracle 高水位线详解(HWM)
- linux终端 打开光驱,ubuntu如何挂载光盘? Ubuntu下中手动挂载光盘的教程
- Layui组件 sliderVerify 实现滑块验证
- OpenCV 4 中文文档(更新mat部分)
- 数据时代的我们,应该拥有的大数据思维
- ad转3d视图快捷键_AD详细快捷键按键
- Java——类与对象
- 国际上炒黄金平台有哪些
- CentOS 使用二进制部署 Kubernetes 1.13集群
- 科学研究是有闲人群的玩艺———读爱因斯坦的短文有感
- 自定义UDF函数和UDTF函数
- error processing condition on org.autoconfigure.transaction.TransactionAutoConfiguration$Transaction