龙芯2K500先锋派OpenHarmony构建指北

文章来源: https://bbs.loongarch.org/d/435-2k500openharmony

一、系统需求和环境配置 #

官方推荐系统是ubuntu 20.4,预留60G到80G的磁盘空间,交换分区推荐8G以上,主要环境是python3.9。 也可以使用Debian构建,留意python版本,python3.10及更新版本要改一行代码,才能正常运行hb构建工具。

需要安装的软件包:

sudo apt update
sudo apt upgrade
sudo apt install   apt-utils binutils bison flex bc build-essential make mtd-utils gcc-arm-linux-gnueabi u-boot-tools python3.9 python3-pip git zip unzip curl wget gcc g++ ruby dosfstools mtools default-jre default-jdk scons python3-distutils perl openssl libssl-dev cpio git-lfs m4 ccache zlib1g-dev tar rsync liblz4-tool genext2fs binutils-dev device-tree-compiler e2fsprogs git-core gnupg gnutls-bin gperf lib32ncurses5-dev libffi-dev zlib* libelf-dev libx11-dev libgl1-mesa-dev lib32z1-dev xsltproc x11proto-core-dev libc6-dev-i386 libxml2-dev lib32z-dev libdwarf-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools  pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5 libncurses5-dev libncursesw5 libstdc++6  gcc-arm-none-eabi vim ssh locales doxygen libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev npm libfl-dev

二、注册gitee账号和代码下载前的准备 #

源码下载推荐使用gitee的repo工具,从OpenHarmony gitee仓库下载代码,也可以使用OpenHarmony全量代码包。 参见资源链接1。使用repo工具需要gitee账号,并上传ssh公钥到账号的"ssh配置”里面,并且需要对git进行全局配置。大致过程如下:

1、使用电子邮箱注册gitee账号,如 abc@163.com 2、使用如下命令建立公钥 ssh-keygen -t ed25519 -C "Gitee SSH Key" 3、获取公钥内容并复制到gitee的ssh配置里面 cat ~/.ssh/id_ed25519.pub 4、获取gitee repo工具并赋予可执行权限 sudo curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo sudo chmod a+x /usr/local/bin/repo pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests 5、对git进行全局配置,配置账号和选项并进行测试 // 配置git,以abc@163.com为例,实际配置以注册账号为准 git config --global user.name "abc" git config --global user.email "abc@163.com" git config --global credential.helper store // 测试 ssh -T git@gitee.com

三、开放鸿蒙代码下载和环境配置 #

// 建立 OpenHarmony 目录
mkdir oh41
cd oh41

// 初始化
repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v4.1-Release --no-repo-verify
// 获取源码
repo sync -c -j4
// 获取大文件
repo forall -c 'git lfs pull'
// 获取预编译工具链
./build/prebuilts_download.sh
// 安装hb
pip3 install build/hb
// 环境测试,如下命令会输出hb的命令行帮助信息
hb help

四、应用龙芯2K500先锋派相关补丁和工具链 #

1、系统适配龙芯部分

// 这部分是2K500先锋派适配代码,处于开发状态,建议进行动态跟踪并变通使用
// dayu400是hihope适配2K500先锋派的内部代号,需要在vendor和device中都有相关的配置
// vendor/hihope/dayu400 对应 hb set 里面的产品列表,定义的内容主要是“架构”和“功能”的定义
// device/board/hihope/dayu400 目录下包括适配OpenHarmony的各种补丁、构建参数的相关定义
// device/board/soc/loongson 目录下是LoongArch架构相关代码和定义
cd vendor
rm -rf hihope  # 删除 OpenHarmony-v4.1-Release 基础代码中的 vendor/hihope 仓库
git clone https://gitee.com/openharmony-sig/vendor_hihope.git hihope
// 变通部分
cd hihope
git checkout 切换至 OpenHarmony-4.1-Release 分支

cd device/board
rm -rf hihope  # 删除 OpenHarmony-v4.1-Release 基础代码中的 device/board/hihope 仓库
git clone https://gitee.com/openharmony-sig/device_board_hihope hihope
// 变通部分
cd hihope
复制dayu210目录到临时目录
git checkout 切换至 OpenHarmony-4.1-Release 分支
粘贴dayu210目录到 hihope 目录下
cd device/soc
# OpenHarmony-v4.1-Release 基础代码中没有 loongson 仓库
git clone https://gitee.com/ohos4la-l1/device_soc_loongson loongson

2、内核部分 获取 5.10.97 版本的Linux内核代码(v4.1-Release的内核为 5.10.184版本,当前的内核补丁尚无法完美打入,暂先使用3.2-Release的5.10.97 版本的内核)

// 回到 openharmony 代码根目录
cd kernel/linux/
cp -r linux-5.10 linux-5.10.97
cd linux-5.10.97
git fetch origin OpenHarmony-3.2-Release:OpenHarmony-3.2-Release
git switch OpenHarmony-3.2-Release

3、导入补丁集

// 回到openharmony 代码根目录
// 变通部分
// 拷贝device/board/hihope/dayu400/patches 到 device/soc/loongson/ 目录
// 修改 device/board/hihope/dayu400/patch.sh
cd device/board/hihope/dayu400
./patch.sh

4、工具链安装和配置

// 回到openharmony 代码根目录
// 下载
git clone https://gitee.com/loongarch_community/loongarch64-linux-gnu.git toolchain
// 建立目录
mkdir -p prebuilts/gcc/linux-x86/loongarch/
// 解压
tar -C prebuilts/gcc/linux-x86/loongarch/ -xvf toolchain/toolchain-loongarch64-linux-gnu-gcc8-host-x86_64-2022-07-18.tar.xz
// 重命名,符合dayu400交叉编译工具链配置
mv prebuilts/gcc/linux-x86/loongarch/toolchain-loongarch64-linux-gnu-gcc8-host-x86_64-2022-07-18 prebuilts/gcc/linux-x86/loongarch/loongarch64-linux-gnu/
// 标准库的临时变通使用
cp prebuilts/gcc/linux-x86/loongarch/loongarch64-linux-gnu/sysroot/usr/lib64/libstdc++.so prebuilts/gcc/linux-x86/loongarch/loongarch64-linux-gnu/sysroot/usr/lib64/libc++.so

五、构建环境配置和编译 #

// 回到 openharmony 目录
hb set
选择 small -> hihope -> dayu400
// 如果没有报错信息,表示前述配置基本正确
hb build
// 所有构建都存放在 out 目录下
// 若遇到报错,可删除out目录,重新运行 set & build

六、相关资源链接 #

七、补充资源 #

构建内核所需的支持LoongArch架构的mkimage,是个u-boot工具程序

mkimage.zip