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

举报
山人_mhc 发表于 2020/03/27 23:38:58 2020/03/27
【摘要】 Atlas200DK使用FAQ

图片处理相关案例

 

概述:

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

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

图片7.png

 

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

错误示例

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

图片8.png

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

图片9.png

解决方法:

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空间内存打印。

 

图片10.png

 

输出参数不满足VPC要求

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

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

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

 

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

图片11.png

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

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

 

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。