大家好,
我最近在尝试在飞腾d2000(arm64)上运行 鸿蒙OS。目前鸿蒙OS的驱动(hi_osal.ko, hi3516cv500_hdmi.ko, hifb.ko等, hdf.patch, hi3516dv300.patch)是否支持arm64?
Docker 编译rootfs: root@653b7eb4d81d:/home/openharmony# ./build.sh --product-name Hi3516DV300
编译 鸿蒙 rootfs时候,默认会编译 linux-5.10-stable最新的版本(当前为5.10.57)。编译时候使用ARCH=arm.
但是飞腾的ARCH为arm64. 所以在飞腾(ft-d2000 4核)上运行鸿蒙系统时, rootfs 里 vendor目录下得.ko模块无法插入到arm64的内核当中。
amos@osv:~/linux-5.10.57$ file arch/arm/boot/compressed/vmlinux
arch/arm/boot/compressed/vmlinux: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped
amos@osv:~/linux-5.10.57$ file arch/arm/boot/zImage
arch/arm/boot/zImage: Linux kernel ARM boot executable zImage (little-endian)
amos@osv:~/linux-5.10.57$ file arch/arm/boot/Image
arch/arm/boot/Image: data
amos@osv:~/linux-5.10.57$ file arch/arm64/boot/Image
arch/arm64/boot/Image: MS-DOS executable PE32+ executable (EFI application) Aarch64 (stripped to external PDB) Mono/.Net assembly, for MS Windows
amos@osv:~/linux-5.10.57$ file arch/arm64/boot/Image.gz
arch/arm64/boot/Image.gz: gzip compressed data, max compression, from Unix, original size modulo 2^32 39156224
amos@osv:~/linux-5.10.57$
root@osv:/mnt/3h/oh3lts# file out/ohos-arm-release/sdk_linux/src_tmp/ko/hi_osal.ko out/ohos-arm-release/packages/phone/vendor/modules/hi_osal.ko
out/ohos-arm-release/sdk_linux/src_tmp/ko/hi_osal.ko: ELF 32-bit LSB relocatable, ARM, EABI5 version 1 (SYSV), BuildID[sha1]=6b4bb478094f11d3844b4142b24b92fbd04848a8, not stripped
out/ohos-arm-release/packages/phone/vendor/modules/hi_osal.ko: ELF 32-bit LSB relocatable, ARM, EABI5 version 1 (SYSV), BuildID[sha1]=6b4bb478094f11d3844b4142b24b92fbd04848a8, not stripped
root@osv:/mnt/3h/oh3lts#
我尝试使用ARCH=arm64编译鸿蒙系统,错误很多。目测把鸿蒙编译链和hdf等patch移植到arm64的工作量不小。
root@653b7eb4d81d:/home/openharmony# ./build.sh --product-name Hi3516DV300
++++++++++++++++++++++++++++++++++++++++
2022-03-24 12:19:33
--product-name Hi3516DV300
build standard system...
---------------------------------------
--product-name Hi3516DV300 --device-name hi3516dv300 --target-os ohos --target-cpu arm64
build_ohos_cmd: build/build_scripts/build_ohos.sh product_name=Hi3516DV300 target_os=ohos target_cpu=arm64 gn_args=is_standard_system=true build_target=images
++++++++++++++++++++++++++++++++++++++++
2022-03-24 12:19:33
product_name=Hi3516DV300 target_os=ohos target_cpu=arm64 gn_args=is_standard_system=true build_target=images
pre_process
Python 3.8.5
OPTIONS=product_name
PARAM=Hi3516DV300
-------------------
OPTIONS=target_os
PARAM=ohos
-------------------
OPTIONS=target_cpu
PARAM=arm64
-------------------
OPTIONS=gn_args
PARAM=is_standard_system=true
-------------------
OPTIONS=build_target
PARAM=images
-------------------
product_name=Hi3516DV300 target_os=ohos target_cpu=arm64 gn_args=is_standard_system=true build_target=images
root_out_dir=//out/ohos-arm64-release
root_build_dir=//out/ohos-arm64-release
root_gen_dir=//out/ohos-arm64-release/gen
current_toolchain=//build/toolchain/ohos:ohos_clang_arm64
host_toolchain=//build/toolchain/linux:clang_x64
args: Namespace(build_platform_name='phone', build_xts=False, example_subsystem_file=None, gn_root_out_dir='/home/openharmony/out/ohos-arm64-release', ignore_api_check=['xts', 'common', 'subsystem_examples'], platforms_config_file='/home/openharmony/out/build_configs/standard_system/platforms.build', scalable_build=False, source_root_dir='/home/openharmony/', subsystem_config_file='/home/openharmony/out/build_configs/subsystem_config.json', target_cpu='arm64', target_os='ohos')
build configs generation is complete.
build_l2 = false
OHOS_PROFILER_DIR = //developtools/profiler/
OHOS_PROFILER_3RDPARTY_DIR = //third_party/
OHOS_PROFILER_3RDPARTY_GRPC_DIR = //third_party//grpc
OHOS_PROFILER_3RDPARTY_PROTOBUF_DIR = //third_party//protobuf
OHOS_PROFILER_3RDPARTY_GOOGLETEST_DIR //third_party//googletest
build_tests = false
enable_debuginfo = false
enable_coverage = false
product_name : , Hi3516DV300
hi3516dv300_group in
arm64
buffer manager use target:
platform: ohos
platform: ohos
....
....
---- MPP_CFLAGS=-Wall -fsigned-char -DHI_RELEASE -DVER_X=1 -DVER_Y=0 -DVER_Z=0 -DVER_P=1 -DVER_B=10 -DUSER_BIT_32 -DKERNEL_BIT_32 -I/home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/mpp/./../osal/include -I/home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/mpp/./../mpp/include -I/home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/mpp/./../mpp/include/adapt -I/home/openharmony//third_party/bounds_checking_function/include -Wno-date-time
make[4]: Entering directory '/home/openharmony/out/KERNEL_OBJ/kernel/src_tmp/linux-5.10'
---- SDK_PATH=/home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/mpp/./.. , PARAM_FILE=./Makefile.param
---- KERNEL_ROOT=/home/openharmony//out/KERNEL_OBJ/kernel/src_tmp/linux-5.10
make[4]: Entering directory '/home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/interdrv/common/cipher/src'
make[5]: Entering directory '/home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/interdrv/common/cipher/mbedtls_prepare'
make[4]: Entering directory '/home/openharmony/out/KERNEL_OBJ/kernel/src_tmp/linux-5.10'
CC [M] /home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_vmalloc.o
CC [M] /home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_fileops.o
CC [M] /home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_debug.o
clang-10: error: unknown argument: '-mapcs'
clang-10: error: unknown argument: '-mno-sched-prolog'
CC [M] /home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_atomic.o
CC [M] /home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_init.o
CC [M] /home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_addr.o
clang-10: error: unknown argument: '-mapcs'
clang-10: error: unknown argument: '-mno-sched-prolog'
clang-10: error: unknown argument: '-mapcs'
clang-10: error: unknown argument: '-mno-sched-prolog'
CC [M] /home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_barrier.o
clang-10: error: unknown argument: '-mapcs'
clang-10: error: unknown argument: '-mno-sched-prolog'
clang-10: error: unknown argument: '-mapcs'
clang-10: error: unknown argument: '-mapcs'
clang-10: error: unknown argument: '-mno-sched-prolog'
scripts/Makefile.build:280: recipe for target '/home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_atomic.o' failed
make[3]: *** [/home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_atomic.o] Error 1
make[3]: *** Waiting for unfinished jobs....
CC [M] /home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_proc.o
clang-10: error: unknown argument: '-mno-sched-prolog'
CC [M] /home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_wait.o
CC [M] /home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_semaphore.o
clang-10: error: unknown argument: '-mapcs'
CC [M] /home/openharmony/out/ohos-arm64-release/sdk_linux/src_tmp/src/osal/linux/osal_schedule.