OpenHarmony(鸿蒙南向开发)——子系统开发内核

内核概述

内核简介

用户最常见到并与之交互的操作系统界面,其实只是操作系统最外面的一层。操作系统最重要的任务,包括管理硬件设备,分配系统资源等,我们称之为操作系统内在最重要的核心功能。而实现这些核心功能的操作系统模块,业界一般称之为操作系统“内核”。

实现原理

操作系统是位于应用和硬件之间的系统软件,向上提供易用的程序接口和运行环境,向下管理硬件资源。内核位于操作系统的下层,为操作系统上层的程序框架提供硬件资源的并发管理。

图1 操作系统架构

多内核架构和基本组成

业界的内核有很多,但无论是什么内核,基本上有几个最重要的组成单元是每个内核均要具备的,分别是:

  • 负责持久化数据,并让应用程序能够方便的访问持久化数据的“文件系统”。
  • 负责管理进程地址空间的“内存管理”。
  • 负责管理多个进程的“进程管理”或者“任务管理“。
  • 负责本机操作系统和另外一个设备上操作系统通信的“网络”。

OpenHarmony采用了多内核结构,支持Linux和LiteOS,开发者可按不同产品规格进行选择使用。Linux和LiteOS均具备上述组成单元,只是实现方式有所不同。多个内核通过KAL(Kernel Abstraction Layer)模块,向上提供统一的标准接口。

内核子系统位于OpenHarmony下层。需要特别注意的是,由于OpenHarmony面向多种设备类型,这些设备有着不同的CPU能力,存储大小等。为了更好的适配这些不同的设备类型,内核子系统支持针对不同资源等级的设备选用适合的OS内核,内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽内核间差异,对上层提供基础的内核能力。

图2 OpenHarmony架构图

不同内核适配的系统及设备类型

OpenHarmony按照支持的设备可分为如下几种系统类型:

  • 轻量系统(mini system) 面向MCU类处理器例如Arm Cortex-M、RISC-V 32位的设备,硬件资源极其有限,支持的设备最小内存为128KiB,可以提供多种轻量级网络协议,轻量级的图形框架,以及丰富的IOT总线读写部件等。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。

  • 小型系统(small system) 面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为1MiB,可以提供更高的安全能力、标准的图形框架、视频编解码的多媒体能力。可支撑的产品如智能家居领域的IP Camera、电子猫眼、路由器以及智慧出行域的行车记录仪等。

  • 标准系统(standard system) 面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为128MiB,可以提供增强的交互能力、3D GPU以及硬件合成能力、更多控件以及动效更丰富的图形能力、完整的应用框架。可支撑的产品如高端的冰箱显示屏。

OpenHarmony针对不同量级的系统,使用了不同形态的内核

### OpenHarmony南向开发标准系统要求与指导 OpenHarmony南向开发涉及硬件设备驱动程序的设计与实现,其目标是为开发者提供统一的开发框架和支持多种硬件架构的能力。以下是关于OpenHarmony南向开发的标准系统要求、开发规范以及设备集成的关键点: #### 1. 驱动子系统的结构设计 OpenHarmony驱动子系统采用了C面向对象编程模型构建,通过平台解耦和内核解耦的方式实现了对不同操作系统的兼容性支持[^2]。这种设计使得开发者可以更加灵活地针对不同的硬件平台进行适配,并确保一次开发即可应用于多个系统。 #### 2. DAC模块的功能划分 在具体的DAC(数模转换器)模块中,功能被划分为三个层次: - **接口层** 提供了诸如打开设备、写入数据和关闭设备等基本的操作接口[^5]。 - **核心层** 负责绑定设备、初始化设备以及最终释放资源的任务。 - **适配层** 则专注于实现其他特定需求的功能扩展。 这些分层设计不仅提高了代码可维护性和重用率,还简化了复杂场景下的调试过程。 #### 3. 开发环境准备 为了顺利开展基于OpenHarmony南向开发工作,首先需要完成必要的开发环境搭建。这包括但不限于运行并配置好DevEco Studio工具链,在初次启动时建议选择"Do not import settings"选项来避免潜在冲突;同时调整合适的npm源地址以优化依赖项获取效率[^3]。 #### 4. 硬件交互原理概述 从本质上讲,驱动开发即是创建允许操作系统与物理硬件之间高效沟通桥梁的过程。正如I/O流用于处理文件读写一样,这里的“文件”变成了实际存在的外部装置—比如传感器或者控制器等实体部件[^4]。因此理解底层工作机制对于成功实施任何类型的嵌入式解决方案都至关重要。 ```c // 示例:简单模拟一个GPIO控制函数 void gpio_set_value(int pin, int value){ if(value == HIGH){ // 设置高电平逻辑 write(pin,HIGH); }else{ // 设置低电平逻辑 write(pin,LOW); } } ``` 上述片段展示了如何定义一个基础版通用输入/输出引脚状态切换方法的例子。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值