鸿蒙hi3516内核打补丁及设备树

博主编译的hi3516小型系统,代码版本为3.2release

1、内核配置文件

内核配置文件是kernel.mk文件,它在根目录下kernel/linux/build目录中

$(DEFCONFIG_FILE):
	$(hide) echo ">>>>>> ___________________________ $(DEVICE_NAME)_$(BUILD_TYPE)_defconfig"
	$(hide) echo ">>>>>> ___________________________ $(DEVICE_PATCH_FILE)"
$(KERNEL_IMAGE_FILE):
	$(hide) echo "build kernel..."
ifeq ($(DEVICE_NAME),hispark_phoenix)
	$(hide) rm -rf $(KERNEL_SRC_TMP_PATH);mkdir -p $(KERNEL_SRC_TMP_PATH);cp -arfP $(KERNEL_SRC_PATH)/* $(KERNEL_SRC_TMP_PATH)/
	$(hide) cd $(KERNEL_SRC_TMP_PATH)/drivers && rm -rf common && ln -s $(SDK_SOURCE_DIR)/common/drv ./common && cd -
	$(hide) cd $(KERNEL_SRC_TMP_PATH)/drivers && rm -rf msp && ln -s $(SDK_SOURCE_DIR)/msp/drv ./msp && cd -
else
	$(hide) rm -rf $(KERNEL_SRC_TMP_PATH);mkdir -p $(KERNEL_SRC_TMP_PATH);cp -arfL $(KERNEL_SRC_PATH)/* $(KERNEL_SRC_TMP_PATH)/
endif
	$(hide) $(OHOS_BUILD_HOME)/drivers/hdf_core/adapter/khdf/linux/patch_hdf.sh $(OHOS_BUILD_HOME) $(KERNEL_SRC_TMP_PATH) $(KERNEL_PATCH_PATH) $(DEVICE_NAME)
     
ifeq ($(PRODUCT_PATH),vendor/hisilicon/watchos)
	$(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(PRODUCT_PATCH_FILE)
else
	$(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(DEVICE_PATCH_FILE)
endif 

ifneq ($(findstring $(BUILD_TYPE),small),)
	$(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(SMALL_PATCH_FILE)
endif

kernel.mk这个文件里面包含了你要编译的产品的干净的linux内核源码目录和打完补丁之后的内核源码目录。而且还有你编译的产品的参考config文件(DEFCONFIG_FILE)、补丁文件(DEVICE_PATCH_FILE)等,假如说不知道自己编译的产品的补丁包的位置在哪,可以在这个文件里面按照博主的方法将补丁包文件名和位置打印出来就行。因为在鸿蒙中所有的产品用的都是一套内核源码,编译不同的产品只需要将对于的各个补丁包按照规则打进去就可以了。博主之前只搞过海思的纯linux系统,对linux系统没有研究的这么多,对于这个打linux补丁的操作也是看了半天才明白一些。

博主编译的是hi3516小型系统,从打印可以看出来用的是hispark_taurus_small_defconfig这个config配置文件以及hispark_taurus.patch这个补丁包,如果你想看其他的信息,可以按照这个方法将信息打印出来,之后再对kernel做相应的更改即可。加上打印会报错,但是会把信心打印出来,看完之后再将打印注释掉即可,这个问题我并没有深究。

[OHOS ERROR] [205/4604] ACTION //kernel/linux/build:linux_kernel(//build/lite/toolchain:linux_x86_64_ohos_clang)
[OHOS ERROR] FAILED: obj/kernel/linux/build/linux_kernel_build_ext_components.txt 
[OHOS ERROR] /3.2.release/prebuilts/python/linux-x86/3.9.2/bin/python3 ../../../build/lite/build_ext_components.py --path=../../../kernel/linux/build --command=./kernel_module_build.sh\ /3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux\ small\ arm\ vendor/hisilicon/hispark_taurus_linux\ hispark_taurus\ linux-5.10 --target_dir=/3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux/obj/kernel/linux/build/build.log --out_dir=/3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux/error.log
[OHOS ERROR] echo ">>>>>> ___________________________ hispark_taurus_small_defconfig"
[OHOS ERROR] >>>>>> ___________________________ hispark_taurus_small_defconfig
[OHOS ERROR] echo ">>>>>> ___________________________ /3.2.release/kernel/linux/patches/linux-5.10/hispark_taurus_patch/hispark_taurus.patch"
[OHOS ERROR] >>>>>> ___________________________ /3.2.release/kernel/linux/patches/linux-5.10/hispark_taurus_patch/hispark_taurus.patch

2、内核补丁包

官方目录说明

kernel/linux/patches
├── linux-4.19				# linux-4.19 相关patch
│   ├── common_patch
│   │		└── hdf.patch		# linux-4.19 HDF patches
│   └── hi3516dv300_patch
│   		└── hi3516dv300.patch	# linux-4.19 Hi3516D V300 SOC patches
└── linux-5.10
    ├── common_patch
    │		└── hdf.patch		# linux-5.10 HDF patches
    └── hi3516dv300_patch
    │		└── hi3516dv300.patch	# linux-5.10 Hi3516D V300 SOC patches
    └── rkrk3568_patch
    		├── kernel.patch		# linux-5.10 rk3568 SOC patches
    		└── hdf.patch		# linux-5.10 rk3568 定制 HDF patches

根据上面的分析我编译的产品的补丁包是在这kernel/linux/patches/linux-5.10/hispark_taurus_patch/hispark_taurus.patch,那我们就打开补丁包看一下

diff --git a/arch/arm/boot/dts/hi3516dv300-demb.dts b/arch/arm/boot/dts/hi3516dv300-demb.dts
new file mode 100644
index 000000000..bbe67651e
--- /dev/null
+++ b/arch/arm/boot/dts/hi3516dv300-demb.dts
@@ -0,0 +1,270 @@
+/*
+ * Copyright (c) 2013-2014 Linaro Ltd.
+ * Copyright (c) 2015-2017 HiSilicon Technologies Co.,Ltd.
+ *
+ * This program is free software; you can redistribute  it and/or modify it
+ * under  the terms of  the GNU General  Public License as published by the
+ * Free Software Foundation;  either version 2 of the  License,or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not,see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/dts-v1/;
+#include "hi3516dv300.dtsi"
+#include "autoconf.h"
+
+/ {
+	model = "Hisilicon HI3516DV300 DEMO Board";
+	compatible = "hisilicon,hi3516dv300";
+
+	memory {
+		device_type = "memory";
+		reg = <0x82000000 0x20000000>;
+	};
+	firmware {
+		android {
+			compatible = "android,firmware";
+			fstab {
+				compatible = "android,fstab";
+				 // delete for system as root
+				   /*system {
+				   compatible = "android,system";
+				   dev = "/dev/block/platform/soc/f9830000.himciv200.MMC/by-name/system";
+				   type = "ext4";
+				   mnt_flags = "ro,barrier=1,inode_readahead_blks=8";
+				   fsmgr_flags = "wait";
+				   };*/
+				vendor {
+					compatible = "android,vendor";

从代码中可以看出来,最上面是用diff制作补丁的规则,下面就是补丁文件的内容了,从完整的hispark_taurus.patch来看整个补丁文件会将makefile、kconfig、.c、.h等一些hi3516平台的适配好的补丁打包进kernel。假如我们想修改内核的设备树、内核的源代码都可以在里面找到相应的代码做修改即可。

注意在修改添加代码的时候要按照diff制作补丁的规则将@@ -0,270 @@中行数按照你所添加的行数依次累加上去即可。

3、设备树

生成的设备树dtb文件及生成过程在out/hispark_taurus/ipcamera_hispark_taurus_linux/kernel/OBJ/linux-5.10/arch/arm/boot/dts目录

-rw-r--r-- 1 root root 16775 1月  24 22:12 hi3516dv300-demb.dtb
-rw-r--r-- 1 root root  2480 1月  24 22:12 .hi3516dv300-demb.dtb.cmd
-rw-r--r-- 1 root root    88 1月  24 22:12 .hi3516dv300-demb.dtb.d.dtc.tmp
-rw-r--r-- 1 root root   536 1月  24 22:12 .hi3516dv300-demb.dtb.d.pre.tmp
-rw-r--r-- 1 root root 24575 1月  24 22:12 .hi3516dv300-demb.dtb.dts.tmp
cmd_arch/arm/boot/dts/hi3516dv300-demb.dtb := mkdir -p arch/arm/boot/dts/; gcc -E -Wp,-MMD,arch/arm/boot/dts/.hi3516dv300-demb.dtb.d.pre.tmp -nostdinc -I/3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux/kernel/linux-5.10/scripts/dtc/include-prefixes -I./include/generated -I/3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux/kernel/linux-5.10/include/dt-bindings -undef -D__DTS__ -x assembler-with-cpp -o arch/arm/boot/dts/.hi3516dv300-demb.dtb.dts.tmp /3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux/kernel/linux-5.10/arch/arm/boot/dts/hi3516dv300-demb.dts ; ./scripts/dtc/dtc -O dtb -o arch/arm/boot/dts/hi3516dv300-demb.dtb -b 0 -i/3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux/kernel/linux-5.10/arch/arm/boot/dts/ -i/3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux/kernel/linux-5.10/scripts/dtc/include-prefixes -i./include/generated -i/3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux/kernel/linux-5.10/include/dt-bindings -Wno-interrupt_provider -Wno-unit_address_vs_reg -Wno-unit_address_format -Wno-avoid_unnecessary_addr_size -Wno-alias_paths -Wno-graph_child_address -Wno-simple_bus_reg -Wno-unique_unit_address -Wno-pci_device_reg  -d arch/arm/boot/dts/.hi3516dv300-demb.dtb.d.dtc.tmp arch/arm/boot/dts/.hi3516dv300-demb.dtb.dts.tmp ; cat arch/arm/boot/dts/.hi3516dv300-demb.dtb.d.pre.tmp arch/arm/boot/dts/.hi3516dv300-demb.dtb.d.dtc.tmp > arch/arm/boot/dts/.hi3516dv300-demb.dtb.d

source_arch/arm/boot/dts/hi3516dv300-demb.dtb := /3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux/kernel/linux-5.10/arch/arm/boot/dts/hi3516dv300-demb.dts

deps_arch/arm/boot/dts/hi3516dv300-demb.dtb := \
    $(wildcard include/config/arch/hisi/bvt/amp.h) \
    $(wildcard include/config/mtd.h) \
    $(wildcard include/config/hiedmacv310.h) \
  /3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux/kernel/linux-5.10/arch/arm/boot/dts/hi3516dv300.dtsi \
    $(wildcard include/config/hiedmac.h) \
    $(wildcard include/config/usb/drd0/in/host.h) \
    $(wildcard include/config/usb/drd0/in/device.h) \
  /3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux/kernel/linux-5.10/arch/arm/boot/dts/skeleton.dtsi \
  /3.2.release/out/hispark_taurus/ipcamera_hispark_taurus_linux/kernel/linux-5.10/include/dt-bindings/clock/hi3516dv300-clock.h \

arch/arm/boot/dts/hi3516dv300-demb.dtb: $(deps_arch/arm/boot/dts/hi3516dv300-demb.dtb)

$(deps_arch/arm/boot/dts/hi3516dv300-demb.dtb):

在.hi3516dv300-demb.dtb.cmd文件中可以看到dtb文件的生成过程,其中生成原料hi3516dv300-demb.dts、hi3516dv300.dtsi、skeleton.dtsi等包括头文件都可以在hispark_taurus.patch补丁包文件里面找到。

原文地址:https://blog.csdn.net/wobuzai11/article/details/135830895

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读1.4k次。被@Observed装饰的类,可以被观察到属性的变化;子组件中@ObjectLink装饰器装饰的状态变量用于接收@Observed装饰的类的实例,和父组件中对应的状态变量建立双向数据绑定。这个实例可以是数组中的被@Observed装饰的项,或者是class object中是属性,这个属性同样也需要被@Observed装饰。单独使用@Observed是没有任何作用的,需要搭配@ObjectLink或者@Prop使用。_鸿蒙ark对象数组
文章浏览阅读1k次。Harmony OS_harmonyos创建数据库
文章浏览阅读1.1k次,点赞25次,收藏23次。自定义组件Header.ets页面(子组件)//自定义组件@Component//组件声明private title:ResourceStr//接收的参数build(){Row() {index.ets(父组件)//导入自定义组件@Entry@Componentbuild() {Column() {/*** 1. 自定义组件调用-----自定义组件------* 2. 在调用的组件上设置样式*/ShopTitle({ title: '商品列表' })
文章浏览阅读952次,点赞11次,收藏25次。ArkUI是一套构建分布式应用界面的声明式UI开发框架。它使用极简的UI信息语法、丰富的UI组件、以及实时界面预览工具,帮助您提升移动应用界面开发效率30%。您只需使用一套ArkTS API,就能在Android、iOS、鸿蒙多个平台上提供生动而流畅的用户界面体验。_支持ios 安卓 鸿蒙next的跨平台方案
文章浏览阅读735次。​错误: 找不到符号符号: 变量 Layout_list_item位置: 类 ResourceTable_错误: 找不到符号 符号: 变量 resourcetable 位置: 类 mainabilityslice
文章浏览阅读941次,点赞23次,收藏21次。harmony ARKTS base64 加解密_鸿蒙 鸿蒙加解密算法库
文章浏览阅读860次,点赞21次,收藏24次。使用自定义布局,实现子组件自动换行功能。图1自定义布局的使用效果创建自定义布局的类,并继承ComponentContainer,添加构造方法。//如需支持xml创建自定义布局,必须添加该构造方法实现ComponentContainer.EstimateSizeListener接口,在onEstimateSize方法中进行测量。......@Override//通知子组件进行测量//关联子组件的索引与其布局数据idx++) {//测量自身。_鸿蒙javaui
文章浏览阅读917次,点赞25次,收藏25次。这里需要注意的是,真机需要使用华为侧提供的测试机,测试机中会安装纯鸿蒙的系统镜像,能够体验到完整的鸿蒙系统功能,纯鸿蒙应用目前还不能完美地在 HarmonyOS 4.0 的商用机侧跑起来。当前,真机调试需要使用华为侧提供的测试机,测试机中会安装纯鸿蒙的系统镜像,能够体验到完整的鸿蒙系统功能,纯鸿蒙应用目前还不能完美地在 HarmonyOS 4.0 的商用机侧跑起来。另外,由于样式的解析是基于组件文件的纬度的,因此样式文件只能应用于被其引用的组件文件中,而不能跨文件应用,并且样式文件也只支持类选择器。_鸿蒙 小程序
文章浏览阅读876次,点赞17次,收藏4次。2. HarmonyOS应用开发DevEcoStudio准备-1HUAWEI DevEco Studio为运行在HarmonyOS和OpenHarmony系统上的应用和服务(以下简称应用/服务)提供一站式的开发平台。
文章浏览阅读811次。此对象主要映射JSON数组数据,比如服务器传的数据是这样的。_arkts json
文章浏览阅读429次。鸿蒙小游戏-数字华容道_华为鸿蒙手机自带小游戏
文章浏览阅读1.1k次,点赞24次,收藏19次。Ability是应用/服务所具备的能力的抽象,一个Module可以包含一个或多个Ability。
文章浏览阅读846次。本文带大家使用MQTT协议连接华为IoT平台,使用的是E53_IA1 智慧农业扩展板与 BearPi-HM_Nano 开发主板_mqtt 如何对接第三方iot平台
文章浏览阅读567次。HarmonyOS_arkts卡片
文章浏览阅读1k次,点赞19次,收藏20次。ArkTS开发鸿蒙OS连接mongoDB(后端node.js)2024最新教程
文章浏览阅读1.2k次,点赞23次,收藏15次。HarmonyOS与OpenHarmony(1)本质上的不同是:HarmonyOS是鸿蒙操作系统,而OpenHarmony则是从开源项目。这里可以联想一下Android,比如小米手机在Android开源系统的基础上开发了MIUI的手机操作系统,HarmonyOS就类似于MIUI,OpenHarmony类似Android基础底座。(2)HarmonyOS:是双框架,内聚了AOSP(Android Open Source Project )和OpenHarmony等。_鸿蒙模拟器开了怎么跑代码
文章浏览阅读1.1k次,点赞21次,收藏21次。鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Navigation组件。
文章浏览阅读2k次。由于之前的哥们匆忙离职了,所以鸿蒙手表项目的新版本我临时接过来打包发布,基本上之前没有啥鸿蒙经验,但是一直是做Android开发的,在工作人员的指导下发现打包配置基本上和Android一样,所以这些都不是问题,这里记录一下使用过程中遇到的问题。!过程和遇到的问题基本上都讲解了,关机睡觉,打卡收工。_鸿蒙系统adb命令
文章浏览阅读7.3k次,点赞9次,收藏29次。39. 【多选题】_column和row容器中,设置子组件在主轴方向上的对齐格式
文章浏览阅读1.1k次,点赞13次,收藏24次。18.鸿蒙HarmonyOS App(JAVA)日期选择器-时间选择器点击button按钮显示月份与获取的时间。_harmonyos农历获取