DM6446 Codec Engine问题总结及解决办法

2024-03-03 16:18

本文主要是介绍DM6446 Codec Engine问题总结及解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DM6446 Codec Engine问题

问题1:

DAVINCI_EVM DM6446 跑 DEMOS 里面的 encodedecode 例子出现以下问题:


Encodedecode Debug: PAL selected
Encode-decode demo started!

Encodedecode Debug: Codec Engine Initialized!

TraceUtil> Error: Failed to open codec engine "encodedecode"


出现这个问题是因为运行的程序跟二进制的DSP文件不在一个文件夹,程序找不到对应的encodedecode 引擎,移到同一个文件夹下就OK了



loadmodule在什么文件系统下运行很有关系(运行Loadmodule.sh可以加载cmem.ko和dsplink.ko)

问题2

root@172.18.216.227:/home/dvevm# ./loadmodules.sh
<6>cmem initialized 4 pools between 0x87800000 and 0x88000000
 DDR_START 0x8fa00000 DDR_SIZE 0x400000
root@172.18.216.227:/home/dvevm# ./image_sharpen
Encodedecode demo started.
VIDIOC_QUERYSTD failed on /dev/video0. Video input connected?

Total I-frames: 0, P-frames: 0, B-frames: 0, IDR-frames: 0 rejected: 0
Unable to handle kernel paging request at virtual address bf055030
pgd = c58e8000
[bf055030] *pgd=85e0c011, *pte=00000000, *ppte=00000000
Internal error: Oops: 7 [#2]
Modules linked in: dsplinkk cmemk
CPU: 0
PC is at PMGR_MSGQ_Close+0x18/0x84 [dsplinkk]
LR is at DRV_Ioctl+0x2a4/0x34c [dsplinkk]
pc : [<bf005840>]    lr : [<bf005468>]    Tainted: PF    
sp : c5e61f00  ip : c5e61f20  fp : c5e61f1c
r10: 00900036  r9 : c5e60000  r8 : c002a154
r7 : bf015430  r6 : 00006f04  r5 : 00008000  r4 : 0000ff00
r3 : ff000000  r2 : 00006c11  r1 : 00006f04  r0 : 0002ff00
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  Segment user
Control: 5317F  Table: 858E8000  DAC: 00000015
Process image_sharpen (pid: 1214, stack limit = 0xc5e601a0)
Stack: (0xc5e61f00 to 0xc5e62000)
1f00: 44065570 00008000 00006f04 44065570 c5e61f34 c5e61f20 bf005468 bf005838
1f20: c67a3720 ffffffe7 c5e61f54 c5e61f38 c0091bac bf0051d4 c67a3720 44065570
1f40: 00000008 00000000 c5e61f7c c5e61f58 c0091eb4 c0091b40 c004940c c0217a48
1f60: c67a3720 fffffff7 00006f04 00000036 c5e61fa4 c5e61f80 c0091f14 c0091bd0
1f80: 000006f0 00000001 000000a2 0002c6e0 00030140 0000070c 00000000 c5e61fa8
1fa0: c00299c0 c0091ee4 0002c6e0 00030140 00000008 00006f04 44065570 0002f740
1fc0: 0002c6e0 00030140 0000070c 000006ec 0002c54c 000006fc 0002c114 4406556c
1fe0: 0002c1d0 44065518 0001698c 401a0344 80000010 00000008 00000000 00000000
Backtrace:
[<bf005828>] (PMGR_MSGQ_Close+0x0/0x84 [dsplinkk]) from [<bf005468>] (DRV_Ioctl+0x2a4/0x34c [dsplinkk])
 r7 = 44065570  r6 = 00006F04  r5 = 00008000  r4 = 44065570
[<bf0051c4>] (DRV_Ioctl+0x0/0x34c [dsplinkk]) from [<c0091bac>] (do_ioctl+0x7c/0x90)
 r5 = FFFFFFE7  r4 = C67A3720
[<c0091b30>] (do_ioctl+0x0/0x90) from [<c0091eb4>] (vfs_ioctl+0x2f4/0x314)
 r7 = 00000000  r6 = 00000008  r5 = 44065570  r4 = C67A3720
[<c0091bc0>] (vfs_ioctl+0x0/0x314) from [<c0091f14>] (sys_ioctl+0x40/0x64)
 r7 = 00000036  r6 = 00006F04  r5 = FFFFFFF7  r4 = C67A3720
[<c0091ed4>] (sys_ioctl+0x0/0x64) from [<c00299c0>] (ret_fast_syscall+0x0/0x2c)
 r6 = 0000070C  r5 = 00030140  r4 = 0002C6E0
Code: e24cb004 e59f7064 e1a03800 e1a04823 (e7973104)

解决方式 
cmem.ko是arm端和dsp端可共享的内存空间,可设定里面pool的大小,根据具体情况而定;
dsplink.ko是arm和dsp相互联系的关键桥梁,是codec engine方式所必须的,如果板子内存有改动,还需要重新编译dsplink;或者是内核跟dsplinkk.ko的版本不匹配,
找到对应的dsplinkk.ko或者内核即可。
我今天遇到这个问题是因为dsplinkk.ko没问题,但是我刚开始烧写的内核对不上号,内核不认识Codec Engine的一系列东西,找到对应的内核就没问题了.因为在虚拟机的
tftp文件夹下有一个uImage256,但是我的开发板不是用的这个内核,我原来一直默认这个内核没问题,后来找到板子带的内核烧进去就没问题了 

附上找到的其他人的错误及解决方式

root@172.16.5.238:/demos-dm6446/encodedecode/debug# ./encodedecoded Cr 720x480 C
b 2400000 Ck Ct 20
Encodedecode Debug: PAL selected
Encodedecode demo started.
Encodedecode Debug: Codec Engine initialized
TraceUtil> Error: Failin kernel: davincifb_pan_display 1
in kernel: davincifb_pan_display 2
in kernel: davincifb_pan_display 3
ed to open codec engine "encodedecode"
TraceUtil> Error: Aborting TraceUtil_start
Encodedecode Debug: Logging initialized
Encodedecode Debug: Pause object opened
Encodedecode Debug: Init rendezvous opened for 4 threads
Encodedecode Debug: Cleanup rendezvous opened for 4 threads
Encodedecode Debug: Priming rendezvous opened for 2 threads
Encodedecode Debug: Display buffer 0 mapped to 0x41acb000 has physical address 0
x86000000
Encodedecode Debug: Display buffer 1 mapped to 0x41b95800 has physical address 0
x860ca800
Encodedecode Debug: Display buffer 2 mapped to 0x41c60000 has physicin kernel: d
avincifb_pan_display 1
in kernel: davincifb_pan_display 2
in kernel: davincifb_pan_display 3
al address 0x861in kernel: davincifb_pan_display 1
in kernel: davincifb_pan_display 2
in kernel: davincifb_pan_display 3
95000
Encodedecin kernel: davincifb_pan_display 1
in kernel: davincifb_pan_display 2
in kernel: davincifb_pan_display 3
ode Debug: Video display device initialized.
Encodedecode Debug: captureWidth = 720, captureHeight = 576
Encodedecode Debug: Capture thread created
Encodedecode Debug: Set the capture input to id 0
Encodedecode Error: Failed to open codec engine encodedecode
Encodedecode Debug: OSD successfully initialized
Encodedecode Debug: Entering display main loop.
Encodedecode Debug: Checking video standard
Encodedecode Debug: OSD transparency initialized
Encodedecode Error: Failed to open codec engine encodedecode
Encodedecode Debug: PAL camera detected
Encodedecode Debug: Setting capture cropping (720x576)
Capturing 720x576 video (cropped to 720x576)
Encodedecode Debug: 3 capture buffers were successfully allocated.
Encodedecode Debug: Capture driver buin kernel: davincifb_pan_display 1
in kernel: davincifb_pan_display 2
in kernel: davincifb_pan_display 3
ffer 0 at physical address 1122762752 mapped to virtual address 0x80d00000
Encodedecode Debug: Capture driver buffer 1 at physical address 1123647488 mappe
d to virtual address 0x80e00000
Encodedecode Debug: Capture driver buffer 2 at physical address 1124532224 mappe
d to virtual address 0x80f00000
Encodedecode Debug: Video capture initialized and started
Smooth Debug: Creating smooth job of size 720x576
Encodedecode Debug: Entering capture main loop.
TraceUtil是一个编解码引擎模块,用来收集对在运行的事件的轨迹信息。当跟踪单元被激活时,
GPP trace, DSP trace, BIOS logs三种信息将被跟踪记录。跟踪功能在DVTB的默认参数下时关闭的,如有需要需先激活:
有关TraceUtil在http://processors.wiki.ti.com/index.php?title=TraceUtil
     对于每个视频程序都有三个文件夹,codecs是算法包,servers是生成dsp侧可执行程序的,video_app是生成arm端可执行程序的。
其中servers中的.tcf文件很重要,他是分配memory的。前面提到的256M和128M板子在这个文件的分配上是不一样的,和众达给的资料很多,
一不小心就弄错了,大家一定得看清这个文件里的设置,看是适合哪个板子的。否则会出现TraceUtil->can't not open codec engine 的错误!
还有一个加载memk.ko和dsplinkk.ko的文件loadmodules.sh,不同的板子这个文件也是不一样的,用错了就会出现一大堆的错误,其实只是这个文件选错了而已!

只要上面讲的这两个文件没问题,程序就能通过了!



这篇关于DM6446 Codec Engine问题总结及解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/770171

相关文章

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx