想玩openharmony系统很久了,但是手上一直没有合适的板子用来学习,偶然刷b站的时候看到iCEasy商城有免费申请板子的机会,于是果断申请,板子到了后就迫不及待的开始了openharmony相关的移植和学习,现将相关移植步骤记录,本篇文章做为基础的板子适配篇,废话不多说,现在开始我们的适配过程,参考ohos官方 https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/porting-bes2600w-on-minisystem-display-demo.md 教程进行移植。
步骤一:添加vendor相关目录,这里我直接创建 vendor/xingyun/gd32vw553 层级目录,在此目录中我们需要添加一个config.json文件用来配置我们的编译项,初步添加内容如下
{
"product_name": "gd32vw553",
"ohos_version": "OpenHarmony 1.0",
"device_company": "xingyun",
"type":"mini",
"version": "3.0",
"board": "gd32vw553_iot",
"kernel_type": "liteos_m",
"kernel_version": "3.0.0",
"third_party_dir": ""
}
添加完成后,需要在device/board下创建xingyun/gd32vw553_iot目录,创建后我们可以使用hb set命令去测试我们添加是否成功,
这里我们可以使用电脑的上下案件选择,我们适配的是mini系统,关于系统的选择配置,这里附上ohos官网的截图
可以看到最小的ram需要128KIB,我们的gd32vw553有320KB,远远大于128KIB的要求,到mini后我们回车,然后可以上下滚动选择我们刚刚添加的产品,如下图,可以找到的话则说明添加成功。
这里选择到我们的开发板后直接回车,我这里的话直接报错了
提示我们没有配置内核,这里我们在device/board/xingyun/gd32vw553_iot/liteos_m中添加config.gni文件即可,关键内容如下。
kernel_type = "liteos_m"
# Kernel version.
kernel_version = ""
# Board CPU type, e.g. "cortex-a7", "riscv32".
board_cpu = ""
# Board arch, e.g. "armv7-a", "rv32imac".
board_arch = "rv32imac"
# 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 toolchain.
board_toolchain = "riscv32-unknown-elf"
# The toolchain path installed, it's not mandatory if you have added toolchain path to your ~/.bashrc.
board_toolchain_path = ""
# Compiler prefix.
board_toolchain_prefix = "riscv32-unknown-elf-"
这里我添加了还是报错,然后我对比了hisi目录下的轻量系统配置,发现配置文件差异导致的问题,修改成如下文件则没问题
{
"product_name": "gd32vw553",
"type": "mini",
"version": "3.0",
"ohos_version": "OpenHarmony 3.1",
"device_company": "xingyun",
"device_build_path": "device/board/xingyun/gd32vw553_iot",
"inherit":["productdefine/common/base/mini_system.json"],
"board": "gd32vw553_iot",
"kernel_type": "liteos_m",
"kernel_is_prebuilt": true,
"kernel_version": ""
}
修改之后,我们再次执行hb set选择
这之后我们就可以开始编译了,这就是本篇的重点,下一篇将开始进行内核的适配编译篇,ohos的官方文档还是不行,参考文档搞的编译还能报错,还是得看源码。

