设备检测与升级验证
本节用于在完成驱动安装和固件升级后,通过示例程序验证设备驱动与固件是否正常加载,并获取设备基础信息与运行状态。
执行以下步骤进行升级检查:
在主机端创建
device_check文件夹:mkdir -p device_check
复制设备信息获取示例源码到
device_check目录下。设备信息获取可直接使用后摩提供的hm_sys_info_examples.c示例代码。cd /path/to/houmo-drv-xh2/hal/export/samples scp hm_sys_info_examples.c /path/to/device_check/
在
device_check目录下创建一个CMake构建脚本,用于在主机端编译生成可执行文件。示例文件名为 CMakeLists.txt。参数设置及说明,参看 创建构建脚本。需在
add_executable中设置目标可执行文件名称为device_check,并且绑定本示例源码文件hm_sys_info_examples.c。需在
target_link_libraries中设置目标可执行文件名称为device_check。cmake_minimum_required(VERSION 3.16) set(CMAKE_TOOLCHAIN_FILE ${ANDROID_NDK}/build/cmake/android.toolchain.cmake) project(IpuTest) # 设置C++标准 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") # Android特定配置 - 需通过命令行传入ANDROID_NDK路径 if(NOT ANDROID_NDK) message(FATAL_ERROR "请通过-DANDROID_NDK=指定NDK路径") endif() # 设置Android平台和架构 if(NOT ANDROID_PLATFORM) set(ANDROID_PLATFORM android-24) # 最低支持Android 7.0 endif() if(NOT ANDROID_ABI) set(ANDROID_ABI arm64-v8a) # 默认编译ARM64架构 endif() # Android平台配置 set(ANDROID_STL c++_shared) # 使用共享STL set(ANDROID_USE_LEGACY_TOOLCHAIN_FILE FALSE) # 设置库文件名称和搜索路径(Android平台) set(HAL_LIBRARY_NAMES hal_xh2a) set(LIB_SEARCH_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/../lib/android/${ANDROID_ABI}/ # 按架构区分的库路径 ${CMAKE_CURRENT_SOURCE_DIR}/../lib/android/ # 通用Android库路径 ) set(CMAKE_FIND_LIBRARY_SUFFIXES .so .a) # Android常用库后缀 # 直接指定库文件绝对路径,替换所有 find_library 相关代码 set(HAL_LIBRARY /path/to/houmo-drv-xh2/hal/lib/libhal_xh2a.so) if(NOT EXISTS ${HAL_LIBRARY}) message(FATAL_ERROR "HAL库不存在:${HAL_LIBRARY}") endif() message(STATUS "找到HAL库: ${HAL_LIBRARY}") # 包含头文件目录 include_directories(${CMAKE_CURRENT_SOURCE_DIR}) # 添加可执行文件 add_executable(device_check hm_sys_info_examples.c) # 链接库文件 target_link_libraries(device_check PRIVATE ${HAL_LIBRARY})在
device_check目录下创建编译脚本,如compile.sh。用于执行交叉编译流程。建议直接复用镜像升级流程中的编译脚本。从系统软件包的
/path/to/houmo-drv-xh2/hal/export/include目录复制hm_sys.h和hm_api.h到device_check目录下:cd /path/to/houmo-drv-xh2/hal/export/include scp hm_api.h hm_sys.h ../../../../device_check/
从系统软件包的
/path/to/houmo-drv-xh2/hal/lib目录复制libhal_xh2a.a和libhal_xh2a.so到device_check目录下:cd /path/to/houmo-drv-xh2/hal/lib scp libhal_xh2a.a libhal_xh2a.so ../../../device_check/
编译生成可执行文件。在主机端执行以下命令,生成可执行文件:
cd device_check chmod +x compile.sh ./compile.sh
编译成功后,会在编译脚本中指定的输出目录中生成可执行文件。示例中,该目录为
build_android,可执行文件名称为device_check。传输文件至 Android 端。
将主机端的
device_check文件夹推送至 Android 端的/data/houmo目录:adb push device_check /data/houmo
启动Android开发板并进入 shell 模式:
adb shell su
配置环境变量。在Android端设置驱动库路径:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/houmo/houmo-drv-xh2/hal/lib
获得设备信息。在Android端,进入
device_check目录,执行以下命令获取设备信息。cd /data/houmo/device_check/build_android ./device_check
设备信息输出示例如下:
===== Device 0 ===== [dev 0] Basic Properties: vendor id: 0x1f6b serial: 0206020100002025004800000019 name: LQ50 DUO-36GB computing power: 100 TFLOPS core count: 2 [dev 0] Runtime Metrics: core util rate: 0.00 core[0] util: 0.00 core[1] util: 0.00 avg ipu frequency: 1400000000 Hz ipu voltage: 750.00 mV memory: total 18304 MB, used 0 MB, avail 18304 MB temperature: 26.59 C [dev 0] PCIe / Board Info: PCIe BDF: 0001:11:00.00 PCIe bandwidth: 8.0 GT/s PCIe -2lane board power: 12.59 W [dev 0] SDK and Firmware Info: SDK build time: May 19 2026 00:37:11 SDK version: v1.3.0 driver version: v1.3.0 device firmware version: 1.3.0 DDR size: 19327352832 bytes DVFS mode: 0 ===== Device 1 ===== [dev 1] Basic Properties: vendor id: 0x1f6b serial: 0206020100002025004800000019 name: LQ50 DUO-36GB computing power: 100 TFLOPS core count: 2 [dev 1] Runtime Metrics: core util rate: 0.00 core[0] util: 0.00 core[1] util: 0.00 avg ipu frequency: 1400000000 Hz ipu voltage: 750.00 mV memory: total 18304 MB, used 0 MB, avail 18304 MB temperature: 26.88 C [dev 1] PCIe / Board Info: PCIe BDF: 0000:01:00.00 PCIe bandwidth: 8.0 GT/s PCIe -2lane board power: 0.00 W [dev 1] SDK and Firmware Info: SDK build time: May 19 2026 00:37:11 SDK version: v1.3.0 driver version: v1.3.0 device firmware version: 1.3.0 DDR size: 19327352832 bytes DVFS mode: 0