返回发烧友论坛
帖子
发 帖
提问题
发文章
发资料
发讨论
发活动
草稿箱
注册/登录
[文章]树莓派3B快速上手 OpenHarmony
李永每
2021-08-03 13:49:52
0
OpenHarmony
树莓派
扫一扫,分享给好友
复制链接分享
1
8
预编译固件
镜像
下载地址
完整镜像
oh-rpi3b-full.img.xz
BOOT
oh-rpi3b-boot.tar.xz
SYSTEM
oh-rpi3b-system.img.xz
VENDOR
oh-rpi3b-vendor.img.xz
烧录方式
下载完整镜像,准备一张至少1GB的SD卡
将SD卡通过读卡器连接电脑。
Windows
使用解压工具解压oh-rpi3b-full.img.xz,得到oh-rpi3b-full.img。
使用
Win32DiskImager
进行烧录
Ubuntu
xzcat oh-rpi3b-full.img.xz | sudo dd of=/dev/your_sdcard bs=4M
复制代码
分区方案
编译方法
搭建编译环境
安装Ubuntu 18.04环境
# 安装必要的包
sudo apt update
sudo apt install -y binutils git git-lfs gnupg flex bison gperf build-essential
zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386
lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache
libgl1-mesa-dev libxml2-utils xsltproc unzip m4 wget bc python python3
android-tools-fsutils libssl-dev
# 安装repo
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 | sudo tee /usr/local/bin/repo >/dev/null
sudo chmod a+x /usr/local/bin/repo
# 将/bin/sh设置为/bin/bash
sudo ln -sf bash /bin/sh
# 设置git信息
git config --global user.name your_name
git config --global user.email your_email
复制代码
编译OpenHarmony文件系统
拉取源码
mkdir ~/ohos/openharmony -p
cd ~/ohos/openharmony
repo init -u https://gitee.com/xfan1024/oh-rpi3b.git -b master -m oh-rpi3b.xml --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
./build/prebuilts_download.sh
复制代码
打补丁
cd ~/ohos/openharmony
patch -d foundation/graphic/standard -p1 < .repo/manifests/patch/graphic_standard.patch
复制代码
编译文件系统
# 编译Hi3516DV300的固件,rpi3b需要它的system.img/vendor.img
cd ~/ohos/openharmony
./build.sh --product-name Hi3516DV300 --ccache
复制代码
修改system.img/vendor.img
cd ~/ohos
mkdir rpi3b
cp openharmony/out/ohos-arm-release/packages/phone/images/system.img rpi3b/system.simg
cp openharmony/out/ohos-arm-release/packages/phone/images/vendor.img rpi3b/vendor.simg
cd rpi3b
simg2img system.simg system.img
simg2img vendor.simg vendor.img
resize2fs system.img 512M
resize2fs vendor.img 64M
cd ..
mkdir -p mnt/system
sudo mount rpi3b/system.img mnt/system
sudo vim mnt/system/init.rc
# 在on early-init一节的末尾,on init一行之前加入以下内容
# exec -- /system/bin/mount /dev/block/mmcblk0p4 /data/
sudo umount mnt/system
复制代码
编译内核代码
拉取代码
cd ~/ohos
# git clone https://github.com/android-rpi/kernel_rpi
wget https://github.com/android-rpi/kernel_rpi/archive/refs/heads/arpi-4.19.y.tar.gz -O kernel_rpi.tar.gz
mkdir kernel_rpi
tar -xvf kernel_rpi.tar.gz --strip-components=1 -C kernel_rpi
复制代码
下载工具链
cd ~/ohos
wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
复制代码
编译内核
cd ~/ohos
export PATH="$PATH:$(pwd)/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin"
cd kernel_rpi
ARCH=arm scripts/kconfig/merge_config.sh arch/arm/configs/bcm2709_defconfig kernel/configs/android-base.config kernel/configs/android-recommended.config
# 使用menuconfig去使能 CONFIG_VT(Virtual terminal)
# Location:
# -> Device Drivers
# -> Character devices
# -> Enable TTY
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make menuconfig
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make zImage dtbs -j$(nproc)
复制代码
制作SD卡
SD卡分区
# 插入SD卡,假设SD卡在电脑上的路径为 /dev/sdb
# 注意,SD卡设备文件路径非常重要,若填写错误可能会对你的计算机数据带来灾难性损坏
sddev=/dev/sdb
sddev_boot=${sddev}1
sddev_system=${sddev}2
sddev_vendor=${sddev}3
sddev_data=${sddev}4
sudo dd if=/dev/zero of=$sddev bs=512K count=1
sudo fdisk $sddev
# 分别输入以下信息
n # 创建分区
p # 主分区
1 # 选择分区1
# 保持默认直接回车
+64M # 分区1大小
n # 创建分区
p # 主分区
2 # 选择分区2
# 保持默认直接回车
+512M # 分区2大小
n # 创建分区
p # 主分区
3 # 选择分区3
# 保持默认直接回车
+64M # 分区3大小
n # 创建分区
p # 主分区
# 保持默认直接回车
+300M # 分区4大小
a # 设置boot flag
1 # 选择分区1
t # 设置分区类型
1 # 选择分区1
c # 设置为FAT32
w # 保存设置并退出
sudo partprobe $sddev
sudo mkfs.vfat -n BOOT $sddev_boot
sudo mkfs.ext4 -L data $sddev_data
复制代码
写入数据
cd ~/ohos
# 制作BOOT分区
wget https://mirror.iscas.ac.cn/OpenHarmony/os/2.0/images/rpi-3b/oh-rpi3b-boot.tar.xz
mkdir -p mnt/boot
sudo mount $sddev_boot mnt/boot
sudo tar --no-same-owner -xvf oh-rpi3b-boot.tar.xz --strip-components=1 -C mnt/boot
sudo cp kernel_rpi/arch/arm/boot/zImage mnt/boot/
sudo cp kernel_rpi/arch/arm/boot/dts/bcm2710-rpi-3-b.dtb mnt/boot/
sudo cp kernel_rpi/arch/arm/boot/dts/overlays/vc4-kms-v3d.dtbo mnt/boot/overlays/
sudo umount mnt/boot/
# 写入SYSTEM分区
sudo dd if=rpi3b/system.img of=$sddev_system bs=4M
# 写入VENDOR分区
sudo dd if=rpi3b/vendor.img of=$sddev_vendor bs=4M
复制代码
举报
回帖
高级模式
发布
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
侵权投诉
链接复制成功,分享给好友