TI中文支持网
TI专业的中文技术问题搜集分享网站

DM8148 获取 YUV数据太耗时间,是否有优化方法

您好 TIers:

          在做一个 A8 实时保存 YUV 数据的需求,有点问题请教一下:

         YUV 数据量 : 1920 x 1080 x 2 = 3.95 MB

          A8 从 DSP端 获取 YUV, 需要将 phy_addr 映射为  vir_addr 才可以操作。

          

(1) 从映射的  vir_addr 保存 YUV 文件,要耗时100多 ms;

或者

(2)将 映射的  vir_addr 使用 memcpy 到 A8 内存,耗时 100多 ms;

       然后从 A8 内存 保存 YUV 文件, 耗时 13 ms;

——————————————————————————————————

看像是  从 映射的  vir_addr  到 A8 内存中,耗时比较大,  请问一下有 什么办法优化吗 ?     感谢。

Shine:

memcpy是使用cpu来拷贝,还是EDMA?建议使用EDMA比较快。

user6299109:

回复 Shine:

您好, Shine:
memcpy是在 A8 CPU 的APP 层来复制的。请问一下:EDMA 是在 A8APP 层操作 ?还是A8 驱动层?
是要 同时编码 【驱动代码 + APP 代码】 来完成吗?

——————————————————————————————————————————————————————如果是驱动代码, 是否是:
在驱动层 使用EDMA复制 DSP 的 PHY 地址YUV数据————->>>A8 的 Linux驱动层;然后 A8 的 APP 层,再映射 A8 的驱动层,从而拿到数据?
如果是这样,可能也比较耗时间。

user6299109:

回复 Shine:

您好, Shine:有时间,指导一下具体实现方法,感谢。

Chris Meng:

回复 user6299109:

你好,

请问你的代码是基于那个软件包?

EDMA驱动相关信息请参考:
processors.wiki.ti.com/…/TI81XX_PSP_EDMA_Driver_User_Guide

请你说的ARM内存是什么概念?

我建议你可以开辟一块DDR内存(不在Linux的内存里),专门用来存放YUV数据,做静态的地址分配,例如几个YUV buffer,这几个buffer的地址转换可以实现就做好了,不用每次计算。

赞(0)
未经允许不得转载:TI中文支持网 » DM8148 获取 YUV数据太耗时间,是否有优化方法
分享到: 更多 (0)