How to build and boot 64bit kernel for VIM3?

I see that currently VIM3 is using 32bit Kernel, Is there any documention to guide how to build and boot 64 bit kernel for VIM3?

VIM3 uses 64-bit kernel and either 64-bit or 32-bit userspace; Android, LE etc. use 32-bit userspace for compatibility with libwidevine and game emulators. The last Amlogic devices supporting 32-bit kernel were Meson 8 devices (before 2014) - since then everything is 64-bit.

3 Likes

But currently, VIM3 do not use 64bit kernel.

minle@minle-ThinkStation:~/work/VIM1/android-source/out/target/product/kvim3/obj/KERNEL_OBJ$ pwd
/home/minle/work/VIM1/android-source/out/target/product/kvim3/obj/KERNEL_OBJ
minle@minle-ThinkStation:~/work/VIM1/android-source/out/target/product/kvim3/obj/KERNEL_OBJ$ file vmlinux
vmlinux: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, BuildID[sha1]=dfc1879c3517ddf924107fb7f3d8338452af32ab, not stripped
minle@minle-ThinkStation:~/work/VIM1/android-source/out/target/product/kvim3/obj/KERNEL_OBJ$

You can modify the file ‘device/khadas/kvim3/device.mk’

diff --git a/kvim3/kvim3.mk b/kvim3/kvim3.mk
index ecc82aa..8f5188a 100644
--- a/kvim3/kvim3.mk
+++ b/kvim3/kvim3.mk
@@ -187,7 +187,7 @@ endif# PRODUCT_AML_SECURE_BOOT_VERSION3 := true
 #                           Kernel Arch
 #
 ########################################################################
-#KERNEL_A32_SUPPORT := false
+KERNEL_A32_SUPPORT := false
 ifndef KERNEL_A32_SUPPORT
 KERNEL_A32_SUPPORT := true
 endif

Hi,

I want to build the kvim3 kernel separately (not inside AOSP). When I use make uImage the generated uImage is different from one that is built on: out/target/product/kvim3/obj/KERNEL_OBJ/arch/boot/uImage

When I make boot file using:

out/host/linux-x86/bin/mkbootimg --second out/target/product/kvim3/kvim3.dtb --kernel out/target/product/kvim3/uImage --base 0x0 --cmdline "androidboot.dtbo_idx=0 --cmdline "root=/dev/mmcblk0p18" buildvariant=userdebug" --os_version 9 --os_patch_level 2018-08-05 --kernel_offset 0x1080000 --header_version 1 --output out/target/product/kvim3/boot.img

And flash this file using:
fastboot flash boot boot.img

The board does not load.

1- Why the generated uImage is different from the one generated by “make bootimage” in AOSP?
(diff arch/arm/boot/uImage …/out/target/product/kvim3/obj/KERNEL_OBJ/arch/arm/boot/uImage:
Binary files arch/arm/boot/uImage and …/out/target/product/kvim3/obj/KERNEL_OBJ/arch/arm/boot/uImage differ) While .config are same.

2- What is the reason that generated boot.img does not work?

Best,
Ehsan