欧洲冠军联赛客户端首页-首发!辑睦之臂NanoPi M1 Plus移植Openharmony标准版
你的位置:欧洲冠军联赛客户端首页 > 地区报价 > 首发!辑睦之臂NanoPi M1 Plus移植Openharmony标准版
首发!辑睦之臂NanoPi M1 Plus移植Openharmony标准版
发布日期:2022-08-06 17:14    点击次数:59

想相识更多内容,请拜访:

51CTO和华为平易近间合作共建的鸿蒙技能社区

https://harmonyos.51cto.com

首先谢谢冲动永世666分享的

4412开发板移植openharmony3.0标准版-原来移植ohos可以或许这样俭朴!

本文参考这类编制在辑睦之臂NanoPi M1 Plus上移植了Openharmony标准版

用的编制相比俭朴粗暴,而今只是能告成跑起来看到画面。

首发!辑睦之臂NanoPi M1 Plus移植Openharmony标准版-鸿蒙HarmonyOS技能社区

摒挡实现编制以下:

一 OpenHarmony Linux内核移植

参考:一种倏地移植OpenHarmony Linux内核的编制

1.根据Building U-boot and Linux for H5/H3/H2+/zh取得NanoPi M1 Plus内核

次要步伐以下:

1.1 按部就班交错编译器

下载交错编译器arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz,尔后解压编译器:

$ mkdir -p /opt/FriendlyARM/toolchain $ tar xf arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz -C /opt/FriendlyARM/toolchain/ 

 尔后将编译器的门路插手到PATH中,用vi编辑vi ~/.bashrc,在末端插手下列内容,

此处倡导运用每次重开终端前输入下列指令的编制:

$ export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH $ export GCC_COLORS=auto 

 执行一下~/.bashrc脚本让设置登时在今后shell窗口中生效,留心"."后面有个空格:

$ . ~/.bashrc 

 这个编译器是64位的,不克不迭在32位的Linux体系上运行,按部就班实现后,你可以或许倏地的验证是否按部就班告成:

$ arm-linux-gcc -v gcc version 4.9.3 (ctng-1.21.0-229g-FA) 

 1.2 编译Linux内核

在编译过ipcamera_hispark_taurus的源码中下载NanoPi M1 Plus Linux4.14内核源码,并切换分支:

我的ohos3.0门路是/home/soon/ohos300/,这个门路替代成你自身的

$ cd /home/soon/ohos300/out/KERNEL_OBJ/kernel/src_tmp $ git clone https://github.com/friendlyarm/linux.git -b sunxi-4.14.y --depth 1 $ mv linux linux-nanopi 

 编译确认情形没有成就:

$ sudo apt-get install u-boot-tools $ cd /home/soon/ohos300/out/KERNEL_OBJ/kernel/src_tmp/linux-nanopi $ touch .scmversion $ make sunxi_defconfig ARCH=arm CROSS_COMPILE=arm-linux- $ make zImage dtbs ARCH=arm CROSS_COMPILE=arm-linux- 

 编译实现后会在arch/arm/boot/目录下生成zImage,并且在arch/arm/boot/dts/目录下生成dtb文件。

2 内核态根抵代码的移植

将下列门路代码,从OpenHarmony3.0内核代码目录kernel/linux/linux-4.19/drivers/staging中,拷贝到out/KERNEL_OBJ/kernel/src_tmp/linux-nanopi/drivers/staging 下。

drivers/staging/hilog drivers/staging/hievent 
soon@soon-u20:~/ohos300/out/KERNEL_OBJ/kernel/src_tmp/linux-nanopi/drivers/staging $ ls -al total 224 drwxrwxr-x  52 soon soon 4096 12月 29 22:51 . drwxrwxr-x 132 soon soon 4096 12月 29 22:53 .. drwxrwxr-x   4 soon soon 4096 12月 29 22:51 android drwxrwxr-x   2 soon soon 4096 12月 29 19:24 board -rw-rw-r--   1 soon soon  628 12月 29 22:51 built-in.o -rw-rw-r--   1 soon soon  251 12月 29 22:51 .built-in.o.cmd drwxrwxr-x   3 soon soon 4096 12月 29 19:24 ccree drwxrwxr-x   2 soon soon 4096 12月 29 19:24 clocking-wizard drwxrwxr-x   4 soon soon 4096 12月 29 19:24 comedi drwxrwxr-x   2 soon soon 4096 12月 29 19:24 dgnc drwxrwxr-x   2 soon soon 4096 12月 29 19:24 emxx_udc drwxrwxr-x   2 soon soon 4096 12月 29 22:51 fbtft drwxrwxr-x   3 soon soon 4096 12月 29 19:24 fsl-dpaa2 drwxrwxr-x   4 soon soon 4096 12月 29 19:24 fsl-mc drwxrwxr-x   2 soon soon 4096 12月 29 19:24 fwserial drwxrwxr-x   2 soon soon 4096 12月 29 19:24 gdm724x drwxrwxr-x   2 soon soon 4096 12月 29 19:24 goldfish drwxrwxr-x   4 soon soon 4096 12月 29 19:24 greybus drwxrwxr-x   2 soon soon 4096 12月 29 19:24 gs_fpgaboot drwxr-xr-x   2 soon soon 4096 12月 29 19:49 hievent drwxr-xr-x   2 soon soon 4096 12月 29 19:49 hilog 

 在三方内核的drivers/staging/Kconfig文件内添加以下代码:

source "drivers/staging/hilog/Kconfig" 
source “drivers/staging/hievent/Kconfig” 

在内核config项中关上对应的CONFIG掌握宏:CONFIG_HILOG和CONFIG_HIEVENT。

CONFIG_HILOG=y CONFIG_HI_LOG_BUFFER_SIZE=2048 CONFIG_HIEVENT=y 
3 内核态必选特点HDF的移植

3.1打HDF补钉

因为patch_hdf.sh是比来才上传的,假定用repo下载的,先更新下/home/soon/ohos300/drivers/adapter/khdf/linux这个目录

也可以去把全副货仓旅馆下载来替代。指令更新可运用以下

git pull git checkout master 

在Linux内核打HDF补钉时,执行补钉shell脚本合入HDF补钉。

设置HDF补钉脚本的三个变量参数。

取得patch_hdf.sh脚本。

执行patch_hdf.sh脚本顺次传入三个变量参数。

patch_hdf.sh脚本三个参数含义为:

第一个入参为工程根目录门路,第二入参为内核目录门路,第三个入参为hdf补钉文件。

./patch_hdf.sh [工程根目录门路] [内核目录门路] [hdf补钉文件]

我这边用的指令以下

/home/soon/ohos300/drivers/adapter/khdf/linux/patch_hdf.sh \ /home/soon/ohos300 \ /home/soon/ohos300/out/KERNEL_OBJ/kernel/src_tmp/linux-nanopi \ /home/soon/ohos300/kernel/linux/patches/linux-4.19/hi3516dv300_patch/hdf.patch  

3.2设置config

供应HDF根抵设置,假定需求别的功用,经由过程menuconfig关上对应驱动开关即可。

HDF补钉执行告成后,默认HDF开关是敞开的,关上HDF根抵设置选项以下:

CONFIG_DRIVERS_HDF=y CONFIG_HDF_SUPPORT_LEVEL=2 CONFIG_DRIVERS_HDF_PLATFORM=y CONFIG_DRIVERS_HDF_PLATFORM_MIPI_DSI=y CONFIG_DRIVERS_HDF_PLATFORM_GPIO=y CONFIG_DRIVERS_HDF_PLATFORM_I2C=y CONFIG_DRIVERS_HDF_PLATFORM_UART=y CONFIG_DRIVERS_HDF_TEST=y 
4 关上内核的一些关键设置

4.1 关上 Android Drivers 和Android Binder IPC Driver

Device Drivers —>

Android —>

[] Android Drivers (开启)

[] Android Binder IPC Driver (开启)

4.2 关上SELinux Support相干设置

参考亮子力的摒挡,树莓派4B移植OHOS 3.0 LTS标准体系

可以或许在make menuconfig 下用/ 执行查找关键字,看设置项的职位地方和寄托,

也可以参考文章附件设置。

5 从头编译生成zImage 和dtb

设置实现后间接下下列指令:

$ make zImage dtbs ARCH=arm CROSS_COMPILE=arm-linux- 

编译实现后会在arch/arm/boot/目录下生成zImage,并且在arch/arm/boot/dts/目录下生成dtb文件。把这两个文件拷贝进去备用。

二 解析boot.img 1. 先拷贝一份NanoPi M1 Plus的boot 分区到~/ohos300/out/ohos-arm-release/packages/phone/boot/下。

可以或许从制作的SD卡上拷贝,怎么样制作SD 启动卡参考NanoPi M1 Plus 4.3.3.1 烧写到TF卡。

2.替代zImage和dtb文件
cp -f /home/soon/ohos300/out/KERNEL_OBJ/kernel/src_tmp/linux-nanopi/arch/arm/boot/zImage /home/soon/ohos300/out/ohos-arm-release/packages/phone/boot/ cp -f /home/soon/ohos300/out/KERNEL_OBJ/kernel/src_tmp/linux-nanopi/arch/arm/boot/dts/sun8i-*-nanopi-*.dtb /home/soon/ohos300/out/ohos-arm-release/packages/phone/boot/ 
3.用build_boot.py生成boot.img

参考树莓派rpi3的device\rpi3\rpi3\kernel\build_kernel.py脚本,编削:

#!/usr/bin/env python3 import sys import os import os.path import subprocess import multiprocessing import shutil import pathlib  bootimgsize = 64*1024*1024 co妹妹and = sys.argv[1] output_dir = sys.argv[2]  def make_boot_img():     oldpwd = os.getcwd()     os.chdir(output_dir)      imagefile = 'images/boot.img'     imagefile_tmp = imagefile + '.tmp'     boot_dir = 'boot'     with open(imagefile_tmp, 'wb') as writer:         writer.truncate(bootimgsize)     subprocess.run(F'mkfs.vfat {imagefile_tmp} -n BOOT', shell=True, check=True)     subprocess.run(F'mcopy -i {imagefile_tmp} {boot_dir}/* ::/', shell=True, check=True)     os.rename(imagefile_tmp, imagefile)      os.chdir(oldpwd)  co妹妹and_table = {     'bootimg': make_boot_img,地区报价 }  co妹妹and_table[co妹妹and]() 

把build_boot.py放到~/ohos300 执行下列指令生成boot.img,

soon@soon-u20:~/ohos300 $ python3 build_boot.py bootimg /home/soon/ohos300/out/ohos-arm-release/packages/phone mkfs.fat 4.1 (2017-01-24) 
三 解析SD卡烧录img

参考Make Image Files for H3

1 下载Build an sd card image情形
git clone https://github.com/friendlyarm/sd-fuse_h3.git cd sd-fuse_h3 wget http://112.124.9.243/dvdfiles/H3/images-for-eflasher/friendlycore-focal_4.14_armhf.tgz tar xvzf friendlycore-focal_4.14_armhf.tgz 
2 操办system.img、vendor.img、userdata.img

这边用的从前编译的树莓派rpi3的img

将friendlycore-focal_4.14_armhf下的.img 删除

并将从前合好的boot.img、system.img、vendor.img、userdata.img拷贝到该目录下。

3 编削partmap.txt
# sd0 partition map # flash= <device>.<dev no>:<partition>:<fstype>:<start>,<length> #   support device : eeprom, nand, 妹妹c #   support fstype : 2nd, boot, raw, fat, ext4, ubi # # CPU=h3 flash=妹妹c,0:boot0:raw:0x2000,0x17FE000:u-boot-sunxi-with-spl.bin; flash=妹妹c,0:boot:fat:0x1800000,0x4000000:boot.img; flash=妹妹c,0:system:ext4:0x5800000,0x20000000:system.img; flash=妹妹c,0:vendor:ext4:0x025800000,0x4000000:vendor.img; flash=妹妹c,0:userdata:ext4:0x29800000,0x12C00000:userdata.img; 
4 解析SD卡烧录img

在sd-fuse_h3目录下执行:

sudo ./mk-sd-image.sh friendlycore-focal_4.14_armhf h3-sd-friendlycore.img 
soon@soon-u20:~/nanopi-m1-plus/sd-fuse_h3 $ sudo ./mk-sd-image.sh friendlycore-focal_4.14_armhf h3-sd-friendlycore.img [sudo] password for soon:  Creating RAW image: out/h3-sd-friendlycore.img (7800 MB) --------------------------------- 0+0 records in 0+0 records out 0 bytes copied, 0.0010239 s, 0.0 kB/s Using device: /dev/loop14 --------------------------------- Friendlycore-focal_4.14_armhf filesystem fusing Image root: ./friendlycore-focal_4.14_armhf  ---------------------------------------------------------------- [/dev/loop14] capacity = 7438MB, 7799999488 bytes current /dev/loop14 partition: MBR.0 start : 0x0000100000 size 0x01d0da8c00  kB ---------------------------------------------------------------- parsing ./friendlycore-focal_4.14_armhf/partmap.txt: part.0 flash=妹妹c,0:boot0:raw:0x2000,0x17fe000:u-boot-sunxi-with-spl.bin:[RAW] ./friendlycore-focal_4.14_armhf/u-boot-sunxi-with-spl.bin part.1 flash=妹妹c,0:boot:fat:0x1800000,0x4000000:boot.img:[MBR] ./friendlycore-focal_4.14_armhf/boot.img part.2 flash=妹妹c,0:system:ext4:0x5800000,0x20000000:system.img:[MBR] ./friendlycore-focal_4.14_armhf/system.img part.3 flash=妹妹c,0:vendor:ext4:0x25800000,0x4000000:vendor.img:[MBR] ./friendlycore-focal_4.14_armhf/vendor.img part.4 flash=妹妹c,0:userdata:ext4:0x29800000,0x12c00000:userdata.img:[MBR] ./friendlycore-focal_4.14_armhf/userdata.img ---------------------------------------------------------------- create new MBR 4: [MBR.0] start : 0x0001800000 size 0x0004000000  [MBR.1] start : 0x0005800000 size 0x0020000000  [MBR.2] start : 0x0025800000 size 0x0004000000  [MBR.3] start : 0x0029800000 size 0x0012c00000  ---------------------------------------------------------------- copy from: ./friendlycore-focal_4.14_armhf to /dev/loop14  [RAW. 0]:     2040 KB | ./friendlycore-focal_4.14_armhf/u-boot-sunxi-with-spl.bin > 100% : done.  [MBR. 0]:    65536 KB | ./friendlycore-focal_4.14_armhf/boot.img                  > 100% : done.  [MBR. 1]:   524288 KB | ./friendlycore-focal_4.14_armhf/system.img                > 100% : done.  [MBR. 2]:    65536 KB | ./friendlycore-focal_4.14_armhf/vendor.img                > 100% : done.  [MBR. 3]:   307200 KB | ./friendlycore-focal_4.14_armhf/userdata.img              >  21                                                                                                                                                                                   100% : done. ---------------------------------------------------------------- /dev/loop14: msdos partitions 1 2 3 4 ### try to resize2fs: /dev/loop14p3 resize2fs 1.45.5 (07-Jan-2020) The filesystem is already 16384 (4k) blocks long.  Nothing to do!  --------------------------------- Friendlycore-focal_4.14_armhf is fused successfully. All done. --------------------------------- RAW image successfully created (23:44:53). -rw-r--r-- 1 root root 7799999488 12月 30 23:44 out/h3-sd-friendlycore.img Tip: You can compress it to save disk space. soon@soon-u20:~/nanopi-m1-plus/sd-fuse_h3 $  

会在out目录下生成img

soon@soon-u20:~/nanopi-m1-plus/sd-fuse_h3/out $ ls -al total 964620 drwxrwxr-x  2 soon soon       4096 12月 30 23:46 . drwxrwxr-x 10 soon soon       4096 12月 30 23:46 .. -rw-rw-r--  1 soon soon        167 12月  6 22:28 .gitignore -rw-r--r--  1 root root 7799999488 12月 30 23:44 h3-sd-friendlycore.img soon@soon-u20:~/nanopi-m1-plus/sd-fuse_h3/out $  
5 烧录img

可以或许用dd 也可以用Win32DiskImager,dd指令以下:

sudo dd if=out/h3-sd-friendlycore.img bs=1M of=/dev/sdX 

想相识更多内容,请拜访:

51CTO和华为平易近间合作共建的鸿蒙技能社区

https://harmonyos.51cto.com



相关资讯