How can i build 32-bit android Oreo for Hikey960?

Hi, I have a question.

I want to build a 32bit Android system to compare the performance of 32bit and 64bit.
so i referenced and copied hikey32 config file to Hikey960 config.

but, there’s a lot of error in boot time. System cannot run servicemanager, and show this err message on logcat.




01-01 00:00:18.422 2076 2076 E hw-ProcessState: Binder driver protocol(8) does not match user space protocol(7)!
01-01 00:00:18.423 2076 2076 E hw-ProcessState: Binder ioctl to set max threads failed: Bad file descriptor
01-01 00:00:18.423 2076 2076 E hw-ProcessState: Binder driver could not be opened. Terminating.
01-01 00:00:18.423 2076 2076 E hw-ProcessState: Binder ioctl to set max threads failed: Bad file descriptor
01-01 00:00:18.425 2076 2076 E hw-ProcessState: Binder ioctl to become context manager failed: Bad file descriptor
01-01 00:00:18.445 2094 2094 I gatekeeperd: Starting gatekeeperd…
01-01 00:00:18.445 2094 2094 E ProcessState: Binder driver protocol(8) does not match user space protocol(7)! ioctl() return value: 0



How can i build 32-bit Oreo for hikey 960?
is 32-bit Android system require a 32bit kernel?

Thank you.

@ric96 Any insight on this one?

A 32bit AOSP build would still have a 64bit kernel, that is what the TARGET_USES_64_BIT_BINDER := true option is for.

Can you also post the new .mk file you created for 32bit build?

This is new modified .mk file in /device/linaro/hikey/hikey960/BoardConfig.mk
and Bold line is changed or added line.

include device/linaro/hikey/BoardConfigCommon.mk

TARGET_BOOTLOADER_BOARD_NAME := hikey960
TARGET_BOARD_PLATFORM := hikey960

#FOR 32
TARGET_ARCH := arm
TARGET_ARCH_VARIANT := armv7-a-neon
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_CPU_VARIANT := generic

TARGET_USES_32_BIT_BINDER :=true
TARGET_USES_64_BIT_BINDER := false
TARGET_SUPPORTS_32_BIT_APPS := true
TARGET_SUPPORTS_64_BIT_APPS := false

TARGET_CPU_VARIANT := cortex-a73
TARGET_2ND_CPU_VARIANT := cortex-a73

TARGET_NO_DTIMAGE := false

BOARD_KERNEL_CMDLINE := androidboot.hardware=hikey960 console=ttyFIQ0 androidboot.console=ttyFIQ0
BOARD_KERNEL_CMDLINE += firmware_class.path=/system/etc/firmware loglevel=15
ifneq ($(TARGET_SENSOR_MEZZANINE),)
BOARD_KERNEL_CMDLINE += overlay_mgr.overlay_dt_entry=hardware_cfg_$(TARGET_SENSOR_MEZZANINE)
endif
BOARD_MKBOOTIMG_ARGS := --base 0x0 --tags_offset 0x07a00000 --kernel_offset 0x00080000 --ramdisk_offset 0x07c00000

BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2768240640 # 2640MB
BOARD_USERDATAIMAGE_PARTITION_SIZE := 25769803776 # 24GB
BOARD_CACHEIMAGE_PARTITION_SIZE := 8388608 # 8MB
BOARD_FLASH_BLOCK_SIZE := 512

@jstultz any ideas on this?

I’ve not tinkered much with 32bit only, though I know @pundiramit and @vishal-bhoj have experience from back in the day. I’d also take a look at the hikey32-userdebug lunch target in hikey32/BoardConfig.mk.

1 Like

Thank you for reply guys. please let me know, if you have any ideas