编译具体步骤:
- 下载Rockchip SDK并确认内核编译成功:
# 下载并确认Rockchip SDK内核源代码
# 确保内核源代码在编译后可用
- 下载Android NDK (以Linux版本为例):
# 下载Android NDK
https://developer.android.com/ndk/downloads
- 下载Hailort-driver源码:
git clone https://github.com/hailo-ai/hailort-drivers.git
# 或指定要下载的版本
git clone --depth 1 -b v4.xx.x https://github.com/hailo-ai/hailort-drivers.git
git -C hailort-drivers/ log -1 # 确认下载的Hailort-Driver版本
- 设置NDK环境变量并交叉编译HailoRT PCI驱动:
export NDK=/opt/android-ndk-r26b
export PATH=$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
export KERNEL_DIR=/opt/RK3588_Android12.0/kernel-5.10
# 在hailort-driver源码目录hailort-drivers/linux/pcie 编译驱动程序
$NDK/prebuilt/linux-x86_64/bin/make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 all
# 检查是否构建了 hailo_pci.ko
file hailo_pci.ko
# 下载 Hailo8 固件
../../download_firmware.sh
- 在RK设备上安装Hailort驱动:
# 将文件复制到设备上
adb root
adb remount
adb shell "mkdir -p /vendor/etc/firmware/hailo/"
adb push hailo8_fw.4.xx.0.bin /vendor/etc/firmware/hailo/hailo8_fw.bin
adb push hailo_pci.ko /vendor/lib/modules/
# 确保 init.insmod.cfg 包含 hailo_pci 的 insmod
adb shell "echo 'insmod /vendor/lib/modules/hailo_pci.ko' >> /vendor/etc/init.insmod.cfg"
- 交叉编译并验证Hailort:
# 下载 HailoRT 源代码
git clone https://github.com/hailo-ai/hailort.git
# 修改hailort目录中的CMakeLists.txt 以进行交叉编译
# 修改内容见最后部分...
# 编译 Hailort
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release
cmake --build build --config release
- 验证Hailort:
# 将编译的文件复制到设备上
adb push libhailort.so /vendor/lib64/
adb push hailortcli /vendor/bin/
# 在设备上运行命令以验证 Hailort
adb root
adb remount
adb shell
hailortcli scan
hailortcli fw-control identify
hailortcli run resnet_v1_18.hef
CMakeLists.txt 修改内容:
# 设置Android平台信息
set(ANDROID_PLATFORM android-21) # 根据需要调整API级别
set(ANDROID_ABI arm64-v8a) # 目标ARM架构,根据需要调整
# 指定Android NDK路径
set(ANDROID_NDK /opt/android-ndk-r26b) # 根据实际NDK路径调整
# 设置用于Android的工具链文件
set(CMAKE_TOOLCHAIN_FILE ${ANDROID_NDK}/build/cmake/android.toolchain.cmake)
# 指定Android架构
set(CMAKE_ANDROID_ARCH_ABI ${ANDROID_ABI})
# 指定Android平台版本
set(ANDROID_PLATFORM_VERSION ${ANDROID_PLATFORM})
发表回复