> 文档中心 > 快速移植OpenHarmony Linux内核的方法

快速移植OpenHarmony Linux内核的方法


内核态与用户态

OpenHarmony = OpenHarmony内核态层 + OpenHarmony用户态层
其中内核态层就是由内核本身(如Linux Kernel,LiteOS),和一些运行在内核态的一些特性组成,比如HDF等。

OH内核态层 = OH Linux内核 + OH内核态特性(可选特性或者必选特性,如必选特性HDF,今后的可选特性HMDFS等)

OH Linux内核 = 标准LTS Linux内核 + 三方SoC芯片平台代码 + OH内核态基础代码(支撑OH用户态层运行的最基础代码)

OH内核态层 = 标准LTS Linux内核 + 三方SoC芯片平台代码 + OH内核态基础代码 + OH内核态特性
在这里插入图片描述
根据图片我们不难发现OH内核态层能够通过两种方法实现

  • OH内核态层 = 三方Linux内核 + OH内核态基础代码 + OH内核态特性(如HDF,今后的HMDFS等)
  • OH内核态层 = OH Linux内核 + OH内核态特性(如HDF,今后的HMDFS等)

但是我们知道直接是同OH Linux内核 支持的第三方芯片不够丰富,我们可以借助已经有的第三方Linux内核来移植OpenHarmony

内核态的基础代码移植

目前OH内核态的基础代码主要与日志服务相关,以轻量级内核为例,日志服务代码包含如下:

drivers/staging/hilogdrivers/staging/hievent

需要将上述目录下的代码从OpenHarmony内核代码目录kernel/linux/linux-4.19/drivers/staging中,拷贝到out/KERNEL_OBJ/kernel/src_tmp/linux-rpi3b/drivers/staging 下(加粗部分为某树莓派开发板的kernel目录)
好需要在Kconfig中配置好模块的加载,需要在drivers/staging/Kconfig文件内增加如下代码

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

必选特性HDF移植

执行如下命令打上HDF补丁

./patch_hdf.sh [工程根目录路径] [内核目录路径] [hdf补丁文件]#以树莓派为例# 进入树莓派kernel目录$PROJ_ROOT/drivers/adapter/khdf/linux/patch_hdf.sh \$PROJ_ROOT  # 指定工程根目录路径 \$PROJ_ROOT/out/KERNEL_OBJ/kernel/src_tmp/linux-rpi3b  # 打补丁的内核目录路径 \$PROJ_ROOT/kernel/linux/patches/linux-4.19/hi3516dv300_patch/hdf.patch  # HDF补丁文件

基本配置结束后,打开HDF的基本配置选项,可以通过在Kconfig中静态配置,也可以通过meauconfig去动态配置

# 需要配置的选项如下CONFIG_DRIVERS_HDF=yCONFIG_HDF_SUPPORT_LEVEL=2CONFIG_DRIVERS_HDF_PLATFORM=yCONFIG_DRIVERS_HDF_PLATFORM_MIPI_DSI=yCONFIG_DRIVERS_HDF_PLATFORM_GPIO=yCONFIG_DRIVERS_HDF_PLATFORM_I2C=yCONFIG_DRIVERS_HDF_PLATFORM_UART=yCONFIG_DRIVERS_HDF_TEST=y

接下来编译镜像文件即可

NICE