OpenHarmony实战:标准系统移植指南

本文描述了移植一块开发板的通用步骤,和具体芯片相关的详细移植过程无法在此一一列举。后续社区还会陆续发布开发板移植的实例供开发者参考。

定义开发板

本文以移植名为MyProduct的开发板为例讲解移植过程,假定MyProduct是MyProductVendor公司的开发板,使用MySoCVendor公司生产的MySOC芯片作为处理器。

定义产品

//vendor/MyProductVendor/{product_name}名称的目录下创建一个config.json文件,该文件用于描述产品所使用的SOC 以及所需的子系统。配置如下:

//vendor/MyProductVendor/MyProduct/config.json

{
    "product_name": "MyProduct",
    "version": "3.0",
    "type": "standard",
    "target_cpu": "arm",
    "ohos_version": "OpenHarmony 1.0",
    "device_company": "MyProductVendor",
    "board": "MySOC",
    "enable_ramdisk": true,
    "subsystems": [
      {
        "subsystem": "ace",
        "components": [
          { "component": "ace_engine_lite", "features":[] }
        ]
      },
	...
    ]
}

主要的配置内容

配置项 说明
product_name (必填)产品名称
version (必填)版本
type (必填)配置的系统级别,包含(small、standard等)
target_cpu (必填)设备的CPU类型(根据实际情况,这里的target_cpu也可能是arm64 、riscv、 x86等)
ohos_version (选填)操作系统版本
device_company (必填)device厂商名
board (必填)开发板名称
enable_ramdisk (必填)是否启动ramdisk
kernel_type (选填)内核类型
kernel_version (选填)kernel_type与kernel_version在standard是固定的不需要写
subsystems (必填)系统需要启用的子系统。子系统可以简单理解为一块独立构建的功能块。
product_company 不体现在配置中,而是目录名,vendor下一级目录就是product_company,BUILD.gn脚本依然可以访问。

已定义的子系统可以在“//build/subsystem_config.json”中找到。当然你也可以定制子系统。

这里建议先拷贝Hi3516DV300 开发板的配置文件,删除掉 hisilicon_products 这个子系统。这个子系统为Hi3516DV300 SOC编译内核,显然不适合MySOC。

移植验证

至此,你可以使用如下命令,启动你产品的构建了:

./build.sh --product-name MyProduct 

构建完成后,可以在//out/{device_name}/packages/phone/images目录下看到构建出来的OpenHarmony镜像文件。

内核移植

这一步需要移植Linux内核,让Linux内核可以成功运行起来。

为SOC添加内核构建的子系统

修改文件//build/subsystem_config.json增加一个子系统。配置如下:

  "MySOCVendor_products": {
    "project": "hmf/MySOCVendor_products",
    "path": "device/MySOCVendor/MySOC/build",
    "name": "MySOCVendor_products",
    "dir": "device/MySOCVendor"
  },

接着需要修改定义产品的配置文件//vendor/MyProductVendor/MyProduct/config.json,将刚刚定义的子系统加入到产品中。

编译内核

源码中提供了Linux 4.19的内核,归档在//kernel/linux-4.19。本节以该内核版本为例,讲解如何编译内核。

在子系统的定义中,描述了子系统构建的路径path,即//device/MySOCVendor/MySOC/build。这一节会在这个目录创建构建脚本,告诉构建系统如何构建内核。

建议的目录结构:

├── build
│ ├── kernel
│ │     ├── linux
│ │           ├──standard_patch_for_4_19.patch // 基于4.19版本内核的补丁
│ ├── BUILD.gn
│ ├── ohos.build

BUILD.gn是subsystem构建的唯一入口。

期望的构建结果

文件 文件说明
$root_build_dir/packages/phone/images/uImage 内核镜像
$root_build_dir/packages/phone/images/uboot bootloader镜像

移植验证

启动编译,验证预期的kernel镜像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值