交叉编译tim-vx-imx运行单元测试遇vxCreateContext设备打开失败问题
问题描述
调用vxCreateContext()时触发致命错误,错误日志如下:
[ 1] Failed to open device: No such file or directory, Try again... [ 2] Failed to open device: No such file or directory, Try again... [ 3] Failed to open device: No such file or directory, Try again... [ 4] Failed to open device: No such file or directory, Try again... [ 5] OpenDevice(1249): FATAL: Failed to open device, errno=No such file or directory.
场景说明:
- 目标设备:NXP i.MX8Plus
- 正在交叉编译tim-vx-imx
- 已从aarch64-poky-linux-gcc预构建SDK获取ovxlib相关驱动(CLC、Gal、VSC、ArchModelSw、NNarchPerf、OpenVx及OpenVXU)
- 运行tim-vx-imx自带单元测试时触发上述错误
排查与解决步骤
检查设备节点状态
tim-vx依赖的OpenVX驱动对应/dev/galcore设备节点,在目标板执行:ls -l /dev/galcore- 若节点不存在:确认内核是否编译加载galcore模块(CONFIG_MXC_GALCORE需设为y或m),同时检查设备树的GPU节点配置是否正确。
- 若节点存在但权限不足:执行
sudo chmod 666 /dev/galcore临时修改权限,或添加udev规则永久生效。
验证驱动库兼容性
确保SDK获取的ovxlib驱动与tim-vx-imx版本、i.MX8Plus硬件匹配:- 确认驱动是针对i.MX8Plus(GPU为GC7000Lite)编译的,而非其他i.MX型号
- 编译tim-vx-imx时指定正确硬件平台参数,如
-DTIM_VX_TARGET=IMX8MP
确认交叉编译环境配置
交叉编译阶段需保证:- 正确设置环境变量,将
CC、CXX指向aarch64-poky-linux-gcc/g++ - CMake配置时指定SDK的sysroot路径,避免链接主机系统库
- 开启GPU加速支持,添加CMake参数
-DTIM_VX_ENABLE_GPU=ON
- 正确设置环境变量,将
检查驱动库部署路径
将ovxlib的驱动库(如libOpenVX.so、libgalcore.so等)放到目标板的/usr/lib或/usr/lib64目录,确保动态链接器能找到。可通过以下命令检查测试程序的依赖:ldd your_test_binary若有缺失库,补充对应文件到正确路径。
确认GPU硬件初始化状态
查看目标板启动日志,确认是否有GPU初始化成功的日志(如galcore: loaded)。若无相关日志,说明内核驱动加载失败,需重新编译内核并确认GPU相关配置正确。
内容的提问来源于stack exchange,提问作者Abd Alrahman Atieh
相关产品推荐
相关产品推荐

