1 Star 3 Fork 1

wawanala / ohos

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
OpenHarmony-v3.0-LTS.md 5.77 KB
一键复制 编辑 原始数据 按行查看 历史

qemu移植OpenHarmony Linux内核

一、文档

1、参考文档
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/porting-linux-kernel.md
https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v3.0-LTS.md
2、下载ohos

mkdir ~/code3.0
cd ~/code3.0
repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.0-LTS --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

3、下载更新构建工具

./build/prebuilts_download.sh

二、配置说明

OpenHarmony-v3.0-LTS  #基于ohos3.0测试 
qemu-system-arm     #qemu版本6.0(其他版本未测试)
/home/wawa/code3.0   #ohos初始目录 
/home/wawa/code3.0/out/KERNEL_OBJ/kernel/src_tmp/qemu #新建目录,将原生态kernel5.10复制此位置。 

三、全量编译Hi3516DV300

输出四个镜像文件updater system vendor userdata和tests测试文件

cd /home/wawa/code3.0 
./build.sh --product-name Hi3516DV300  \
--build-target images  --build-target hdf_test \
--ccache --target-os ohos --target-cpu arm \
--gn-args is_standard_system=true

四、编译kernel生成zImage

1、配置编译环境变量

export OHOS_ROOT=/home/wawa/code3.0
export PATH=$OHOS_ROOT/prebuilts/clang/ohos/linux-x86_64/llvm/bin:$PATH
export PATH=$OHOS_ROOT/prebuilts/gcc/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin:$PATH
export MAKE_OPTIONS="ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- CC=clang HOSTCC=clang"
export PRODUCT_PATH=vendor/hisilicon/Hi3516DV300

最新ohos-master因修改Makefile需指定两个变量不然会报错(3.0可跳过这一步)

export KERNEL_VERSION=qemu
export OUT_DIR=$OHOS_ROOT/out

2、复制kernel内核文件

cp -r $OHOS_ROOT/kernel/linux/linux-5.10 $OHOS_ROOT/out/KERNEL_OBJ/kernel/src_tmp/qemu

3、打补丁

$OHOS_ROOT/drivers/adapter/khdf/linux/patch_hdf.sh \
$OHOS_ROOT \
$OHOS_ROOT/out/KERNEL_OBJ/kernel/src_tmp/qemu \
$OHOS_ROOT/kernel/linux/patches/linux-5.10/hi3516dv300_patch/hdf.patch

4、编译kernel5.10
#multi_v7_defconfig为arm通用配置文件,可以根据自己熟悉的机器进行配置。
#目前通过测试有:
#vexpress_defconfig 设备树  vexpress-v2p-ca15-tc1.dtb
#sunxi_defconfig   设备树  sun8i-h3-orangepi-pc.dtb
#下面以multi_v7_defconfig为例进行配置测试 

cd $OHOS_ROOT/out/KERNEL_OBJ/kernel/src_tmp/qemu
make  ${MAKE_OPTIONS} multi_v7_defconfig
make  ${MAKE_OPTIONS} kvm_guest.config
make  ${MAKE_OPTIONS} menuconfig
make  ${MAKE_OPTIONS} -j 32 zImage

其中:在menuconfig界面配置hdf选项如下:
(1)、配置Staging drivers

Device Drivers--->Staging drivers
		[*] Staging drivers  ---> 
		      <*>   Hilog support 
                 (2048)  hi log buffer size
		      <*>   Enable hievent 

(2)、配置hdf

Device Drivers--->
[*] Enable HDF manager 
(2)   Set HDF support platform
[*]   Enable HDF platform driver 
[ ]     Enable HDF platform mipi dsi driver
[*]     Enable HDF platform gpio driver 
[*]     Enable HDF platform i2c driver 
[*]     Enable HDF platform watchdog driver
[*] Enable HDF USB PNP Notify driver
[*] Enable HDF linux test
[*] Enable HDF storage driver  
[*] Enable HDF USB PNP Notify driver

五、生成文件清单

1、镜像文件:updater.img system.img vendor.img userdata.img
路径:/home/wawa/code3.0/out/ohos-arm-release/packages/phone/images
2、内核文件:zImage
路径:/home/wawa/code3.0/out/KERNEL_OBJ/kernel/src_tmp/qemu/arch/arm/boot
将上述1、2文件临时复制到同一文件夹内,作为启动初始目录,如:/home/wawa/code3.0
3、测试文件:tests
路径:/home/wawa/code3.0/out/ohos-arm-release/tests/unittest/hdf/
tests文件加载方法,因hdcd移植不完整暂不可用,可用mount加载镜像本地进行复制
引导成功后,也可使用toybox内置命令mount nfs或ftpget方法加载,如:

mkdir test
mount -t nfs -o vers=3,nolock,addr=10.0.2.1 10.0.2.1:/var/lib/tftpboot/rootfs /test

六、启动qemu

使用qemu将四个镜像文件载入虚拟机,把system.img文件做为引导,与之对应的虚拟设备为/dev/vdb。
虚拟桥未完成配置时,将脚本最后一行-netdev全行删除。

 sudo qemu-system-arm -M virt -cpu cortex-a7 -smp 4 -m 2048 -nographic \
 -drive if=none,file=userdata.img,format=raw,id=userdata,index=3 -device virtio-blk-device,drive=userdata \
 -drive if=none,file=vendor.img,format=raw,id=vendor,index=2 -device virtio-blk-device,drive=vendor \
 -drive if=none,file=system.img,format=raw,id=system,index=1 -device virtio-blk-device,drive=system \
 -drive if=none,file=updater.img,format=raw,id=updater,index=0 -device virtio-blk-device,drive=updater \
 -kernel zImage \
 -append "console=ttyAMA0,115200 init=/bin/init root=/dev/vdb rw ip=dhcp" \
 -netdev bridge,id=net0,br=virbr0 -device virtio-net-device,netdev=net0,mac=12:22:33:44:55:66

七、任务完成情况

1构建build编译环境及脚本(初步完成需完善)
2架构device->QEMU–OHOS仓库(初步完成需完善)
3配置vendor->QEMU–OHOS工程(初步完成需完善)
4修改multi_v7_defconfig配置文件(初步完成需完善)
5制作patch文件(初步完成需完善)
6移植hdf-test测试(初步完成需完善)
7移植驱动
net uart clock mtd input char等驱动(系统自带) 
display audio(正在验证可行性)
hdf (逐步迭加) 

.....

C
1
https://gitee.com/wawanala/ohos.git
git@gitee.com:wawanala/ohos.git
wawanala
ohos
ohos
master

搜索帮助