往期知识点记录:

配置其他子系统

除上述子系统之外,还有一些必要但是无需进行移植的子系统。如:分布式任务调度子系统、DFX 子系统。

这些子系统添加方式比较简单,在“vendor/MyVendorCompany/MyProduct/config.json”文件中进行如下配置即可:

{
  "subsystem": "distributed_schedule",
  "components": [
    { "component": "system_ability_manager", "features":[] }  # 此处部件名不同版本可能有变化,请根据实际代码填写
  ]
},
{
  "subsystem": "hiviewdfx",
  "components": [
    { "component": "hilog_lite", "features":[] },
    { "component": "hievent_lite", "features":[] }
  ]
},
{
  "subsystem": "distributed_schedule",
  "components": [
    { "component": "system_ability_manager", "features":[] }  # 此处部件名不同版本可能有变化,请根据实际代码填写
  ]
},
{
  "subsystem": "hiviewdfx",
  "components": [
    { "component": "hilog_lite", "features":[] },
    { "component": "hievent_lite", "features":[] }
  ]
},

移植安全子系统

安全子系统提供网络设备连接、认证鉴权等功能,依赖 mbedtls 实现硬件随机数以及联网功能。
由于每个厂商芯片硬件与实现硬件随机数的方式不同,需要适配硬件随机数接口。

移植指导

OpenHarmony 提供了 mbedtls 的开源三方库,路径为“//third_party/mbedtls”。此库中提供了“mbedtls_platform_entropy_poll”、“mbedtls_hardclock_poll”、“mbedtls_havege_poll”、“mbedtls_hardware_poll”等几种产生随机数的方式。厂商需要根据芯片适配“mbedtls_hardware_poll”方式。

移植实例

  1. “config.json”添加文件系统。
    路径:“vendor/MyVendorCompany/MyProduct/config.json”
    修改如下:
{
  "subsystem": "security",
  "components": [
    { "component": "hichainsdk", "features":[] },
    { "component": "huks", "features":[]}
  ]
},
  1. 配置宏,打开硬件随机数接口相关代码。
    根据 mbedtls 的编译文件可以看出,配置宏的位置在"MBEDTLS_CONFIG_FILE=<…/port/config/config_liteos_m.h>"文件中。
    路径:“third_party/mbedtls/BUILD.gn”
if (ohos_kernel_type == "liteos_m") {
  defines += [
    "__unix__",
    "MBEDTLS_CONFIG_FILE=<../port/config/config_liteos_m.h>",
  ]
}

根据代码我们可以看出需要配置“MBEDTLS_NO_PLATFORM_ENTROPY”、“MBEDTLS_ENTROPY_HARDWARE_ALT”两个宏,才能编译硬件随机数的相关代码。
路径:“third_party/mbedtls/library/entropy.c”

#if !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
#if !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
    mbedtls_entropy_add_source( ctx, mbedtls_platform_entropy_poll, NULL,
                                MBEDTLS_ENTROPY_MIN_PLATFORM,
                                MBEDTLS_ENTROPY_SOURCE_STRONG );
#endif
......
#if defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
    mbedtls_entropy_add_source( ctx, mbedtls_hardware_poll, NULL,
                                MBEDTLS_ENTROPY_MIN_HARDWARE,
                                MBEDTLS_ENTROPY_SOURCE_STRONG );
#endif
......
#endif /* MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES */
}
  1. 适配硬件随机数接口
    接口定义如下:
    路径:“third_party/mbedtls/include/mbedtls/entropy_poll.h”
int mbedtls_hardware_poll( void *data,unsigned char *output, size_t len, size_t *olen );

表 1 安全子系统配置项

配置项意义
disable_huks_binary是否编译 HUKS 源码。
(1) 默认值: false,不编译 HUKS 源码。
(2) 其他值: true,编译 HUKS 源码。
disable_authenticate是否需要裁剪 hichain 认证功能。
(1) 默认值: true,不裁剪。
(2) 其他值: false,裁剪 hichain 认证功能。
huks_use_lite_storage是否采用轻量化存储方案。无文件系统、仅有 flash 存储的设备,可采用轻量化存储方案。
(1) 默认值: true,使用轻量化存储。
(2) 其他值: false,不使用轻量化存储。
huks_use_hardware_root_key是否使用硬件根密钥。设备存在硬件根密钥能力时,需要根据自身能力适配硬件根密钥方案;HUKS 提供的 RKC 方案仅为模拟实现。
(1) 默认值:false,默认值,默认无硬件根密钥。
(2) 其他值:true,设备具有硬件根密钥相关能力时,应自行适配。
huks_config_file是否使用 HUKS 默认配置文件。
(1) 默认值:“”:使用 HUKS 默认配置文件 hks_config.h。
(2) 其他文件:产品可在 HUKS 支持能力集合中自行选择所要支持的特性。

说明:
在添加安全子系统时,可直接通过配置 feature 来选择安全子系统特性。

{
  "subsystem": "security",
  "components": [
    { "component": "hichainsdk", "features":[] },
    { "component": "huks", "features":
      [
        "disable_huks_binary = false",
        "disable_authenticate = false"
      ]
    }
  ]
},

最后

经常有很多小伙伴抱怨说:不知道学习鸿蒙开发哪些技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?

为了能够帮助到大家能够有规划的学习,这里特别整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线,包含了鸿蒙开发必掌握的核心知识要点,内容有(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、WebGL、元服务、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、系统定制移植等等)鸿蒙(HarmonyOS NEXT)技术知识点。

在这里插入图片描述

《鸿蒙 (Harmony OS)开发学习手册》(共计892页):https://gitcode.com/HarmonyOS_MN/733GH/overview

如何快速入门?

1.基本概念
2.构建第一个ArkTS应用
3.……

鸿蒙开发面试真题(含参考答案):

在这里插入图片描述

《OpenHarmony源码解析》:

  • 搭建开发环境
  • Windows 开发环境的搭建
  • Ubuntu 开发环境搭建
  • Linux 与 Windows 之间的文件共享
  • ……
  • 系统架构分析
  • 构建子系统
  • 启动流程
  • 子系统
  • 分布式任务调度子系统
  • 分布式通信子系统
  • 驱动子系统
  • ……

图片

OpenHarmony 设备开发学习手册:https://gitcode.com/HarmonyOS_MN/733GH/overview

图片
在这里插入图片描述

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐