【鸿蒙南向开发】OpenHarmony系统管理服务子系统介绍

简介

系统服务管理子系统实现系统服务框架,提供系统服务的启动、注册、查询功能,提供查询跨设备的分布式系统服务。

系统架构

在这里插入图片描述

目录

/foundation/distributedschedule
├── safwk                       # 系统服务框架模块
├── samgr                       # 系统服务管理模块
├── safwk_lite                  # 轻量foundation进程
├── samgr_lite                  # 轻量系统服务管理模块
​

这里我们介绍的是 lite 轻量级的系统服务管理。

safwk_lite

简介

safwk_lite 模块负责提供基础服务运行的空进程。

目录

├── BUILD.gn
├── readme.md
├── LICENSE
├── src
    └── main.c

使用

在 foundation 进程中添加服务,按照服务的模板写完服务后在 BUILD.gn 中添加依赖即可:

deps = [
  "${aafwk_lite_path}/services/abilitymgr_lite:abilityms",
  "${appexecfwk_lite_path}/services/bundlemgr_lite:bundlems",
  "//base/hiviewdfx/hilog_lite/frameworks/featured:hilog_shared",
  "//base/security/permission_lite/services/ipc_auth:ipc_auth_target",
  "//base/security/permission_lite/services/pms:pms_target",
  "//foundation/ability/dmsfwk_lite:dtbschedmgr",
  "//foundation/distributedschedule/samgr_lite/samgr_server:server",
]
​

samgr_lite

简介

由于平台资源有限,且硬件平台多样,因此需要屏蔽不同硬件架构和平台资源的不同、以及运行形态的不同,提供统一化的系统服务开发框架。根据 RISC-V、Cortex-M、Cortex-A 不同硬件平台,分为两种硬件平台,以下简称 M 核、A 核。

●M 核:处理器架构为 Cortex-M 或同等处理能力的硬件平台,系统内存一般低于 512KB,无文件系统或者仅提供一个可有限使用的轻量级文件系统,遵循 CMSIS 接口规范。
●A 核:处理器架构为 Cortex-A 或同等处理能力的硬件平台,内存资源大于 512KB,文件系统完善,可存储大量数据,遵循 POSIX 接口规范。
系统服务框架基于面向服务的架构,提供了服务开发、服务的子功能开发、对外接口的开发、以及多服务共进程、进程间服务调用等开发能力。其中:

●M 核:包含服务开发、服务的子功能开发、对外接口的开发以及多服务共进程的开发框架。
●A 核:在 M 核能力基础之上,包含了进程间服务调用、进程间服务调用权限控制、进程间服务接口的开发等能力。

面向服务的架构:

在这里插入图片描述

●Provider:服务的提供者,为系统提供能力(对外接口)。
●Consumer:服务的消费者,调用服务提供的功能(对外接口)。
●Samgr:作为中介者,管理 Provider 提供的能力,同时帮助 Consumer 发现 Provider 的能力。
系统服务开发框架主体对象:
在这里插入图片描述

●SamgrLite:主要提供服务的注册与发现能力。
●Service:开发服务时,需要实现的服务的生命周期接口。
●Feature:开发功能时,需要实现的功能的生命周期接口。
●IUnknown:基于 IUnknown 开发服务或功能的对外接口。
●IClientProxy:IPC 调用时,消费者的消息发送代理。
●IServerProxy:IPC 调用时,开发者需要实现提供者的消息处理接口。

接口简介:

在这里插入图片描述

约束

●系统服务开发框架统一使用 C 开发。
●同进程内服务间调用统一使用 IUnknown 接口对外,消息接口统一由 IUnknown 接口传递给本服务。
●服务名和功能名必需使用常量字符串且长度小于 16 个字节。
●M 核:系统依赖上 bootstrap 服务,在系统启动函数中调用 OHOS_SystemInit()函数,此函数在 foundation\distributedschedule\safwk_lite\src\main.c 中,将跳转至 ●foundation\distributedschedule\samgr_lite\samgr\source\samgr_lite.c 中的 SAMGR_Bootstrap()函数。
●A 核:系统依赖 samgr 库,在 main 函数中调用 SAMGR_Bootstrap()函数。

重要概念的介绍

系统服务管理的业务逻辑的实现围绕着三大概念展开,分别是服务(Service)、功能(Feature)和功能接口 API(Iunknown)。下面将对这些概念进行讲解。

服务(Service),功能(Feature),对外接口(IUnknown)及实例接口(impl)

服务(Service)是业务逻辑的核心,是一组功能或操作的集合。下面的结构体定义了服务的相关函数指针,可以在 foundation\distributedschedule\samgr_lite\interfaces\kits\samgr\service.h 中看到。

struct Service {
  const char *(*GetName)(Service *service);                     //获取服务名称
  BOOL (*Initialize)(Service *service, Identity identity);      //初始化服务
  BOOL (*MessageHandle)(Service *service, Request *request);    //处理服务的消息
  TaskConfig (*GetTaskConfig)(Service *service);                //获取服务的任务配置
};


一个服务可以拥有多个功能(Feature),功能是业务的执行单元。由各式各样的功能组合成一个完整的服务。下面的结构体定义了功能接口的相关函数指针。可以在 foundation\distributedschedule\samgr_lite\interfaces\kits\samgr\feature.h 中看到。

str

### 鸿蒙南向开发的定义 鸿蒙南向开发指的是在 **OpenHarmony** 系统中,面向硬件底层、操作系统内核及驱动层的开发工作。其主要目标是实现对不同硬件平台的支持,包括芯片适配、设备驱动开发、系统启动流程优化等[^4]。这种类型的开发通常涉及与硬件直接交互的部分,如外设接口(GPIO、I2C、SPI)、内核调度机制、内存管理、以及系统的可维护性设计等。 ### 技术栈 鸿蒙南向开发的技术栈涵盖了多个关键模块和子系统: - **内核子系统 (kernel)**:负责任务调度、进程管理、内存管理等核心功能[^4]。 - **启动恢复子系统 (startup)**:处理从内核启动到应用启动之间的初始化过程,确保系统稳定启动[^4]。 - **IoT外设子系统 (iothardware)**:提供对硬件外设的通用接口支持,例如 GPIO、I2C、SPI、UART 等通信协议[^4]。 - **可维可测子系统 (hiviewdfx)**:为开发者提供日志记录、性能分析、调试追踪等功能,提升系统稳定性与可维护性。 - **分布式调度子系统 (distributed_schedule)**:虽然更偏向于北向开发,但其底层实现也涉及南向部分,用于跨设备部件管理与资源调度。 - **安全子系统 (security)**:涉及底层加密算法、权限控制、设备认证等安全机制的实现。 - **公共基础库子系统 (utils)**:提供底层 C/C++ API 增强库,供其他子系统调用,提高代码复用性与效率[^4]。 - **升级子系统 (update)**:实现 OTA 升级机制,确保设备可以远程更新固件或系统版本。 此外,鸿蒙南向开发还需要掌握以下技能: - **嵌入式开发经验**:熟悉 ARM 架构、RTOS 或 Linux 内核裁剪与移植。 - **驱动开发能力**:能够编写和调试设备驱动程序,如传感器、显示屏、音频编解码器等。 - **编译工具链知识**:了解交叉编译环境配置、Makefile 编写、构建系统(如 GN/Ninja)等。 - **调试工具使用**:熟练使用 JTAG、GDB、Tracealyzer 等调试工具进行问题定位与优化。 ### 应用场景 鸿蒙南向开发主要应用于以下领域: - **IoT 设备开发**:如智能家居设备(智能灯泡、温湿度传感器)、穿戴设备(手环、手表)、工业自动化设备等,需将 OpenHarmony 移植至特定硬件平台并实现外设控制[^3]。 - **边缘计算节点**:适用于需要本地化数据处理与决策的边缘设备,如智能摄像头、工业网关等,南向开发为其提供低延迟、高可靠性的底层支持。 - **车载系统**:在汽车电子中,如车机系统、仪表盘、车载娱乐设备等,南向开发用于适配汽车专用芯片和接口(CAN、LIN 等)。 - **机器人控制系统**:涉及电机控制、传感器融合、实时响应等,南向开发为其提供稳定的硬件抽象层和驱动支持。 - **医疗设备**:如便携式心电图仪、血糖仪等,要求高精度的数据采集与实时处理,南向开发保障了这些功能的可靠性与安全性。 ```c // 示例:GPIO 控制 LED 灯的伪代码 #include "gpio.h" void led_init(void) { gpio_set_direction(LED_PIN, GPIO_DIR_OUTPUT); } void led_on(void) { gpio_set_value(LED_PIN, GPIO_LEVEL_HIGH); } void led_off(void) { gpio_set_value(LED_PIN, GPIO_LEVEL_LOW); } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值