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,不同的板子这个文件也是不一样的,用错了就会出现一大堆的错误,其实只是这个文件选错了而已!

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



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值