1、下载gcc 10.3编译工具

rk3588 4.0release 内核版本使用的gcc 7.5 版本编译,而kasan 版本编译需要gcc8.6以上版本,所以需要先下载高版本gcc 编译工具.

下载链接如下:stability_testing_tools/tools/rk3588_kasan · 拉瓦尔空间/Laval_tools - 码云 - 开源中国 (gitee.com)

说明:该10.3版本由瑞星微提供,使用外部gcc版本编译存在不开机的情况。

2、将kasan_device.patch 打到device\board\hihope\ 目录。

kasan_device.patch 下载链接:stability_testing_tools/tools/rk3588_kasan · 拉瓦尔空间/Laval_tools - 码云 - 开源中国 (gitee.com)

该patch主要修改如下:

2.1、内核配置文件增加kasan编译配置文件 :

路径:dayu210/kernel/kernel_config/linux-5.10/arch/arm64/rk3588_standard_defconfig

修改:

	#kasan
	CONFIG_KASAN=y
	CONFIG_KASAN_GENERIC=y
	CONFIG_SECTION_MISMATCH_WARN_ONLY=y
	CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
	CONFIG_HAVE_ARCH_KASAN=y
	CONFIG_FRAME_WARN=0
	CONFIG_CC_HAS_KASAN_GENERIC=y

2.2、内核编译文件增加参数消除编译报错:

路径:dayu210/kernel/kernel_patch/linux-5.10/dayu210_patch/kernel.patch

KBUILD_CFLAGS += -Wno-unused-function -Wno-unused-variable -Wno-implicit-fallthrough -mno-outline-atomics

2.3、make-boot.sh 编译脚本中增加block_size大小,消除编译报错:

路径:/dayu210/kernel/make-boot.sh

block_size=$((${IMAGE_SIZE} * 1024 * 1024 * 2 / ${blocks}))

2.4、make-ohos.sh 修改GCC的版本

路径: dayu210/kernel/make-ohos.sh

MAKE="make CROSS_COMPILE=../../../../prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-"

2.5、调整boot.img 分区大小解决烧录失败

路径: /dayu210/loader/parameter.txt 

          CMDLINE:mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(misc),0x00001000@0x00006000(bootctrl),0x00003000@0x00007000(resource),0x00040000@0x0000A000(boot_linux:bootable),0x00002000@0x0004A000(ramdisk),0x00400000@0x0004C000(system),0x00200000@0x0044C000(vendor),0x00019000@0x0064B000(sys-prod),0x00019000@0x00664000(chip-prod),0x0000a000@0x0067E000(updater),0x00400000@0x00687000(userdata:grow)

3.将kasan_kernel.patch 打到kernel\linux\linux-5.10 目录 

patch 下载地址:stability_testing_tools/tools/rk3588_kasan · 拉瓦尔空间/Laval_tools - 码云 - 开源中国 (gitee.com)

主要修改如下:

     3.1、/arch/arm64/mm/  目录下增加测试文件 kasan_test.c 用于测试版本ksan检测是否生效 【仅用于测试版本功能是否正常,正式压测版本不用添加】
     3.2、arch/arm64/mm/Makefile  中添加测试文件的编译   【仅用于测试版本功能是否正常,正式压测版本不用添加】
            +obj-$(CONFIG_KASAN)        += kasan_init.o kasan_test.o
     3.3、arch/arm64/mm/kasan_init.c 中添加多次检测模式设置:
            +    kasan_save_enable_multi_shot();

4.删除out 目录在整编项目

说明:必须删除out目录后整编项目,否者部分修改不生效。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐