快速移植OpenHarmony Linux内核的方法

13 篇文章 3 订阅
5 篇文章 0 订阅

内核态与用户态

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/hilog
drivers/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=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

接下来编译镜像文件即可

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值