介绍
该项目介绍了如何在飞腾嵌入式开发平台上运行OpenHarmony 4.0 release标准系统。 该项目支持芯片内置提供的视频解码硬件加速,支持硬件光标加速,基于Linux kernel 5.10开发。
代码结构
├── device_board_phytium #飞腾开发板代码仓库
├── device_soc_phytium #飞腾芯片代码仓库
├── phytium_env.sh #自动化合patch脚本
├── vendor_phytium #飞腾开发板方案定制代码仓库
├── FAQ #编译集成常见问题
└── …
搭建开发环境
1.1硬件环境
工欲善其事必先利其器,所以首先准备一台装有ubuntu20.04系统X86主机,内存最低配置要求16G。
硬件配置肯定是多多益善了,配置越高,编译过程就更加的纵享丝滑了!
1.2 下载repo脚本文件
注册码云gitee账号。
注册码云SSH公钥,请参考码云帮助中心。
安装git客户端和git-lfs并配置用户信息。
git config --global user.name “yourname”
git config --global user.email “your-email-address”
git config --global credential.helper store
安装码云repo工具,可以执行如下命令。
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
1.3 获取OpenHarmony标准系统源码
推荐版本OpenHamony 4.0 release。
通过repo + ssh 下载(需注册公钥,请参考码云帮助中心)。
export WORK_SPACE=/home/xxx/OpenHarmony #替换成自己定义的workspace路径
export PROJ_ROOT=$WORK_SPACE/4.0-release
mkdir $WORK_SPACE
mkdir $PROJ_ROOT
cd $PROJ_ROOT
repo init -u https://gitee.com/openharmony/manifest -b refs/tags/OpenHarmony-v4.0-Release --no-repo-verify
repo sync -c
repo forall -c ‘git lfs pull’
1.4 获取编译工具链
使用安装包方式获取编译工具链。
sudo apt-get update && sudo apt-get install 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 lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby openjdk-11-jdk libtinfo5 npm dosfstools parted kpartx genext2fs
1.5 执行prebuilts
在源码根目录下执行脚本,安装编译器及二进制工具。
cd $PROJ_ROOT
bash build/prebuilts_download.sh
2.代码下载与整合
2.1 下载phytium OH_4.0_release E2000适配源码
创建存放phytiym phytium OH_4.0_release源码的目录,进到该目录,下载phytium OH_4.0_release E2000适配源码:
export PHY_DEV=$WORK_SPACE/phytium_device
mkdir $PHY_DEV
cd $PHY_DEV
git clone https://gitee.com/phytium_embedded/phytium-openharmony-device.git
2.2 整合phytiym device vendor相关源码
通过前面的步骤,我们下载好了相关飞腾部分的修改。是时候将其和入到鸿蒙主干了。这里我们贴心的为开发者准备了一键构建脚本,我们这里执行脚本!
./phytium_env.sh $PROJ_ROOT 1
THE OHOS_PATH_ROOT /home/xxx/OpenHarmony/4.0-release
sync phytium env start!
sync device_soc_phytium
sync device_soc_phytium end
sync device_board_phytium
sync device_board_phytium end
sync vendor_phytium
sync vendor_phytium end
sync kernel
sync kernel end
applay 0001_drivers_peripheral.patch
applay 0001_foundation_arkui_ace_engine.patch
applay 0001_foundation_graphic_graphic_2d.patch
sync phytium end!
这里我们需要传入两个参数: 第一个是鸿蒙的根目录。 第二个是指设备ID,1对应e2000,2对应phytiumpi-firefly
代码中默认是文件系统是存放在sata磁盘,使用其他不同的存储介质,fstab文件及启动参数会有差异,更换不同的介质需要修改对应的fstab文件,具体修改方法参考《OpenHarmony多种存储介质配置说明》。
3.代码编译
3.1 OpenHarmony编译
cd $PROJ_ROOT
./build.sh --product-name e2000 --ccache --target-cpu arm64
编译成功提示:
post_process
=====build e2000 successful.
编译完成,我们进入到out目录查看生成的文件:
cd out/e2000/packages/phone/images/
tree
.
├── kernel
│ ├── dtb
│ │ ├── e2000d-demo-board.dtb
│ │ └── e2000q-demo-board.dtb
│ ├── EFI
│ │ └── BOOT
│ │ ├── bootaa64.efi
│ │ └── grub.cfg
│ └── Image
├── boot_uboot.img
├── ramdisk.img
├── system.img
├── updater.img
├── userdata.img
└── vendor.img
4 directories, 10 files
可以看到,其中生成了内核和系统相关镜像文件!
默认只会生成uboot启动需要的boot_uboot.img,UEFI启动的boot镜像需要通过手动执行make_boot.sh脚本进行生成,脚本运行需要sudo权限,请用有sudo权限的账户执行该脚本。
cd out/e2000/packages/phone/images/
sh ./make_boot.sh . efi
脚本执行日志如下参考,执行成功后会在当前目录下生成boot_efi.img
making efi boot image…
src path:./boot/, dis image name:./boot_efi.img, size:64M, block size:4096
mkfs.fat 4.1 (2017-01-24)
mkfs.fat: warning - lowercase labels might not work properly with DOS or Windows
[sudo] password for xxxx:
<<<<< make efi boot image success.
4.镜像烧写
目前提供了两种镜像烧录方式,按分区烧录与整体镜像烧录,可以根据硬件形态选择合适的烧录方式。
4.1 按分区烧录
1.硬盘分区
准备一块SATA硬盘,删除原有分区后,在linux环境下,使用fdsik命令分区,创建4个分区,依次为boot,system,vendor,userdata,根据实际情况设定,比如可以设定为500M,3G,1G,10G。p1 500MB for BOOT/EFIp2 3GB for systemp3 1G for vendorp4 10G for data
fdisk命令详细使用方法可自行百度谷歌,或者参考飞腾嵌入式 LINUX 用户 手册中的磁盘分区部分内容。
2.将这三个分区并格式化为ext4,sdX中的X烧写之前先用df命令确认一下是多少,可能是b,c…等,这里一定要注意不要烧错。
sudo mkfs.ext4 sdx1
sudo mkfs.ext4 sdx2
sudo mkfs.ext4 sdx3
sudo mkfs.ext4 sdx4
使用dd命令将3.1 OpenHarmony编译章节编译生成的镜像文件烧写到对应分区中。
sudo dd if=boot_uboot.img of=/dev/sdX1 bs=1M
sudo dd if=system.img of=/dev/sdX2 bs=1M
sudo dd if=vendor.img of=/dev/sdX3 bs=1M
如果是UEFI启动,烧录boot分区时,需要烧入boot_efi.img
重要的事情说三篇,不要烧录userdata分区!只需要将sdx4格式化为ext4格式就OK了!
4.2 整体镜像烧录
1.使用generate_image.sh工具打包镜像。
确保你的账户有sudo权限,进入镜像生成目录,执行generate_image.sh脚本
cd out/e2000/packages/phone/images/
#uboot启动
./generate_image.sh
#UEFI启动
./generate_image.sh efi
打包时会有如下打印信息:
start generate phytium_oh_xxx.img
start creating empty image, please wait…
…
…
losetup loopdevice…
generate phytium_oh_xxx.img successfully!!!
2.将生成的整体镜像烧入磁盘 Linux环境下,使用dd命令烧录即可.
$sudo dd if=phytium_oh_xxx.img of=/dev/sdb bs=1M
也可以在windows环境下,使用win32Diskimager、rufus、balenaEtcher等烧录工具进行烧录。
5.设备启动
将烧写好的SATA硬盘, 连接串口线,连接到e2000 EVB板上。上位机的串口调试工具波特率设置为115200,上电开机。
5.1 Uboot启动
在开机阶段,按回车,设置uboot环境变量
setenv bootargs console=ttyAMA1,115200 earlycon=p1011,0x2800d000 root=/dev/ram0 elevator=deadline rootwait rw loglevel=6 hardware=e2000 rootfstype=ext4 initrd=0x93000000,90M cma=256M
setenv bootcmd “ext4load scsi 0:1 0x90100000 e2000q-demo-board.dtb;ext4load scsi 0:1 0x90200000 Image;ext4load scsi 0:1 0x93000000 ramdisk.img;booti 0x90200000 - 0x90100000”
saveenv
boot
这里的设备树,以手上实际的调试设备为准!因为e2000系列有不同的版本,这里我的测试板子是e2000q,所以设备树就是e2000q-demo-board.dtb了!
5.2 UEFI启动
启动参数已经在烧写EFI分区时已写好,上电后,会直接进入系统。文章来源:https://www.toymoban.com/news/detail-854909.html
代码代码仓库
https://gitee.com/phytium_embedded/phytium-openharmony-device文章来源地址https://www.toymoban.com/news/detail-854909.html
到了这里,关于E2000/飞腾派运行OpenHarmony 4.0的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!