Alex Blog

[HailoRT]如何在android系统上编译并支持hailort(以RK3588为例)

编译具体步骤:

  1. 下载Rockchip SDK并确认内核编译成功:
    # 下载并确认Rockchip SDK内核源代码
    # 确保内核源代码在编译后可用
  2. 下载Android NDK (以Linux版本为例):
    # 下载Android NDK
    https://developer.android.com/ndk/downloads
  3. 下载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版本
  4. 设置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
  5. 在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"
  6. 交叉编译并验证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
  7. 验证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})

 


已发布

分类

,

来自

标签:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注