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

打印 上一主题 下一主题

主题 526|帖子 526|积分 1578

内核简介

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

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 内核启动流程

目次

目次结构如下。
  1. /kernel/liteos_m
  2. ├── arch                 # 内核指令架构层目录
  3. │   ├── arm              # arm 架构代码
  4. │   │   ├── arm9         # arm9 架构代码
  5. │   │   ├── cortex-m3    # cortex-m3架构代码
  6. │   │   ├── cortex-m33   # cortex-m33架构代码
  7. │   │   ├── cortex-m4    # cortex-m4架构代码
  8. │   │   ├── cortex-m55   # cortex-m55架构代码
  9. │   │   ├── cortex-m7    # cortex-m7架构代码
  10. │   │   └── include      # arm架构公共头文件目录
  11. │   ├── csky             # csky架构代码
  12. │   │   └── v2           # csky v2架构代码
  13. │   ├── include          # 架构层对外接口存放目录
  14. │   ├── risc-v           # risc-v 架构
  15. │   │   ├── nuclei       # 芯来科技risc-v架构代码
  16. │   │   └── riscv32      # risc-v官方通用架构代码
  17. │   └── xtensa           # xtensa 架构代码
  18. │       └── lx6          # xtensa lx6架构代码
  19. ├── components           # 可选组件
  20. │   ├── backtrace        # 栈回溯功能
  21. │   ├── cppsupport       # C++支持
  22. │   ├── cpup             # CPUP功能
  23. │   ├── dynlink          # 动态加载与链接
  24. │   ├── exchook          # 异常钩子
  25. │   ├── fs               # 文件系统
  26. │   ├── lmk              # Low memory killer 机制
  27. │   ├── lms              # Lite memory sanitizer 机制
  28. │   ├── net              # Network功能
  29. │   ├── power            # 低功耗管理
  30. │   ├── shell            # shell功能
  31. │   └── trace            # trace 工具
  32. ├── drivers              # 驱动框架Kconfig
  33. ├── kal                  # 内核抽象层
  34. │   ├── cmsis            # cmsis标准接口支持
  35. │   └── posix            # posix标准接口支持
  36. ├── kernel               # 内核最小功能集支持
  37. │   ├── include          # 对外接口存放目录
  38. │   └── src              # 内核最小功能集源码
  39. ├── testsuites           # 内核测试用例
  40. ├── tools                # 内核工具
  41. ├── utils                # 通用公共目录
  42. 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


《OpenHarmony源码解析》:https://qr18.cn/CgxrRy



  • 搭建开发情况
  • Windows 开发情况的搭建
  • Ubuntu 开发情况搭建
  • Linux 与 Windows 之间的文件共享
  • ……

系统架构分析:https://qr18.cn/CgxrRy



  • 构建子系统
  • 启动流程
  • 子系统
  • 分布式任务调理子系统
  • 分布式通信子系统
  • 驱动子系统
  • ……

OpenHarmony 设备开发学习手册:https://qr18.cn/CgxrRy


OpenHarmony面试题(内含参考答案):https://qr18.cn/CgxrRy


写在最后



  • 假如你以为这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和批评』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表