diff --git a/README.md b/README.md index 035f7a75f4a72d70cb5af6d7fcb87e0a1f90e399..eeb3680d20956acddaee3b5f7026d5cf16966b04 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,15 @@ cd $PHY_DEV git clone git@gitee.com:phytium_embedded/phytium-openharmony-d2000-device.git ``` -## 2.2 整合phytiym device源码 +## 2.2 整合内核源码 +从我们发布的OpenHarmony Release 4.1的适配代码版本开始,我们优化了D2000内核代码编译和释放的方式,会以patch的形式释放内核源码,将发布的kernel_source文件拷贝到device_board_phytium/d2000/kernel_source目录,内核会跟随OpenHarmony操作系统一起编译。但是D2000源码暂未开源,需要邮件联系phytium嵌入式软件部(linan1284@phytium.com.cn)获取kernel源码patch。 + +kernel_source主要包括phytium_patch、pytium_standard_defconfig以及dts三个部分,可以根据项目需求和硬件平台按需获取。 +1. phytium_patch:飞腾通用内核补丁,包含phytium通用补丁phytium.patch,X100 gpu内核驱动补丁gpu.patch,X100 vpu内核驱动补丁vpu.patch。 +2. pytium_standard_defconfig:内核编译config文件。 +3. dts:D2000 demo板设备树,Uboot启动需要,如果是其他板卡,需要找对应的板卡厂商获取设备树文件。 + +## 2.3 整合phytium device源码 执行phytium_env.sh脚本,将phytium device代码,以及针对openharmony修改的patch集成到OpenHarmony中。 @@ -104,9 +112,9 @@ THE DEVICE: d2000(0) > 第一个是鸿蒙的根目录。 > 第二个是指设备ID,0对应d2000;1对应e2000;2对应phytiumpi-firefly -## 2.3 适配fstab文件 +## 2.4 适配fstab文件 -确认存储介质的类型,对应修改fstab文件。具体参考文档[Openharmony多种存储介质配置说明](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/Openharmony%E5%A4%9A%E7%A7%8D%E5%AD%98%E5%82%A8%E4%BB%8B%E8%B4%A8%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E)。 +确认存储介质的类型,参考wiki文档[Openharmony多种存储介质配置说明](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/Openharmony%E5%A4%9A%E7%A7%8D%E5%AD%98%E5%82%A8%E4%BB%8B%E8%B4%A8%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E),根据自己需求修改fstab文件。 # 代码编译 @@ -127,23 +135,12 @@ post_process 编译生成的文件 ``` +$PROJ_ROOT/out/d2000/packages/phone/images/boot_uboot.img $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 ``` -## 3.2 编译 Linux kernel - -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/ - # 镜像烧写 ## 4.1 硬盘分区 @@ -178,81 +175,34 @@ boot分区的烧录,启动方式不一样,烧录方法不一样,区分为U ### 4.3.1 Uboot启动 -1. 将boot分区格式化为ext4 +系统编译默认生成的是uboot启动下的boot_uboot.img,先将boot分区格式化成ext4,然后烧入boot镜像文件。 ``` sudo mkfs.ext4 sdx1 -``` - -2. 挂载boot分区 - -``` -mkdir ~/disk -sudo mount /dev/sdx1 ~/disk -``` - -3. 将[3.2 编译 Linux kernel](#32-编译-linux-kernel)章节中生成的Kernel镜像,设备树文件,以及[3.3 编译OpenHarmony源码](#31-编译openharmony源码)章节中生成的ramdisk拷贝到boot分区。 - -``` -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。 - -4. 卸载boot分区 - -``` -sudo umount ~/disk +sudo dd if=boot_uboot.img of=/dev/sdx1 bs=1M ``` ### 4.3.2 UEFI启动 -1) 将boot分区格式化为EFI +需要先用make_boot.sh脚本生成UEFI启动下的boot_efi.img,然后将boot分区格式化成vfat,最后烧入boot镜像文件。make_boot.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)。 ``` +./make_boot.sh ./ efi sudo mkfs.vfat sdx1 +sudo dd if=boot_efi.img of=/dev/sdx1 bs=1M ``` - -2) 挂载boot分区 - -``` -mkdir ~/disk -sudo mount /dev/sdx1 ~/disk -``` - -3) 将[3.2 编译 Linux kernel](#32-编译-linux-kernel)章节中生成的Kernel镜像,EFI文件,以及[3.1 编译OpenHarmony源码](#31-编译openharmony源码)章节中生成的ramdisk拷贝到EFI分区。 - -``` -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文件,一般使用默认启动参数的即可。 - -4) 卸载boot分区 - -``` -sudo umount ~/disk -``` - ## 4.4 镜像打包工具 区别于前面提到的烧写流程,我们还提供了一个镜像打包工具,可以将几个分区的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)。 +使用和配置方法详情,请参考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启动 @@ -281,7 +231,7 @@ generate phytium_oh_xxx.img successfully!!!!!! ``` 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" +setenv bootcmd "ext4load scsi 0:1 0x90100000 pd2008-devboard-dsk.dtb;ext4load scsi 0:1 0x90200000 Image;ext4load scsi 0:1 0x93000000 ramdisk.img;booti 0x90200000 - 0x90100000" saveenv boot ``` @@ -292,9 +242,9 @@ boot # 维护者邮箱 -飞腾信息技术有限公司 -zhangjianwei@phytium.com.cn -tangkaiwen@phytium.com.cn -xiayan1086@phytium.com.cn -libowen1180@phytium.com.cn +飞腾信息技术有限公司 +zhangjianwei@phytium.com.cn +tangkaiwen@phytium.com.cn +xiayan1086@phytium.com.cn +libowen1180@phytium.com.cn chenzigui1762@phytium.com.cn diff --git a/device_board_phytium/common/build_kernel/kernel.mk b/device_board_phytium/common/build_kernel/kernel.mk index 59e3ef85335b1e6a9b81586c6c0c55fda2981c16..48d7e53f8f6b267cc2739ab68d83efb94e732aeb 100755 --- a/device_board_phytium/common/build_kernel/kernel.mk +++ b/device_board_phytium/common/build_kernel/kernel.mk @@ -62,6 +62,7 @@ $(KERNEL_IMAGE_FILE): $(hide) $(OHOS_BUILD_HOME)/device/board/phytium/common/build_kernel/patch_phytium.sh $(PHYTIUM_PATCH_PATH) $(KERNEL_SRC_TMP_PATH) $(hide) $(OHOS_BUILD_HOME)/drivers/hdf_core/adapter/khdf/linux/patch_hdf.sh $(OHOS_BUILD_HOME) $(KERNEL_SRC_TMP_PATH) $(KERNEL_PATCH_PATH) $(DEVICE_NAME) $(hide) cp $(PHYTIUM_PATCH_PATH)/${DEFCONFIG_FILE} $(KERNEL_SRC_TMP_PATH)/arch/$(KERNEL_ARCH)/configs/ + $(hide) cp $(PHYTIUM_PATCH_PATH)/dts/phytium $(KERNEL_SRC_TMP_PATH)/arch/$(KERNEL_ARCH)/boot/dts/ -rf $(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) LLVM=1 LLVM_IAS=1 $(KERNEL_CROSS_COMPILE) distclean $(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) LLVM=1 LLVM_IAS=1 $(KERNEL_CROSS_COMPILE) $(DEFCONFIG_FILE) $(hide) $(KERNEL_MAKE) -C $(KERNEL_SRC_TMP_PATH) ARCH=$(KERNEL_ARCH) LLVM=1 LLVM_IAS=1 $(KERNEL_CROSS_COMPILE) -j6 diff --git a/device_board_phytium/d2000/kernel_source/dts/phytium/.gitkeep b/device_board_phytium/d2000/kernel_source/dts/phytium/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391