嵌入式开发之8127---DM8127如何利用EDMA搬移数据
--------------qq:1327706646
---------------------author:midu
-------------------------------datetime:2013-10-20
1.在sw_osd_ti_dmaOpt.c和sw_osd_ti_dma.c中涉及到了DMA的相关设置,但所有的API都是需要传递一个handle进去,而且所有的API都以SWOSD开头,但我不清楚这个handle需要怎么初始化,如何用在我的算法中。
2,在...\ipnc_rdk\ipnc_mcfw\mcfw\src_bios6\links_c6xdsp\va\valink_alg.c中的VaLink_algCopyFrames()中调用了EDMA.其中有
/* copy the frame */
edmaWidth = pObj->inQueInfo.chInfo[0].width;
edmaHeight = pObj->inQueInfo.chInfo[0].height;
/* copy Y plane */
DM81XX_EDMA3_setParams(VA_LINK_EDMA3_CH_ID, // chId
VA_LINK_EDMA3_QUEUE_ID, // dmaQueue
(UInt32)pFullFrame->addr[0][0], // srcAddr
(UInt32)pEmptyFrame->addr[0][0], // dstAddr
edmaWidth, // edmaWidth
edmaHeight, // edmaHeight
edmaWidth, // srcLineOffset
edmaWidth); // dstLineOffset
/* Trigger the edma transfer */
DM81XX_EDMA3_triggerTransfer(VA_LINK_EDMA3_CH_ID);
pEmptyFrame->timeStamp = pFullFrame->timeStamp;
于是我将该段代码添加到了Alglink_priv.c中
Int32 AlgLink_algProcessData(AlgLink_Obj * pObj)
{
extern unsigned char *frame_buffer; //frame_buffer大小为2048*1280;开辟在在DDR 的SR2上
unsigned char * current_frame;
unsigned char * temp;
int edmaWidth = 2048;
int edmaHeight = 1280;
UInt32 frameId, status;
System_LinkInQueParams *pInQueParams;
FVID2_Frame *pFrame;
FVID2_FrameList frameList;
pInQueParams = &pObj->createArgs.inQueParams;
System_getLinksFullFrames(pInQueParams->prevLinkId,
pInQueParams->prevLinkQueId, &frameList);
if (frameList.numFrames)
{
/* SCD should be done first as it requires to operate on raw YUV */
if (pObj->createArgs.enableSCDAlg) {
status = AlgLink_ScdalgProcessData(&pObj->scdAlg, &frameList, &pObj->outObj[0].bufOutQue);
if (status == FVID2_SOK) {
/* Send-out the output bitbuffer */
System_sendLinkCmd(pObj->createArgs.outQueParams.nextLink,
SYSTEM_CMD_NEW_DATA);
}
}
for(frameId=0; frameId<frameList.numFrames; frameId++) {
pFrame = frameList.frames[frameId];
if(pFrame->channelNum >= pObj->inQueInfo.numCh)
continue;
//*************************************add my alg ****************************//
/* copy the frame */
edmaWidth = pObj->inQueInfo.chInfo[0].width;
edmaHeight = pObj->inQueInfo.chInfo[0].height;
/* copy Y plane */
DM81XX_EDMA3_setParams(VA_LINK_EDMA3_CH_ID, // chId
VA_LINK_EDMA3_QUEUE_ID, // dmaQueue
(UInt32)pFrame->addr[0][0], // srcAddr
(UInt32)(frame_buffer), // dstAddr
edmaWidth, // edmaWidth
edmaHeight, // edmaHeight
edmaWidth, // srcLineOffset
edmaWidth); // dstLineOffset
/* Trigger the edma transfer */
DM81XX_EDMA3_triggerTransfer(VA_LINK_EDMA3_CH_ID);
pEmptyFrame->timeStamp = pFullFrame->timeStamp;
//判断数据搬移是否出错
current_frame = (unsigned char *)pFrame->addr[0][0];
temp = frame_buffer;
for(i=0;i<2048*1280;i++){
if(*temp !=*current_frame)
Vps_printf("wrong!!!!!!!");
current_frame++;
temp++;
}
//********************************************************************************//
// do SW OSD
if (pObj->createArgs.enableOSDAlg) {
AlgLink_OsdalgProcessFrame(&pObj->osdAlg, pFrame);
}
}
System_putLinksEmptyFrames(pInQueParams->prevLinkId,
pInQueParams->prevLinkQueId, &frameList);
}
return FVID2_SOK;
}
编译通过后发现EDMA源地址和目的地址的元素不一致,帧大小为2048*1280没有错,而且我跑的是fullfeature,valink是没有跑的;请问是我的DMA哪里设置不对吗?有谁在8127上用过EDMA的啊?求各位大神指点,小弟在此谢过了!!!
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/31656.aspx
嵌入式开发之8127---DM8127如何利用EDMA搬移数据的更多相关文章
- 嵌入式开发之davinci--- 8148/8168/8127 中的alsa音频pcm g711 和aac 音频格式
(1)alsa pcm (2)g711 (3)aac (4) --------------author:pkf -------------------time:2-4 ---------------- ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的High-DefinitionVideo Processing Subsystem (HDVPSS)
High-DefinitionVideo Processing Subsystem (HDVPSS) 这一章介绍了高清视频处理子系统(HDVPSS). 2.1导论 2.1.1 简介 HDVPSS 使用 ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的大屏分布式拼接显示系统
其实在接触从12年接触8127系列ipnc 时看到200w和500w的高清像素,我就萌生了视频拼接的兴趣,没想到今年的安博会就有公司推出产品了,它就是上海的环视科技,从他的主页可以看到,明显的有个只能 ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的xdc 简介
XDC是TI公司为嵌入式实时系统可重用软件组件(在XDC里被成为packages,以下成为包)制定的一套标准.它包括一些有用的工具,标准的API函数,静态配置文件和打包(packaging)操作.XD ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的二维图像处理内存tiler 铺瓷砖
http://blog.csdn.net/shanghaiqianlun/article/details/7619603
- 嵌入式开发之davinci--- 8148/8168/8127 中的图像处理算法优化库vlib
The Texas Instruments VLIB is an optimizedImage/Video Processing Functions Library for C programmers ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的图像采集格式Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别
简单来说,YUV: luma (Y) + chroma (UV) 格式, 一般情况下sensor支持YUV422格式,即数据格式是按Y-U-Y-V次序输出的RGB: 传统的红绿蓝格式,比如RGB565 ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的音频alsa 采集
1.snd_pcm_open,打开句柄. 2.配置参数,可能用到的接口:snd_pcm_hw_params_alloca.snd_pcm_hw_params_any.snd_pcm_hw_params ...
- 嵌入式开发之davinci--- 8148/8168/8127 中swms、Mosaic’s、display 显示pal 模式
(1) (2) (3) (4) -------------------------author:pkf ------------------------------time:2-3 --------- ...
随机推荐
- Python应该怎样实现快速入门?
作为一名Python爱好者,我也想跟大家分享分享我自学Python的一些小经验.搬来你的小板凳,听听看吧.也许,你会很有收获,也许你也走上了自学Python的不归路.开讲啦~ 首先,你要有自信心,要明 ...
- notepad++新建文档时,会出现语法错误的红色下波浪线
notepad++新建文档时,会出现语法错误的红色下波浪线: 原因:新建文档时默认设置语言为PHP. 解决方法:修改默认语言为java或JavaScript,如下: 小结:打开文档时,也可能出现下波浪 ...
- jquery 应用
http://www.jq22.com/ gwj6396668@163.com
- ios打电话发短信接口
电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话 [[UIApplication sharedApplicatio ...
- $.fn.extend的用法
$.fn.extend({ sfMessages: function(m) { $("p.tips").html('<span class="circle ioc ...
- 笔试算法题(09):查找指定和值的两个数 & 构造BST镜像树
出题:输入一个已经升序排序的数组和一个数字:要求在数组中查找两个数,这两个数的和正好等于输入的那个数字,输出任意一对数字就可以,要求时间复杂度是O(n): 分析:对于升序排序的数组{…i…j…k…m… ...
- 使用maven的mybatis-generator代码生成器插件生成实体类、mapper配置文件和mapper接口(使用idea)
接着之前创建的ssmMaven项目 一: 在pom文件中加入mybatis-generator插件 <plugins> <plugin> <groupId>org. ...
- Linux系统下设置vi编辑器,tab键为4
1.cd ~ 2.vi .exrc 3.set tabstop=4(保存并退出)即可
- 基于PHP的微信支付教程
微信支付作为各大移动支付方式之一,本课程只要向大家介绍并使用微信支付的常用功能,进而集合到已有的项目中去,希望各位能够快速上手并掌握实战"干货". 出处至:汇智网 hubwiz. ...
- centos7安装kvm虚拟机
一 centos7安装kvm虚拟机 1.验证CPU是否支持KVM 结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的. [root@centos ~]# egrep '(vmx| ...