同步操作将从 Phytium嵌入式软件/Phytium-OpenHarmony-D2000-X100 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
该项目介绍,如何在飞腾信息科技有限公司的 Phytium D2000 + X100 DEV硬件平台上运行 OpenHarmony 标准系统OpenHamony 4.1 release。 支持X100提供的视频解码硬件加速,以及图形显示硬件加速。 支持Linux kernel 5.10。
准备一台装有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-v4.1-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
进入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-d2000-device.git
执行phytium_env.sh脚本,将phytium device代码,以及针对openharmony修改的patch集成到OpenHarmony中。
./phytium_env.sh $PROJ_ROOT 0
THE OHOS_PATH_ROOT: /home/xxx/workspace/OpenHarmony
THE DEVICE: d2000(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对应d2000;1对应e2000;2对应phytiumpi-firefly
确认存储介质的类型,对应修改fstab文件。具体参考文档Openharmony多种存储介质配置说明。
cd $PROJ_ROOT
./build.sh --product-name d2000 --ccache --target-cpu arm64
编译成功提示:
post_process
=====build d2000 successful.
编译生成的文件
$PROJ_ROOT/out/d2000/packages/phone/images/system.img
$PROJ_ROOT/out/d2000/packages/phone/images/vendor.img
$PROJ_ROOT/out/d2000/packages/phone/images/ramdisk.img
D2000源码暂未开源,请邮件联系phytium嵌入式软件部(linan1284@phytium.com.cn)获取kernel源码,并参考kernel源码中的README,编译出相关文件。
!!!注意: vpu是作为Linux Kernel的modules的方式进行编译的,内核代码修改更新时,需要同步更新vpu相关的ko文件。 linux kernel源码编译后,vpu的ko文件生成的位置: linux_kernel/drivers/media/platform/phytium-vpu/vxd/vxd.ko linux_kernel/drivers/media/platform/phytium-vpu/mem_man/img_mem.ko 镜像烧写时,将这两个ko文件拷贝到开发板的system分区: /system/lib64/media/plugins/
准备一块SATA硬盘,删除原有分区后,在linux下,使用fdsik命令分区,创建4个分区,依次为boot,system,vendor,userdata,根据实际情况设定,比如可以设定为500M,3G,500M,10G。p1 500MB for BOOT/EFIp2 3GB for systemp3 500MB for vendorp4 10G for data
fdisk命令详细使用方法可自行百度谷歌,或者参考飞腾嵌入式 LINUX 用户 手册中的磁盘分区部分内容。
将这三个分区并格式化为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=system.img of=/dev/sdx2 bs=1M
sudo dd if=vendor.img of=/dev/sdx3 bs=1M
boot分区的烧录,启动方式不一样,烧录方法不一样,区分为Uboot启动和UEFI启动两种。
sudo mkfs.ext4 sdx1
mkdir ~/disk
sudo mount /dev/sdx1 ~/disk
sudo cp linux_kernel/arch/arm64/boot/Image ~/disk/
sudo cp linux_kernel/arch/arm64/boot/dts/phytium/d2000-devboard-dsk.dtb ~/disk/
sudo cp $PROJ_ROOT/out/d2000/packages/phone/images/ramdisk.img ~/disk/
sync
如果使用kernel源码编译的文件,参考kernel源码中提供的README。
sudo umount ~/disk
sudo mkfs.vfat sdx1
mkdir ~/disk
sudo mount /dev/sdx1 ~/disk
sudo cp linux_kernel/arch/arm64/boot/Image ~/disk/
sudo cp $PHY_DEV/device_board_phytium/d2000/loader/EFI/ ~/disk/ -r
sudo cp $PROJ_ROOT/out/d2000/packages/phone/images/ramdisk.img ~/disk/
sync
如果使用kernel源码编译的文件,参考kernel源码中提供的README。
如果需要修改启动参数,修改~/disk/EFI/BOOT/grub.cfg文件,一般使用默认启动参数的即可。
sudo umount ~/disk
区别于前面提到的烧写流程,我们还提供了一个镜像打包工具,可以将几个分区的img文件打包成一个镜像,通过dd或者winddows下的烧写工具将打包后的镜像一次性烧写到磁盘,不需要对磁盘分区。 工具所在位置:
device_board_phytium/common/tools/generate_image/generate_image.sh
使用和配置方法详情,请参考[wiki文档](https://gitee.com/phytium_embedded/phytium-openharmony-device/wikis/%E9%95%9C%E5%83%8F%E7%94%9F%E6%88%90%E4%B8%8E%E7%83%A7%E5%BD%95/%E9%95%9C%E5%83%8F%E7%94%9F%E6%88%90%E8%84%9A%E6%9C%AC)。
参考命令:
cd out/d2000/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!!!!!!
将烧写好的SATA硬盘和调试串口线,连接到d2000 DEV板上。上位机的串口调试工具波特率设置为115200,上电开机。
在开机阶段,按回车,设置uboot环境变量
setenv bootargs console=ttyAMA1,115200 earlycon=p1011,0x28001000 root=/dev/ram0 elevator=deadline rootwait rw loglevel=6 hardware=d2000 rootfstype=ext4 initrd=0x93000000,90M
setenv bootcmd "ext4load scsi 0:1 0x90100000 d2000-devboard-dsk.dtb;ext4load scsi 0:1 0x90200000 Image;ext4load scsi 0:1 0x93000000 ramdisk.img;booti 0x90200000 - 0x90100000"
saveenv
boot
启动参数已经在烧写EFI分区时已写好,上电后,会直接进入系统。
飞腾信息技术有限公司 zhangjianwei@phytium.com.cn tangkaiwen@phytium.com.cn xiayan1086@phytium.com.cn libowen1180@phytium.com.cn chenzigui1762@phytium.com.cn
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。