组织介绍

RV代码上鸿蒙主干项目

项目介绍

​ 该项目旨在基于OpenHarmony的master分支以及OpenHarmony-3.2-Release分支代码适配收款支持riscv架构的芯片,从而实现芯片+系统全国产化的强强联合。

​ 对于master分支由于架构适配同步涉及的仓比较多,因此开发过程中需要选择一个基线同步配置,过程中会不断的将基线升级操作。同时过程开发中的能力会分布合入OpenHarmony的master,具体的代码流程如下图1所示,中的weekly_xxx表示过程中会同步适配最新的代码,可能一次,也可能是多次。

​ 在OpenHarmony-3.2-Release分支,润和软件基于平头哥的th1520 soc已经完成dayu800产品的适配工作并且已经过了OpenHarmony的XTS认证,实现商业化销售。中科院软件所基于该分支也同步适配了riscv64架构的qemu工作,同时能够借助host主机的audio和usb camera能力实现了OpenHarmony Guest上能进行播放音乐和拍照功能。当前润和软件和中科院软件所本着鸿蒙开源的精神,正在积极的推动OpenHarmony-3.2-Release分支代码上OpenHarmony。由于OpenHarmony不同仓合入进度问题,为方便验证,现同步将上库代码到riscv-sig组织中,方便进行验证。

image-20230914160740190

图1 代码开发流程

image-20230915134700708

图2 模块开发流程

image-20230915135128205

图3 预计开发周期

版本说明

​ 1、当前基于OpenHarmony的weekly_20230905基线开发适配,当前已经能够全量编译通过,当前能够启动kernel,使能hdc。

​ 2、基于12月18日拉取的主线master分支能够进行编译

​ 3、OpenHarmony-3.2-Release分支同步于OpenHarmony的2024年2月2日的版本,当前能够启动到launcher,Camera能力是OK的

代码下载

dayu800代码OpenHarmony-3.2-Release分支下载和编译

使用自动化脚本下载:

image-20230914160740190说明:关于自动化脚本的使用,请参考OpenHarmony代码下载脚本介绍

git clone https://gitee.com/personal-summary/code_download.git
./code_download.sh
# 选择4.3
cd ${code_path}
./build/prebuilts_download.sh
./build.sh --product-name dayu800 --ccache

master分支下载和编译

使用自动化脚本下载:

image-20230914160740190说明:关于自动化脚本的使用,请参考OpenHarmony代码下载脚本介绍

git clone https://gitee.com/personal-summary/code_download.git
./code_download.sh
# 选择4.1
cd ${code_path}
./build/prebuilts_download.sh
./build.sh --product-name qemu-arm-linux-min --ccache

weekly_0905初始版本下载和编译

repo init -u https://gitee.com/riscv-sig/manifest.git -b weekly -m riscv64_weekly0905_init.xml --no-repo-verify
repo sync -c
repo forall -c "git lfs pull"
./build/prebuilts_download.sh
./build.sh --product-name rk3568 --ccache

dayu800代码weekly_0905分支下载

方法一:

使用命令下载:

repo init -u https://gitee.com/riscv-sig/manifest.git -b weekly -m default_weekly_0905.xml --no-repo-verify
repo sync -c
repo forall -c "git lfs pull"
repo start weekly_20230905 --all
./build/prebuilts_download.sh
rm -rf ./prebuilts/rustc
git clone -b weekly_20230905 https://gitee.com/riscv-sig/rustc.git prebuilts/rustc

方法二:

使用自动化脚本下载:

image-20230914160740190说明:关于自动化脚本的使用,请参考OpenHarmony代码下载脚本介绍

git clone https://gitee.com/personal-summary/code_download.git
./code_download.sh
# 选择4.2

image-20230914160740190注意:使用脚本下载代码后一定不能执行./build/prebuilts_download.sh,如果不小心执行了该操作需要执行以下步骤

rm prebuilts -rf
repo sync -c
repo forall -c "git lfs pull"
repo start weekly_20230905 --all
./build/prebuilts_download.sh
rm -rf ./prebuilts/rustc
git clone -b weekly_20230905 https://gitee.com/riscv-sig/rustc.git prebuilts/rustc

代码编译

全量编译命令

./build.sh --product-name dayu800 --ccache

不带ohos-sdk的编译命令

./build.sh --product-name dayu800 --no-prebuilt-sdk --ccache

单模块编译

./build.sh --product-name dayu800 --ccache --build-target module

常用模块编译汇集

# musl库编译
./build.sh --product-name dayu800 --ccache --build-target musl_all

# 内核编译
./build.sh --product-name dayu800 --ccache --build-target kernel

代码合入要求

OpenHarmony-3.2-Release分支状态及验证介绍

当前版本可在dayu800上验证,验证结果log如下

工作进度

dayu800在OpenHarmony-3.2-Release分支上库进度更新

  • 完成36个仓的关于riscv64架构的适配
  • sig组织中已经提交关于dayu800的相关代码适配
  • 当前代码支持开机launcher、Camera、hdc等能力,audio和touch能力代码在提交中
  • dayu800支持一键自动烧录镜像
  • riscv-sig组织中的OpenHarmony-3.2-Release分支代码是同步OpenHarmony + OpenHarmony-SIG组织的内容,同步于2024年2月2日

QEMU在master分支上库进度更新

weekly_0905分支当前能够启动hdc功能

典型问题讨论

riscv64架构使用官方的llvm编译会产生lto.tmp: cannot link object files with different floating-point ABI错误的分析及处理

下一阶段配置任务

  • OpenHarmony-3.2-Release分支完成dayu800产品的tpc毕业

遗留问题

  • prebuilts/rustc临时使用的仅支持riscv64架构的,如果要编译arm架构请执行如下如下命令

    rm -rf ./prebuilts/rustc
    ./build/prebuilts_download.

典型问题处理

整体编译报错:lto.tmp: cannot link object files with different floating-point ABI的问题处理

问题原因为工具链检查eflags时候出错,更新工具链即可解决

成就
7
Star
57.5K
Fork
成员(22)
333353 yinjiayi 1578920347
YIN JIAYI
yingmu24
Zoxiang
闻飞
MaYP1998
5433134 isrc iscas 1578986617
智能软件研究中心
jiale
5628982 fooddelivery 1725507205
fuqiang
taiyang
jimmylang74
weimingchong
8326144 brsvh 1688184003
Burgess Chang
zhuwei449
liuxiangkun
9887163 miaoatotoo 1634626968
miaoatotoo
Nomadic-han
温藤野
刘飒
yangyong
laiheng

搜索帮助