【Atlas200DK使用FAQ】执行DVPP的VPC功能时报ioctl fail错误定位方法

网友投稿 836 2022-05-30

图片处理相关案例

概述:

ioctl是DVPP调用硬件的处理接口,ioctl出错也是VPC最常见的错误,错误原因大概可以分为如下四大类:

图4-1 VPC出现ioctl fail错误常见原因

输入或输出内存不是4G空间

错误示例

●输入和输出都不是4G空间内存的打印示例如下(CMDLIST接口打印)。

●输入不是4G空间内存,输出是4G空间内存的错误打印。

解决方法:

DVPP要求同一次任务的缓冲区的输入和输出区的虚拟地址应该在同一4G空间,昇腾310提供的4G内存虚拟地址为0xffff00000000~0xffffffffffff。

可以用HIAI_DVPP_DMalloc接口申请内存,并满足对应的宽高要求(C10版本为128*16,C30版本为16*2),可以确保输入与输出在同一4G内存空间。

正确的内存打印日志以0xffff开头,输入内存打印关键词“bare_buffer”, 输出内存打印关键词“outputConfigure:addr”或者“YUV_SUM_OUT_CONFIG:out_buffer” 。

如下图所示为正确的4G空间内存打印。

输出参数不满足VPC要求

●《DVPP API参考》对VPC输入和输出内存的限制有明确的约束,代码示例也比较清晰,请参考API参考检查各字段是否正确。

【Atlas200DK使用FAQ】执行DVPP的VPC功能时报ioctl fail错误定位方法

●不同的子功能,例如解压缩,抠图,缩放 接口的输入参数要求不一致,请严格按照《DVPP API参考》要求配置,并参考文档中的代码示例进行编程。

●若自己设计的代***错,请运行DDK中的DVPP样例代码,排查开发环境是否有问题,另外请参考DVPP样例代码排查代码设计。

VPC功能多次错误,触发硬件保护机制

出现关键词“p_engine_para->fail_count< (15)”,这种情况下即使接口调用正确也无法正确调用VPC接口,原因是前期调试多次输入参数或地址异常,触发硬件保护机制,这时需要重启系统。 正常业务运行不会出现情况。

注意:如果是整体业务测试性能,最好是重启系统后再进行测试,防止保护机制隔离了部分组件(共4个VPC),如果<=3个VPC隔离,业务还是可以正常运行,不会出现如上错误,但是运行性能达不到最大化。如果是16路解码,VPC解压缩就可能因为前期的调试导致后期业务测试达不到最大性能。

每日推送Ascend 310常见问题及处理方法,更多昇腾技术干货,尽在昇腾社区等你,敬请持续关注!

HTTP 华为Atlas 200 DK AI开发者套件 虚拟私有云 VPC

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:榜单揭晓!华为云社区2020年度十佳博主出炉啦!
下一篇:jmeter学习笔记04-录制脚本篇
相关文章