openharmony内核学习[1]--单独编译openharmony标准系统内核(代码片段)

author author     2023-02-03     270

关键词:

内核是操作系统的核心,学习掌握OpenHarmony内核对于开发人员至关重要。笔者整理学习OpenHarmony标准系统内核笔记如下:

  • 阅读本文大约需要15分钟。 (目录)

OpenHarmony标准系统内核

  • OpenHarmony标准系统类设备(参考内存≥128MiB),OpenHarmony选择Linux内核作为标准系统内核。
  • OpenHarmony标准系统从Linux内核LTS版本中选择合适的版本作为内核的基础版本,目前已完成对Linux-4.19及Linux-5.10的适配及支持。
  • OpenHarmony的Linux内核基于开源Linux内核LTS 4.19.y / 5.10.y 分支演进,在此基线基础上,回合CVE补丁及OpenHarmony特性,作为OpenHarmony Common Kernel基线。针对不同的芯片,各厂商合入对应的板级驱动补丁,完成对OpenHarmony的基线适配。

    • Linux社区LTS 4.19.y分支信息请查看kernel官网
    • Linux社区LTS 5.10.y分支信息请查看kernel官网
    • 内核的Patch组成模块,在编译构建流程中,针对具体芯片平台,合入对应的架构驱动代码,进行编译对应的内核镜像。所有补丁来源均遵守GPL-2.0协议。
  • 目前OpenHarmony Beta3使用的内核版本为5.10.93,Beta4使用的内核版本为5.10.97

OpenHarmony标准系统内核源码目录

单独编译OpenHarmony标准系统内核(以rk3568为例)

  • 笔者编译环境:wsl2+Ubuntu18.04+OpenHarmony Beta3源码
  • 首先在out/kernel/src_tmp/linux-5.10目录下打开终端执行如下语句:
# 配置编译环境变量
export PRODUCT_COMPANY=hihope
export DEVICE_COMPANY=rockchip
export DEVICE_NAME=rk3568
export KBUILD_OUTPUT=…/…/OBJ/linux-5.10/
./make-ohos.sh TB-RK3568X0
# ./make-ohos.sh TB-RK3568X10也是可以的,但是笔者不太清楚这个是用来干啥的

单独编译结果

结果是在如下目录下生成resource.img内核镜像和boot_linux.img

  • /home/jiajiahao/ohos3.2beta3/sources/out/kernel/OBJ/linux-5.10/resource.img

  • home\\jiajiahao\\ohos3.2beta3\\sources\\out\\kernel\\src_tmp\\linux-5.10\\boot_linux.img

重新编译OpenHarmony标准系统内核

  • 删除源码下out目录
rm -rf out
  • 然后重新编译出全部的镜像文件

知识附送

  • 编译rk64位: 用DevEco Device Tool工具可以编译64位的镜像

  • 安装最新依赖包:

for one_tools in curl -s -k https://gitee.com/landwind/openharmony_oneclick_env_init/raw/master/apt_install.list;do sudo bash -c "apt-get install -y $one_tools"; done
  • OpenHarmony环境重置
安装依赖包: unix_time=`date +%s`;for one_tools in `curl -s -k https://gitee.com/landwind/openharmony_oneclick_env_init/raw/master/apt_install.list`;do echo "apt-get install -y $one_tools">>/tmp/openharmony_deps_$unix_time.sh; done;sudo apt-get update;sudo bash -x /tmp/openharmony_deps_$unix_time.sh
删除out: rm -rf out
重置工作区,删除所有修改(记得备份你的代码): repo forall -c "pwd;git reset --hard; git clean -fd"
更新最新代码: repo sync -c -j8; repo forall -c "pwd;git lfs install;git lfs pull"
执行prebuilts下载脚本: bash build/prebuilts_download.sh

本文作者:离北况归

想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com/#bkwz​

内核配置与编译,内核移植

                 内核配置与编译一、内核清除  当我们拿到内核第一步需要做的就是先对内核进行清理,防止别人配置编译生成的中间文件对我们产生影响:  1.配置过程生成的.config  2.编译生成bzIm... 查看详情

openharmony标准系统内核学习cpu轻量级隔离特性(代码片段)

(目录)CPU轻量级隔离特性基本概念CPU轻量级隔离特性提供了根据系统负载和用户配置来选择合适的CPU进行动态隔离的能力。内核会将被隔离CPU上的任务和中断迁移到其他合适的CPU上执行被隔离的CPU会进入ilde状态,以此来达到功耗... 查看详情

linux内核学习之路_1_编译linux内核(代码片段)

1.准备工作1.1学习环境1.2下载Linux内核源码1.3解压Linux内核1.4目录结构介绍1.2.2Linux内核配置1.1学习环境本系列教程使用的环境如下:操作系统版本:Linuxubuntu18.04Linux内核版本:cat/proc/versionLinuxversion4.15.0-20-generic(buildd@... 查看详情

.o如何嵌入kernel

参考技术A一般可以通过两种方式嵌入kernel:1.使用内核模块(KernelModule):将需要嵌入内核的代码编译成模块,然后在内核中加载该模块,并调用其函数。2.编译内核:将函数的实现源文件添加到内核代码中,然后编译重新编译... 查看详情

使用itop4412开发板单独编译驱动模块

上面我们的驱动是放在了内核源码的目录下来实现的编译成驱动模块,很多时候我们都是拿到一个驱动源码,不需要把他放到内核源码里面,而是直接把他编译成驱动模块,下面我们来讲下实现方法,我们还是以蜂鸣器的驱动为... 查看详情

嵌入式ai全志xr806openharmony鸿蒙系统固件编译(代码片段)

 欢迎关注我的公众号[极智视界],回复001获取Google编程规范 O_o >_< o_O O_o ~_~ o_O 大家好,我是极智视界,本教程详细记录了全志XR806OpenHarmony鸿蒙系统固件编译的方法。 XR806是全志科技旗下子公司广州... 查看详情

鸿蒙内核源码分析(挂载目录篇)|为何文件系统需要挂载|百篇博客分析openharmony源码|v65.01(代码片段)

百篇博客系列篇.本篇为:v65.xx鸿蒙内核源码分析(挂载目录篇)|为何文件系统需要挂载|51.c.h.o文件系统相关篇为:v62.xx鸿蒙内核源码分析(文件概念篇)|为什么说一切皆是文件|51.c.h.ov63.xx鸿蒙内核源码分析(文件系统篇)|用图书管理说文... 查看详情

#盲盒+码##跟着小白一起学鸿蒙#如何编译openharmony自带app(代码片段)

如何编译OpenHarmony自带APP作者:王石概述OpenHarmony的主干代码是开源社区的重要学习资源,对于想进行应用开发和熟悉OpenHarmony能力的同学主干代码是非常重要的资源,在主干代码的applications目录里聚集了很多原生的应用实现,那... 查看详情

单独编译内核模块(代码片段)

前言在开发和调试某个内核模块时,如果采用整体编译内核的方式,那效率就太低了。我们通常采用单独编译的方式进行。step1拷贝内核模块到workspace,以英特尔以太网卡驱动drivers/net/ethernet/intel/为例cplinux-5.13/drivers/n... 查看详情

鸿蒙内核源码分析(索引节点篇)|谁是文件系统最重要的概念|百篇博客分析openharmony源码|v64.01(代码片段)

百篇博客系列篇.本篇为:v64.xx鸿蒙内核源码分析(索引节点篇)|谁是文件系统最重要的概念|51.c.h.o文件系统相关篇为:v62.xx鸿蒙内核源码分析(文件概念篇)|为什么说一切皆是文件|51.c.h.ov63.xx鸿蒙内核源码分析(文件系统篇)|用图书管理... 查看详情

鸿蒙内核源码分析(文件系统篇)|用图书管理说文件系统|百篇博客分析openharmony源码|v63.01(代码片段)

百篇博客系列篇.本篇为:v63.xx鸿蒙内核源码分析(文件系统篇)|用图书管理说文件系统|51.c.h.o文件系统相关篇为:v62.xx鸿蒙内核源码分析(文件概念篇)|为什么说一切皆是文件|51.c.h.o本篇讲一个大型图书馆的管理方案,来说清楚计算机... 查看详情

linux单独编译一个模块(模块已存在)

 以编译netfilterlog模块为例,内核目录为linux-3.18.91.确认所编译模块在.config中的配置参数,可以通过makemenuconfig查看,在linux-3.18.9/net/netfilter/Makefile中为:    obj-$(CONFIG_NETFILTER_XT_TARGET_LOG)+=xt_LOG.o通过 查看详情

openharmony源码编译与下载(代码片段)

开发环境:开发系统:Ubuntu20.04开发板:Pegasus物联网开发板MCU:Hi3861OpenHarmony版本:3.0.1-LTS3.1OpenHarmony源码编译Pegasus物联网开发板基于华为海思Hi3861芯片,对应的产品名字是wifiiot_hispark_pegasus。接下来编译wi... 查看详情

openharmony源码编译与下载(代码片段)

开发环境:开发系统:Ubuntu20.04开发板:Pegasus物联网开发板MCU:Hi3861OpenHarmony版本:3.0.1-LTS3.1OpenHarmony源码编译Pegasus物联网开发板基于华为海思Hi3861芯片,对应的产品名字是wifiiot_hispark_pegasus。接下来编译wi... 查看详情

内核启动流程(代码片段)

1.链接脚本        liteos_a的链接脚本路径如下:OpenHarmony/kernel/liteos_a/tools/build/liteos_llvm.ld        链接脚本的内容如下:ENTRY(reset_vector)INCLUDEboard.ldINPUT(libuserinit.O)SECTIONS#各种段定义,此处全部省 查看详情

鸿蒙内核源码分析(管道文件篇)|如何降低数据流动成本|百篇博客分析openharmony源码|v70.01(代码片段)

百篇博客系列篇.本篇为:v70.xx鸿蒙内核源码分析(管道文件篇)|如何降低数据流动成本|51.c.h.o文件系统相关篇为:v62.xx鸿蒙内核源码分析(文件概念篇)|为什么说一切皆是文件|51.c.h.ov63.xx鸿蒙内核源码分析(文件系统篇)|用图书管理说文... 查看详情

openharmony编译构建系统详解,从零搭建windows下开发环境,巨方便!(代码片段)

自从OpenHarmony更新了dev-tool,就可以在windows下构建鸿蒙(轻量型)系统了,这对于进行MCU开发的朋友们,学习鸿蒙OS会友好许多!我们可以更快的构建出系统,方便快速学习和验证。不过关于这个开发环... 查看详情

嵌入式ai全志xr806openharmony鸿蒙系统固件烧录(代码片段)

 欢迎关注我的公众号[极智视界],回复001获取Google编程规范 O_o >_< o_O O_o ~_~ o_O 大家好,我是极智视界,本教程详细记录了全志XR806OpenHarmony鸿蒙系统固件烧录的方法。 在上一篇文章《【嵌入式AI】全... 查看详情