OpenHarmony(鸿蒙南向开发)——移植子系统(一)

概述

OpenHarmony系统功能按照“系统 > 子系统 > 部件”逐级展开,支持根据实际需求裁剪某些非必要的部件,本文以部分子系统、部件为例进行介绍。若想使用OpenHarmony系统的能力,需要对相应子系统进行适配。

OpenHarmony芯片适配常见子系统列表如下(详见表1),需结合具体芯片再做增删减操作。

表1 OpenHarmony子系统

子系统 作用
applications 应用程序demo。可将应用相关源码存放在此目录下。
kernel 内核子系统。负责任务调度、内存管理等常见的内核功能。
hiviewdfx 可维可测子系统。提供日志相关功能。
communication 通信子系统。包含Wi-Fi,蓝牙功能。
iothardware IOT外设子系统。提供常见的外设接口,例如GPIO,I2C,SPI等。
startup 启动子系统。内核启动后运行的第一个子系统,负责在内核启动之后到应用启动之前的系统关键进程和服务的启动过程的功能。
update 升级子系统。用来支持OpenHarmony设备的OTA升级。
utils 公共基础库子系统。提供了一些常用的C、C++开发增强API。
distributed_schedule 分布式调度子系统。负责跨设备部件管理,提供访问和控制远程组件的能力,支持分布式场景下的应用协同。
security 安全子系统。包括系统安全、数据安全、应用安全等功能,为OpenHarmony提供有效保护应用和用户数据的能力。当前开源的功能,包括应用完整性保护、应用权限管理、设备认证、密钥管理服务、数据传输管控。
test 测试子系统。OpenHarmony为开发者提供了一套全面的自测试框架,开发者可根据测试需求开发相关测试用例,开发阶段提前发现缺陷,大幅提高代码质量。

移植启动恢复子系统

启动恢复子系统负责在内核启动之后到应用启动之前的系统关键进程和服务的启动过程的功能。

移植指导

针对轻量系统主要提供了各服务和功能的启动入口标识。在SAMGR启动时,会调用bootstrap标识的入口函数,并启动系统服务。

适配完成后,调用OHOS_SystemInit()接口,即可启动系统。

路径:“base/startup/bootstrap_lite/services/source/system_init.c”

void OHOS_SystemInit(void)
{
    MODULE_INIT(bsp);           //执行.zinitcall.bspX.init段中的函数
    MODULE_INIT(device);        //执行.zinitcall.deviceX.init段中的函数
    MODULE_INIT(core);          //执行.zinitcall.coreX.init段中的函数
    SYS_INIT(service);          //执行.zinitcall.sys.serviceX.init段中的函数
    SYS_INIT(feature);          //执行.zinitcall.sys.featureX.init段中的函数
    MODULE_INIT(run);           //执行.zinitcall.runX.init段中的函数
    SAMGR_Bootstrap();          //SAMGR服务初始化
}

移植实例

  1. 在“config.json”中添加启动子系统。

路径:“vendor/MyVendorCompany/MyProduct/config.json”

修改如下:

    {
        "subsystem": "startup",
        "components": [
            { "component": "bootstrap_lite", "features":[] },
            { "component": "syspara_lite", "features":[] }
        ]
    },

在startup子系统中有部分部件(如:syspara_lite等),会依赖“$ohos_product_adapter_dir/utils”中的模块。其中“ohos_product_adapter_dir”就是在config.json文件中配置的“product_adapter_dir”,我们通常配置其为“vendor/MyVendorCompany/MyProduct/hals”。

  1. 添加zinit
### 鸿蒙开发中的南北互联技术方案 #### 背景概述 鸿蒙操作系统(HarmonyOS)的设计目标之是实现跨设备的无缝连接和协同工作。这种设计理念贯穿于其架构和技术特性之中,尤其是在“南北互联”的场景下,涉及硬件与软件之间的交互以及不同终端设备间的协作[^3]。 #### 关键技术点 以下是鸿蒙开发中与南北互联相关的技术和解决方案: 1. **分布式软总线** 分布式软总线是鸿蒙系统的核心技术之,用于支持多设备间高效、低延迟的数据传输。通过该技术,可以实现设备发现、组网、数据同步等功能,从而满足南向(硬件层)到北向(应用层)的互联互通需求[^1]。 2. **ArkTS 和 ArkUI 开发组件** 使用 ArkTS 编程语言和 ArkUI 组件框架构建的应用程序具有天然的跨平台能力。开发者可以通过简单的配置调整同份代码运行在不同的终端设备上,这为南北互联提供了统的编程接口和支持[^1]。 3. **Stage 模型** Stage 模型重新定义了 HarmonyOS 的应用生命周期管理方式,使得应用程序更易于扩展至多种形态的设备。此模型特别适合处理复杂的跨设备业务逻辑,增强了南北方之间通信的能力。 4. **多端部署工具链** 提供了整套完整的多端适配机制和服务模板,帮助开发者快速完成从单设备到多个异构设备上的迁移过程。利用这些工具链,可以简化因物理位置差异带来的网络环境变化等问题所带来的挑战[^1]。 5. **元服务能力** 元服务作为轻量级微服务单元,在促进各子系统的独立性和灵活性方面发挥了重要作用。它们能够被动态加载并按需调用,非常适合用来搭建跨越不同类型节点(如传感器节点与其他计算资源密集型节点)之间的桥梁[^1]。 6. **OpenHarmony 多媒体技术支持** OpenHarmony 提供丰富的多媒体处理功能,包括音视频编解码器优化算法等,这对于需要实时流媒体交换或者远程控制操作的应用场合尤为重要。 7. **NAPI 接口设计** NAPI 是 Native API 的缩写形式,主要用于描述如何让 JavaScript 层面可以直接访问底层 C/C++ 实现的功能模块。对于那些希望充分利用现有嵌入式系统优势同时又不想放弃高级脚本语言便利性的项目来说非常有用。 8. **系统定制化移植指导** 当面对特定行业领域内的专用设备时,则可能还需要考虑额外的因素比如功耗限制条件下的性能表现评估标准之类的细节问题。此时就需要借助官方文档里提到过的关于系统裁剪方面的建议来进行相应的修改以适应实际应用场景的要求。 ```python # 示例:基于分布式软总线实现文件共享功能 import distributed_bus as db def share_file(file_path, target_device_id): connection = db.connect(target_device_id) if not connection: raise Exception("Failed to connect with the device.") result = db.send_file(connection, file_path) if result.status != 'success': print(f"Error occurred while sending {file_path}: {result.message}") else: print(f"{file_path} has been successfully sent.") if __name__ == "__main__": try: share_file("/path/to/file", "device_001") except Exception as e: print(e) ``` --- #### 总结 综上所述,鸿蒙开发中的南北互联不仅依赖强大的理论支撑体系,还依靠系列具体实用的技术手段来达成最终目的——即创造个开放兼容且高度灵活的操作生态系统。无论是个人消费者还是企业客户都能从中受益匪浅。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值