完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 一只耳朵怪 于 2018-6-22 10:49 编辑
各位好,我使用dm8168+mcfw,应用中需要动态设置osd参数,在Vsys_create() 之后,调用 Vcap_setDynamicParamChn(0, &dynamicParams, VCAP_OSDWINPRM); 进行osd的参数动态设置是能起作用的,但是 Vdis_start(); Venc_start(); Vcap_start();之后再次调用 Vcap_setDynamicParamChn(0, &dynamicParams, VCAP_OSDWINPRM); 进行参数设置发现不成功,跟踪到调用了 System_linkControl(gVcapModuleContext.dspAlgId[0], ALG_LINK_OSD_CMD_SET_CHANNEL_WIN_PRM, psCapChnDynaParam->osdChWinPrm, sizeof(AlgLink_OsdChWinParams), TRUE ) , 继续跟踪,调用了System_ipcMsgQSendMsg 进行多核间的消息传递,继续跟踪到了 status = MessageQ_put(gSystem_ipcObj.remoteProcMsgQ[procId], (MessageQ_Msg)pMsgCommon); 该函数返回的status为MessageQ_S_SUCCESS ,因为上面的消息请求是要waitAck的,MessageQ_put后需要get他的回复消息,会继续调用 status = MessageQ_get(gSystem_ipcObj.selfAckMsgQ, (MessageQ_Msg*)&pAckMsg, timeout); 该调用的返回值status也只MessageQ_S_SUCCESS的,但pAckMsg->status值为-1,通过osdalglink中的接收消息端的打印信息表明并没有收到消息,不知道为什么核间通信会失败,而在Vdis_start(); Venc_start(); Vcap_start();之前的第一次消息却是发送成功。 调试无过,请各位给点思路,帮忙分析一下可能的原因,sdk目前版本为DVRRDK_03.00.00.00 |
|
相关推荐
13个回答
|
|
|
|
|
|
程序是自己写的,类似于demo程序,只是根据自己实际需要重新配置了数据流向,跟demo中使用的link的数量不一样,dsp目前只运行了osd alg,scd alg都没有使用,运行时没有什么特别的日志,只是arm端像dsp发送了消息后,无法收到回复消息,也就是MessageQ_get(gSystem_ipcObj.selfAckMsgQ, (MessageQ_Msg*)&pAckMsg, timeout);调用后pAckMsg->status值为-1,不知道是不是哪些地方可能会影响到核间的通信,osd是有显示的,说明vpss跟dsp之间的通信时正常的,因为每帧数据会有new_data的消息发给dsp的,而我amr端发送的消息却没有到达dsp
|
|
|
|
1.在板子上可以运行TI demo吗?demo运行起来后,可以在Capture Settings里面修改OSD参数,这时是在Vdis_start(); Venc_start(); Vcap_start();之后的,看看是否有同样的问题。
2.在System_ipcMsgQSendMsg中把linkId打印出来看一下是否正常,是否是正确的目的地。 |
|
|
|
首先谢谢你的热心!我试过跑demo是正常的,还有的我的发送的linkid应该是对的,因为第一次都能发送过去,每次都是调用同样的函数,我怀疑是我自定义的usecase里面哪里的配置影响到通信这块了,另外怀疑是不是我的osd图像比较大,导致msgq内部分配空间失败了,我看memory_map目前预留SR0的是15兆,作用是syslink MsgQ/IPC List,而osd分配的内存也是SR0上,验证一下先
|
|
|
|
看起来不关内存分配的事儿,小图片也一样 :(
|
|
|
|
请先确认相应的core是否收到了msg.可以在system_link中加些log.
|
|
|
|
之前就打印过细,osdalglink并没有收到消息。将usecase改回demo中所用的usecase,osdalglink就能收到消息了,通过比较usecase的不同,发现有一处不一样的地方,在demo使用的usecase中,
ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = gMultiCh_VcapVencVdisObj.ipcOutVpssId; ipcOutVpassId对应的配置参数有如下配置 ipcOutVpssPrm.notifyPrevLink = TRUE; 而我的usecase中 ipcFramesOutVpssPrm[0].baseCreateParams.outQueParams[0].nextLink = gMultiChHd_VcapVencVdisObj.mergeId[1]; 但merge这种link是没有notifyPrevLink 这个属性的, 不知道是不是跟这个有关,难道ipcFramesOutVpssId对应的link只能接入类似ipcOutVpssId这种具有notifyPrevLink 属性的link才能正常工作? 在我配置的usecase中,数据是能正常流通的,只是无法发送消息 |
|
|
|
补充一下,我的ipcFramesOutVpssPrm是在vpss核上,而它对应的nextlink mergeId[1]也是工作在vpss上,所以看起来应该也没有问题的
|
|
|
|
richips 发表于 2018-6-22 07:33 楼主 您能指导下小弟 您的源代码是怎么编译的么。。。 拿到个代码 根本不知道怎么编译 链接库 调试啊啥的。。玩不溜dvrrdk啊 |
|
|
|
关于DVR RDK 的编译,请参考RDK包下面的DM81xx_DVR_RDK_Install_Guide.pdf |
|
|
|
多谢呀!! 我的包里居然没有 install,quick start,releasenote 这3个pdf!!! 我在网上下到了!~ |
|
|
|
richips 发表于 2018-6-22 07:33 ipcFramesOutVpssPrm之类的link是用来在不同的core之间交互数据的,所以用法上应该连接其他core的ipc In之类的link。 如果你希望接下来连接merge link,一种方案是在进ipc out前先merge好,另一种是到另一个core接收下数据后再merge。 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
340 浏览 1 评论
535 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
781 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
655 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1138 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
65浏览 29评论
174浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
255浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
205浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
60浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 08:33 , Processed in 1.099537 second(s), Total 71, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号