【移植】小型系统编译构建&小型系统移植须知

编译环境搭建

首先请搭建 OpenHarmony 基础环境,相关操作请参考 快速入门环境搭建章节 。用户态和 LiteOS-A 的内核态编译均使用 llvm 编译器编译,安装方法在搭建基础环境中已提供。若选择移植 linux 内核,请执行如下命令安装 gcc-arm-linux-gnueabi 交叉编译工具链,用于编译 linux 内核态镜像:

sudo apt-get install gcc-arm-linux-gnueabi

编译构建系统介绍

编译构建流程、编译脚本编写、目录规则、独立编译单个组件、独立编译芯片解决方案等介绍请见 编译构建子系统介绍 。

新建芯片解决方案

了解编译框架和搭建完编译环境后,请参考如下步骤新建芯片解决方案:

  1. 新建目录
    芯片解决方案的目录规则为:device/{芯片解决方案厂商}/{开发板}。以海思的 hispark_taurus 开发板为例,在代码根目录执行如下命令建立目录:
    mkdir -p device/hisilicon/hispark_taurus

芯片解决方案目录树的规则如下:

    device                                    
    └── company                         # 芯片解决方案厂商
        └── board                       # 开发板名称
            ├── BUILD.gn                # 编译脚本
            ├── hals                    # OS南向接口适配
            ├── linux                   # 可选,linux内核版本
            │   └── config.gni          # linux版本编译配置
            └── liteos_a                # 可选,liteos内核版本
                └── config.gni          # liteos_a版本编译配置

以 hispark_taurus 移植 linux 内核为例,目录树应该如下:

    device                
    └── hisilicon           
        └── hispark_taurus        
            ├── BUILD.gn  
            ├── hals      
            ├── ......    
            └── linux  
                └── config.gni  

目录树建立后开发板相关的源码放到 hispark_taurus 目录下。

  1. 配置开发板编译选项
    步骤 1 中的 config.gni 可配置开发板相关的编译选项,编译构建框架将会遵照该配置文件中的参数编译所有用户态 OS 组件。其中关键的字段说明如下:
    kernel_type:            开发板使用的内核类型,例如:“liteos_a”, “liteos_m”, “linux”。
    kernel_version:         开发板使用的内核版本,例如:“4.19”。
    board_cpu:              开发板CPU类型,例如:“cortex-a7”, “riscv32”。
    board_arch:             开发板芯片arch, 例如: “armv7-a”, “rv32imac”。
    board_toolchain:        开发板自定义的编译工具链名称,例如:“gcc-arm-none-eabi”。若为空,则使用默认为ohos-clang。
    board_toolchain_prefix:编译工具链前缀,例如:“gcc-arm-none-eabi”。
    board_toolchain_type:  编译工具链类型,目前支持gcc和clang。例如:“gcc” ,“clang”。
    board_cflags:          开发板配置的c文件编译选项。
    board_cxx_flags:       开发板配置的cpp文件编译选项。
    board_ld_flags:        开发板配置的链接选项。

还以海思的 hispark_taurus 开发板为例,对应的 device/hisilicon/hispark_taurus/config.gni 内容如下:

    # Board CPU type, e.g. "cortex-a7", "riscv32".
    board_cpu = "cortex-a7"
    # Toolchain name used for system compiling.
    # E.g. gcc-arm-none-eabi, arm-linux-harmonyeabi-gcc, ohos-clang,  riscv32-unknown-elf.
    # Note: The default toolchain is "ohos-clang". It's not mandatory if you use the default toochain.
    board_toolchain = "mips-linux-gnu-gcc"
    # The toolchain path installed, it's not mandatory if you have added toolchain path to your ~/.bashrc.
    board_toolchain_path = 
        rebase_path("//prebuilts/gcc/linux-x86/arm/arm-linux-ohoseabi-gcc/bin",
                    root_build_dir)
    # Compiler prefix.
    board_toolchain_prefix = "arm-linux-ohoseabi-"
    # Compiler type, "gcc" or "clang".
    board_toolchain_type = "gcc"
    # Board related common compile flags.
    board_cflags = [
    ]
    board_cxx_flags = [
    ]
    board_ld_flags = []
    # Board related headfiles search path.
    board_include_dirs = []
    board_include_dirs += [ rebase_path(
            "//prebuilts/gcc/linux-x86/arm/arm-linux-ohoseabi-gcc/target/usr/include",
            root_build_dir) ]
    # Board adapter dir for OHOS components.
    board_adapter_dir = ""
    # Sysroot path.
    board_configed_sysroot = ""
    # Board storage type, it used for file system generation.
    storage_type = "emmc"
  1. 编写开发板编译脚本
    步骤 1 中的 BUILD.gn 为新增的开发板的编译入口,主要用于编译开发板相关的代码,主要为设备侧驱动、设备侧接口适配(媒体,图形等)和开发板的 SDK 等等。
    海思的 hispark_taurus 开发板的 device/hisilicon/hispark_taurus/BUILD.gn 可写成:
    # group名称建议与开发板名称一致
    group("hispark_taurus") {   
      deps = [ "//kernel/linux/patches:linux_kernel" ] # 拉起内核编译
      deps += [
      ...... # 开发板其他编译单元
      ]
    }
  1. 编译调试
    在开发板目录下执行 hb set 和 hb build 即可启动芯片解决方案的编译,编译框架会以开发板下的 BUILD.gn 为入口启动编译。

移植须知

本文详细介绍如何将 OpenHarmony 小型系统的 linux 和 LiteOS-A 内核移植到新的开发板上,要求读者具有一定的嵌入式系统开发经验。建议先查看 入门指导 ,以了解 OpenHarmony 软件架构、目录结构、内核子系统和驱动子系统相关知识。当前小型系统已适配的开发板如下表所示:
表 1 OpenHarmony 小型系统已适配的开发板

开发板内核archROMRAM文件系统Flash 类型
hispark_taurusLiteOS-A 和 linux-4.19ARM cortex-a78G1GBVFAT、EXT4eMMC4.5
hispark_ariesLiteOS-AARM cortex-a716M512MJFFS2SPI NOR

表 1 中的开发板可作为待移植开发板的参考,当前 LiteOS-A 和 linux-4.19 支持的 arch、ROM 占用、支持的文件系统和支持的 Flash 类型如下表所示:
表 2 OpenHarmony 小型系统内核移植信息表

内核支持的 archROM文件系统Flash 类型
LiteOS-AARMv7> 2MVFAT、JFFS2、YAFFS2SPI NOR、NAND、EMMC
linux-4.19ARM, ARM64、 MIPS、 X86 等> 5MVFAT、JFFS2、YAFFS、EXT/2/3/4、NFS 等等NOR、NAND、EMMC 等
  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值