忿忿的泥巴坨 发表于 2024-8-25 20:58:56

OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)

内核简介

OpenHarmony LiteOS-M内核是面向IoT范畴构建的轻量级物联网利用系统内核,具有小体积、低功耗、高性能的特点。其代码结构简单,主要包括内核最小功能集、内核抽象层、可选组件以及工程目次等。支持驱动框架HDF(Hardware Driver Foundation),统一驱动标准,为设备厂商提供了更统一的接入方式,使驱动更加容易移植,力求做到一次开发,多系统部署。
OpenHarmony LiteOS-M内核架构包罗硬件干系层以及硬件无关层,如下图所示,其中硬件干系层按不同编译工具链、芯片架构分类,提供统一的HAL(Hardware Abstraction Layer)接口,提升了硬件易适配性,满足AIoT类型丰富的硬件和编译工具链的拓展;其他模块属于硬件无关层,其中基础内核模块提供基础能力,扩展模块提供网络、文件系统等组件能力,还提供错误处理、调测等能力,KAL(Kernel Abstraction Layer)模块提供统一的标准接口。
图1 内核架构图
https://img-blog.csdnimg.cn/img_convert/6668e90f6076a7ef894896bba37552e7.webp?x-oss-process=image/format,png
CPU体系架构支持

CPU体系架构分为通用架构定义和特定架构定义两层,通用架构定义层为所有体系架构都必要支持和实现的接口,特定架构定义层为特定体系架构所特有的部门。在新增一个体系架构的时候,必须必要实现通用架构定义层,假如该体系架构还有特有的功能,可以在特定架构定义层来实现。
表1 CPU体系架构规则
规则通用体系架构层特定体系架构层头文件位置arch/includearch头文件定名los_.hlos_arch_.h函数定名HalxxxxHalxxxx LiteOS-M已经支持ARM Cortex-M3、ARM Cortex-M4、ARM Cortex-M7、ARM Cortex-M33、RISC-V等主流架构。
运行机制

在开发板配置文件target_config.h配置系统时钟、每秒Tick数,可以对任务、内存、IPC、异常处理模块进行裁剪配置。系统启动时,根据配置进行指定模块的初始化。内核启动流程包罗外设初始化、系统时钟配置、内核初始化、利用系统启动等,详见下图。
图2 内核启动流程
https://img-blog.csdnimg.cn/img_convert/1fe12e0e816c94b03262d865aabb8da6.webp?x-oss-process=image/format,png
目次

目次结构如下。
/kernel/liteos_m
├── arch               # 内核指令架构层目录
│   ├── arm            # arm 架构代码
│   │   ├── arm9         # arm9 架构代码
│   │   ├── cortex-m3    # cortex-m3架构代码
│   │   ├── cortex-m33   # cortex-m33架构代码
│   │   ├── cortex-m4    # cortex-m4架构代码
│   │   ├── cortex-m55   # cortex-m55架构代码
│   │   ├── cortex-m7    # cortex-m7架构代码
│   │   └── include      # arm架构公共头文件目录
│   ├── csky             # csky架构代码
│   │   └── v2         # csky v2架构代码
│   ├── include          # 架构层对外接口存放目录
│   ├── risc-v         # risc-v 架构
│   │   ├── nuclei       # 芯来科技risc-v架构代码
│   │   └── riscv32      # risc-v官方通用架构代码
│   └── xtensa         # xtensa 架构代码
│       └── lx6          # xtensa lx6架构代码
├── components         # 可选组件
│   ├── backtrace      # 栈回溯功能
│   ├── cppsupport       # C++支持
│   ├── cpup             # CPUP功能
│   ├── dynlink          # 动态加载与链接
│   ├── exchook          # 异常钩子
│   ├── fs               # 文件系统
│   ├── lmk            # Low memory killer 机制
│   ├── lms            # Lite memory sanitizer 机制
│   ├── net            # Network功能
│   ├── power            # 低功耗管理
│   ├── shell            # shell功能
│   └── trace            # trace 工具
├── drivers            # 驱动框架Kconfig
├── kal                  # 内核抽象层
│   ├── cmsis            # cmsis标准接口支持
│   └── posix            # posix标准接口支持
├── kernel               # 内核最小功能集支持
│   ├── include          # 对外接口存放目录
│   └── src            # 内核最小功能集源码
├── testsuites         # 内核测试用例
├── tools                # 内核工具
├── utils                # 通用公共目录
text
束缚

开发语言:C/C++;
实用架构:详见目次结构arch层。
动态加载模块:待加载的共享库必要验签或者限定来源,确保安全性。
利用说明

OpenHarmony LiteOS-M内核的编译构建系统是一个基于gn和ninja的组件化构建系统,支持按组件配置、裁剪和拼装,按需构建出定制化的产品。本文主要先容怎样基于gn和ninja编译LiteOS-M工程,GCC+gn、IAR、Keil MDK等编译方式可以参考社区爱好者贡献的站点。
搭建系统基础情况

在搭建各个开发板情况前,必要完成OpenHarmony系统基础情况搭建。系统基础情况主要是指OpenHarmony的编译情况和开发情况,详细先容请参考官方站点快速入门情况搭建部门。开发者必要根据情况搭建文档完成情况搭建。
获取OpenHarmony源码

详细的源码获取方式,请见源码获取。获取OpenHarmony完备仓代码后,假设克隆目次为~/OpenHarmony。
已支持的示例工程

Qemu模拟器: arm_mps2_an386、esp32、riscv32_virt、SmartL_E802, 编译运行详见: Qemu指导
社区移植工程链接

LiteOS-M内核移植的详细开发板的工程由社区开发者提供,可以访问社区开发者代码仓获取。假如您移植支持了更多开发板,可以提供链接给我们进行社区分享。


[*]cortex-m3:

[*]STM32F103 https://gitee.com/rtos_lover/stm32f103_simulator_keil

该仓包罗OpenHarmony LiteOS-M内核基于STM32F103芯片架构构建的Keil工程,支持Keil MDK方式进行编译。


[*]cortex-m4:

[*]野火寻衅者STM32F429IGTb https://gitee.com/harylee/stm32f429ig_firechallenger

该仓包罗OpenHarmony LiteOS-M内核移植支持野火寻衅者STM32F429IGTb开发板的工程代码,支持Ninja、GCC、IAR等方式进行编译。
假如各人想更加深入的学习 OpenHarmony(鸿蒙南向) 开发的全栈内容,不妨可以参考以下干系学习文档进行学习,助你快速提升自己:
OpenHarmony 开发情况搭建:https://qr18.cn/CgxrRy

https://img-blog.csdnimg.cn/direct/4dfe2f31a14b46239f7ae59808df5c90.png
《OpenHarmony源码解析》:https://qr18.cn/CgxrRy



[*]搭建开发情况
[*]Windows 开发情况的搭建
[*]Ubuntu 开发情况搭建
[*]Linux 与 Windows 之间的文件共享
[*]……
https://img-blog.csdnimg.cn/direct/bef6f1bd585c4848a00e2d58ad3b9986.png
系统架构分析:https://qr18.cn/CgxrRy



[*]构建子系统
[*]启动流程
[*]子系统
[*]分布式任务调理子系统
[*]分布式通信子系统
[*]驱动子系统
[*]……
https://img-blog.csdnimg.cn/direct/fa917c13583648ffb3d99bbecfba40d1.png
OpenHarmony 设备开发学习手册:https://qr18.cn/CgxrRy

https://img-blog.csdnimg.cn/direct/bfc166b706774e13b603b9e268e99f12.png
OpenHarmony面试题(内含参考答案):https://qr18.cn/CgxrRy

https://img-blog.csdnimg.cn/direct/c9eba9c31e4647b7ad505234a33a0ddb.png
写在最后



[*]假如你以为这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
[*]点赞,转发,有你们的 『点赞和批评』,才是我创造的动力。
[*]关注小编,同时可以期待后续文章ing
页: [1]
查看完整版本: OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)