该项目介绍,如何在飞腾信息科技有限公司SOC硬件平台上运行 OpenHarmony 标准系统OpenHamony 5.0.0 release。其中腾锐D系列芯片没有图形模块,需要搭配显卡使用,目前仓库中支持的显卡包含飞腾X100套片、AMD显卡、JM9100显卡,以及cpu模拟mesa3d方案。
飞腾信息技术有限公司(以下简称“飞腾公司”)是国内领先的自主核心芯片提供商,由中国电子信息产业集团、天津市滨海新区政府和天津先进技术研究院于2014年联合支持成立。详情请参考飞腾官网介绍。
├── device_board_phytium #飞腾开发板代码仓库
├── device_soc_phytium #飞腾芯片代码仓库
├── phytium_env.sh #自动化合patch脚本
├── vendor_phytium #飞腾开发板方案定制代码仓库
├── FAQ #编译集成常见问题
└── ...
以腾锐D系列为例。
准备一台装有ubuntu20.04系统X86主机,内存最低配置要求16G。
git config --global user.name "your-name"
git config --global user.email "your-email-address"
git config --global credential.helper store
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
注:如果没有访问/usr/local/bin/目录的权限,可将repo下载至其他目录,并将其配置到环境变量。
通过repo + ssh 下载源码。
export WORK_SPACE=/home/xxx/workspace #替换成自己定义的workspace路径
export PROJ_ROOT=$WORK_SPACE/OpenHarmony
mkdir $WORK_SPACE
mkdir $PROJ_ROOT
cd $PROJ_ROOT
repo init -u https://gitee.com/openharmony/manifest -b refs/tags/OpenHarmony-v5.0.0-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
使用安装包方式获取编译工具链。
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 libxt-dev libx11-dev xorg-dev mtools mk2fs
进入OpenHarmony源码根目录,执行脚本,安装编译器及二进制工具。
cd $PROJ_ROOT
bash build/prebuilts_download.sh
创建一个本地目录,然后将phytium device源码下载到该目录。
export PHY_DEV=$WORK_SPACE/phytium_device
mkdir $PHY_DEV
cd $PHY_DEV
git clone git@gitee.com:phytium_embedded/phytium-openharmony-device.git
D系列设备树,以及X100的内核源码未开源,如果用到这部分代码,需要邮件联系phytium嵌入式软件部(linan1284@phytium.com.cn)获取,获取到后拷贝到如下路径。
D系列设备树文件位置:device_board_phytium/tengrui_d/dts
X100内核驱动位置:vendor_phytium/gpu_model/x100/kernel_source
以腾锐D系列为例,执行phytium_env.sh脚本,将phytium device代码,以及针对openharmony修改的patch集成到OpenHarmony中。
./phytium_env.sh $PROJ_ROOT 0
THE OHOS_PATH_ROOT: /home/xxx/workspace/OpenHarmony
THE DEVICE: tengrui_d(0)
#### 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 phytium end! ####
这里我们需要传入两个参数: 第一个是鸿蒙的根目录。 第二个是指设备ID,0对应tengrui_d;1对应tenglong_e;2对应phytiumpi-firefly
注:phytium_env.sh支持清除工程中飞腾相关代码的功能:./phytium_env.sh $PROJ_ROOT 0 1
这个步骤非常重要,未配置正确的fstab会导致启动kernel panic!!!
确认存储介质的类型,参考wiki文档Openharmony多种存储介质配置说明,根据自己需求修改fstab文件。
通过build.sh脚本进行编译,脚本需要带入的几个必要参数说明如下表:
参数 | 说明 |
---|---|
--product-name | 产品名称,飞腾产品对应tengrui_d,和tenglong_e |
--target-cpu | 产品芯片架构,飞腾产品对应为arm64 |
--gn-args gpu_model | gn扩展参数,由于不同显卡目前驱动无法兼容,飞腾扩展了一个参数gpu_model,允许用户在编译时需要根据不同的硬件添加对应的参数,即--gn-args xxx,支持x100、amd、jm、sw |
--gn-args linux_kernel_version | gn扩展参数,配置Linux版本,默认版本是5.10,OpenHarmony 5.0.0 Release以后的版本支持指定Linux kernel 6.6, --gn-args linux_kernel_version="linux-6.6" |
--ccache | 通过ccache加快编译速度 |
更多的编译参数说明,可以通过./build.sh --help获取。
以下是以tengrui_d为例的编译参数。
cd $PROJ_ROOT
#### 如果显卡是X100
./build.sh --product-name tengrui_d --ccache --target-cpu arm64 --gn-args gpu_model=x100
#### 如果显卡是AMD
./build.sh --product-name tengrui_d --ccache --target-cpu arm64 --gn-args gpu_model=amd
#### 如果显卡是JM9100
./build.sh --product-name tengrui_d --ccache --target-cpu arm64 --gn-args gpu_model=jm
#### 如果没有显卡,可采用cpu模拟的mesa3d方案
./build.sh --product-name tengrui_d --ccache --target-cpu arm64 --gn-args gpu_model=sw
编译成功提示:
post_process
=====build tengrui_d successful.
注:JM内核驱动暂未对Linux kernel 6.6进行适配,linux_kernel_version="linux-6.6"与gpu_model=jm同时配置时,会编译失败。
编译生成的文件
$PROJ_ROOT/out/tengrui_d/packages/phone/images/boot.img
$PROJ_ROOT/out/tengrui_d/packages/phone/images/system.img
$PROJ_ROOT/out/tengrui_d/packages/phone/images/vendor.img
$PROJ_ROOT/out/tengrui_d/packages/phone/images/ramdisk.img
注:
- boot.img分区镜像格式为fat32,既支持boot启动也支持UEFI启动。
- boot分区镜像中主要包含内核镜像Image,ramdisk.img,以及uboot启动必备的设备树文件,UEFI启动必备的引导文件。
目前提供了两种镜像烧录方式,按分区烧录与整体镜像烧录,可以根据硬件形态选择其中一种合适的烧录方式。
1.硬盘分区:
准备一块SATA硬盘,删除原有分区后,在linux下,使用fdsik命令分区,创建4个分区,依次为boot,system,vendor,userdata,根据实际情况设定,比如可以设定为64M,1.5G,500M,1G。
p1 64MB for BOOT/EFI
p2 1.5GB for system
p3 500MB for vendor
p4 1G for data
fdisk命令详细使用方法可自行百度谷歌,或者参考飞腾嵌入式 LINUX 用户 手册中的磁盘分区部分内容。
2.将这三个分区并格式化为ext4,sdX中的X烧写之前先用df命令确认一下是多少,可能是b,c...等,这里一定要注意不要烧错。
sudo mkfs.ext4 sdx2
sudo mkfs.ext4 sdx3
sudo mkfs.ext4 sdx4
!!!注意: 在格式化之前,用df确认需要烧写的分区,也就是sdx中的x,可能是a、b、c。
使用dd命令将3.1 编译OpenHarmony源码章节编译生成的镜像文件烧写到对应分区中。
sudo dd if=boot.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
1.使用generate_image.sh工具打包镜像: 区别于前面提到的按分区烧写流程,我们还提供了一个镜像打包工具,可以将几个分区的img文件打包成一个镜像,通过dd或者winddows下的烧写工具将打包后的镜像一次性烧写到磁盘,不需要对磁盘分区。 工具所在位置:
device_board_phytium/common/tools/generate_image/generate_image.sh
使用和配置方法详情,请参考wiki文档镜像生成脚本。
参考命令:
cd out/tengrui_d/packages/phone/images/
./generate_image.sh
打包时会有如下打印信息:
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=openharmony_img_xxx.img of=/dev/sdb bs=1M
也可以在windows环境下,使用win32Diskimager、rufus、balenaEtcher等烧录工具进行烧录。
将烧写好的SATA硬盘和调试串口线,连接到开发板上。上位机的串口调试工具波特率设置为115200,上电开机。
在开机阶段,按回车,设置uboot环境变量
setenv bootargs console=ttyAMA1,115200 root=/dev/ram0 elevator=deadline rootwait rw loglevel=1 hardware=tengrui_d rootfstype=ext4 initrd=0x93000000,90M
setenv bootcmd "fatload scsi 0:1 0x90100000 pd2008-devboard-dsk.dtb;fatload scsi 0:1 0x90200000 Image;fatload scsi 0:1 0x93000000 ramdisk.img;booti 0x90200000 - 0x90100000"
saveenv
boot
注:使用tenglong_e时hardward也要相应改为tenglong_e
启动参数已经在烧写EFI分区时已写好,上电后,会直接进入系统。
gpu_model=sw模式下,cpu模拟mesa,需要给DC预留更多内存才能正常启动,需要在启动参数中增加相关配置。
setenv bootargs console=ttyAMA1,115200 root=/dev/ram0 elevator=deadline rootwait rw loglevel=1 hardware=tenglong_e rootfstype=ext4 initrd=0x93000000,90M cma=512M
setenv bootargs console=ttyAMA1,115200 root=/dev/ram0 elevator=deadline rootwait rw loglevel=1 hardware=tengrui_d rootfstype=ext4 initrd=0x93000000,90M cma=1024M phytium-dc-drm.x100_dc_sysmem
飞腾信息技术有限公司
zhangjianwei@phytium.com.cn
tangkaiwen@phytium.com.cn
xiayan1086@phytium.com.cn
libowen1180@phytium.com.cn
chenzigui1762@phytium.com.cn
liucaicheng1476@phytium.com.cn
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型