往期鸿蒙全套实战精彩文章必看内容:
移植准备
移植须知
本文详细介绍如何将OpenHarmony小型系统的linux和LiteOS-A内核移植到新的开发板上,要求读者具有一定的嵌入式系统开发经验。
当前小型系统已适配的开发板如下表所示:
表1 OpenHarmony小型系统已适配的开发板
| 开发板 | 内核 | arch | ROM | RAM | 文件系统 | Flash 类型 |
|---|---|---|---|---|---|---|
| hispark_taurus | LiteOS-A和linux-4.19 | ARM cortex-a7 | 8G | 1GB | VFAT、EXT4 | eMMC4.5 |
| hispark_aries | LiteOS-A | ARM cortex-a7 | 16M | 512M | JFFS2 | SPI NOR |
表1中的开发板可作为待移植开发板的参考,当前LiteOS-A和linux-4.19支持的arch、ROM占用、支持的文件系统和支持的Flash类型如下表所示:
表2 OpenHarmony小型系统内核移植信息表
| 内核 | 支持的arch | ROM | 文件系统 | Flash类型 |
|---|---|---|---|---|
| LiteOS-A | ARMv7 | > 2M | VFAT、JFFS2、YAFFS2 | SPI NOR、NAND、EMMC |
| linux-4.19 | ARM, ARM64、 MIPS、 X86等 | > 5M | VFAT、JFFS2、YAFFS、EXT/2/3/4、NFS等等 | NOR、NAND、EMMC等 |
编译构建
编译环境搭建
首先请搭建OpenHarmony基础环境。用户态和LiteOS-A的内核态编译均使用llvm编译器编译,安装方法在搭建基础环境中已提供。若选择移植linux内核,请执行如下命令安装gcc-arm-linux-gnueabi交叉编译工具链,用于编译linux内核态镜像:
sudo apt-get install gcc-arm-linux-gnueabi
编译构建系统介绍
编译构建流程、编译脚本编写、目录规则、独立编译单个组件、独立编译芯片解决方案等介绍。
新建芯片解决方案
了解编译框架和搭建完编译环境后,请参考如下步骤新建芯片解决方案:
-
新建目录
芯片解决方案的目录规则为:
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中的
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 re

最低0.47元/天 解锁文章
1002

被折叠的 条评论
为什么被折叠?



