[文章]树莓派3B快速上手 OpenHarmony

阅读量0
1
8
预编译固件
镜像 下载地址
完整镜像oh-rpi3b-full.img.xz
BOOToh-rpi3b-boot.tar.xz
SYSTEMoh-rpi3b-system.img.xz
VENDORoh-rpi3b-vendor.img.xz
烧录方式
下载完整镜像,准备一张至少1GB的SD卡
将SD卡通过读卡器连接电脑。

Windows
  • 使用解压工具解压oh-rpi3b-full.img.xz,得到oh-rpi3b-full.img。
  • 使用Win32DiskImager进行烧录

Ubuntu
  1. xzcat oh-rpi3b-full.img.xz | sudo dd of=/dev/your_sdcard bs=4M
复制代码
分区方案
15.png


编译方法搭建编译环境
安装Ubuntu 18.04环境
  1. # 安装必要的包
  2. sudo apt update
  3. sudo apt install -y binutils git git-lfs gnupg flex bison gperf build-essential
  4.                     zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386
  5.                     lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache
  6.                     libgl1-mesa-dev libxml2-utils xsltproc unzip m4 wget bc python python3
  7.                     android-tools-fsutils libssl-dev

  8. # 安装repo
  9. curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 | sudo tee /usr/local/bin/repo >/dev/null
  10. sudo chmod a+x /usr/local/bin/repo

  11. # 将/bin/sh设置为/bin/bash
  12. sudo ln -sf bash /bin/sh

  13. # 设置git信息
  14. git config --global user.name your_name
  15. git config --global user.email your_email
复制代码

编译OpenHarmony文件系统
拉取源码
  1. mkdir ~/ohos/openharmony -p
  2. cd ~/ohos/openharmony
  3. repo init -u https://gitee.com/xfan1024/oh-rpi3b.git -b master -m oh-rpi3b.xml --no-repo-verify
  4. repo sync -c
  5. repo forall -c 'git lfs pull'
  6. ./build/prebuilts_download.sh
复制代码

打补丁
  1. cd ~/ohos/openharmony
  2. patch -d foundation/graphic/standard -p1 < .repo/manifests/patch/graphic_standard.patch
复制代码

编译文件系统
  1. # 编译Hi3516DV300的固件,rpi3b需要它的system.img/vendor.img
  2. cd ~/ohos/openharmony
  3. ./build.sh --product-name Hi3516DV300 --ccache
复制代码

修改system.img/vendor.img
  1. cd ~/ohos
  2. mkdir rpi3b
  3. cp openharmony/out/ohos-arm-release/packages/phone/images/system.img rpi3b/system.simg
  4. cp openharmony/out/ohos-arm-release/packages/phone/images/vendor.img rpi3b/vendor.simg
  5. cd rpi3b
  6. simg2img system.simg system.img
  7. simg2img vendor.simg vendor.img
  8. resize2fs system.img 512M
  9. resize2fs vendor.img 64M
  10. cd ..
  11. mkdir -p mnt/system
  12. sudo mount rpi3b/system.img mnt/system
  13. sudo vim mnt/system/init.rc
  14. # 在on early-init一节的末尾,on init一行之前加入以下内容
  15. # exec -- /system/bin/mount /dev/block/mmcblk0p4 /data/
  16. sudo umount mnt/system
复制代码

编译内核代码
拉取代码
  1. cd ~/ohos
  2. # git clone https://github.com/android-rpi/kernel_rpi
  3. wget https://github.com/android-rpi/kernel_rpi/archive/refs/heads/arpi-4.19.y.tar.gz -O kernel_rpi.tar.gz
  4. mkdir kernel_rpi
  5. tar -xvf kernel_rpi.tar.gz --strip-components=1 -C kernel_rpi
复制代码
下载工具链
  1. cd ~/ohos
  2. 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
  3. tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
复制代码

编译内核
  1. cd ~/ohos
  2. export PATH="$PATH:$(pwd)/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin"
  3. cd kernel_rpi
  4. ARCH=arm scripts/kconfig/merge_config.sh arch/arm/configs/bcm2709_defconfig kernel/configs/android-base.config kernel/configs/android-recommended.config

  5. # 使用menuconfig去使能 CONFIG_VT(Virtual terminal)
  6. # Location:
  7. #   -> Device Drivers
  8. #     -> Character devices
  9. #       -> Enable TTY
  10. ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make menuconfig
  11. ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make zImage dtbs -j$(nproc)
复制代码

制作SD卡
SD卡分区
  1. # 插入SD卡,假设SD卡在电脑上的路径为 /dev/sdb
  2. # 注意,SD卡设备文件路径非常重要,若填写错误可能会对你的计算机数据带来灾难性损坏
  3. sddev=/dev/sdb
  4. sddev_boot=${sddev}1
  5. sddev_system=${sddev}2
  6. sddev_vendor=${sddev}3
  7. sddev_data=${sddev}4

  8. sudo dd if=/dev/zero of=$sddev bs=512K count=1
  9. sudo fdisk $sddev
  10. # 分别输入以下信息
  11. n # 创建分区
  12. p # 主分区
  13. 1 # 选择分区1
  14. # 保持默认直接回车
  15. +64M # 分区1大小
  16. n # 创建分区
  17. p # 主分区
  18. 2 # 选择分区2
  19. # 保持默认直接回车
  20. +512M # 分区2大小
  21. n # 创建分区
  22. p # 主分区
  23. 3 # 选择分区3
  24. # 保持默认直接回车
  25. +64M # 分区3大小
  26. n # 创建分区
  27. p # 主分区
  28. # 保持默认直接回车
  29. +300M # 分区4大小
  30. a # 设置boot flag
  31. 1 # 选择分区1
  32. t # 设置分区类型
  33. 1 # 选择分区1
  34. c # 设置为FAT32
  35. w # 保存设置并退出
  36. sudo partprobe $sddev
  37. sudo mkfs.vfat -n BOOT $sddev_boot
  38. sudo mkfs.ext4 -L data $sddev_data
复制代码

写入数据
  1. cd ~/ohos

  2. # 制作BOOT分区
  3. wget https://mirror.iscas.ac.cn/OpenHarmony/os/2.0/images/rpi-3b/oh-rpi3b-boot.tar.xz
  4. mkdir -p mnt/boot
  5. sudo mount $sddev_boot mnt/boot
  6. sudo tar --no-same-owner -xvf oh-rpi3b-boot.tar.xz --strip-components=1 -C mnt/boot
  7. sudo cp kernel_rpi/arch/arm/boot/zImage mnt/boot/
  8. sudo cp kernel_rpi/arch/arm/boot/dts/bcm2710-rpi-3-b.dtb mnt/boot/
  9. sudo cp kernel_rpi/arch/arm/boot/dts/overlays/vc4-kms-v3d.dtbo mnt/boot/overlays/
  10. sudo umount mnt/boot/

  11. # 写入SYSTEM分区
  12. sudo dd if=rpi3b/system.img of=$sddev_system bs=4M
  13. # 写入VENDOR分区
  14. sudo dd if=rpi3b/vendor.img of=$sddev_vendor bs=4M
复制代码

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友