61ic电子在线 首页 技术 嵌入式系统 查看内容

DM8148视频采集EZSDK开发包中固件版本的说明

2017-6-7 01:50| 发布者: 61ic| 查看: 770| 评论: 0|原作者: Ziyu|来自: 61ic

摘要: 在使用达芬奇平台DM8148开发板进行视频处理的过程中,对EZSDK开发包中一些模块的使用产生了一些疑惑,在网上进行查找和源码追踪后对自己的理解简单的总结了一下 ...


在使用达芬奇平台dm8148开发板进行视频处理的过程中,对EZSDK开发包中一些模块的使用产生了一些疑惑,在网上进行查找和源码追踪后对自己的理解简单的总结了一下;

首先是各个固件的使用


以上是DM8148的EZSDK的开发包的几个固件模块;8148的片子上集成了一个ARM核、一个DSP核、以及两个M3核(分别对应VPSS模块和hdvicp模块),可以看到HDVPSS的固件有两个。此外还有DDR容量不同的对应版本。

首先贴出TI论坛上的解释:

https://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/t/243527

ti814x_hdvpss_1G.xem3 is part of PSP package. dm814x_hdvpss.xem3 is part of EZSDK package.
EZSDK has different M3 firmware and utility to load M3 with PSP.
./slaveloader startup VPSS-M3 ti814x_hdvpss_1G.xem3 is the usage of PSP.
EZSDK use the below command:
./firmware_loader 2 dm814x_hdvpss.xem3 start
The HDVPSS binaries that present in the PSP package contain only the driver interfaces and not the full multimedia stack

(ti814x_hdvpss_1G.xme3 is pure M3 firmware and it does not support OMX).
The difference between dm814x_hdvpss.xem3 and dm814x_hdvpss_v4l2_xme3 is one control I2c from M3, the other does not.This is because  support two application stacks. One is OpenMax application and other is V4L2 based application.

So for OpenMax I2c is getting controlled through M3 and V4L2 I2C is controlled through A8. Thats why there is two binaries.
m814x_hdvpss.xem3:
    This is use for OpenMax application.  So user will use their application is OpenMax interface.This can NOT be used to use I2C from A8 during HDVPSS driver is working.
 dm814x_hdvpss_v4l2_xem3:
     This is use for V4L2 application.  So user will use their application is V4L2 interface.This can be used to use I2C from A8 during HDVPSS driver is working.
If you want to use only V4L2 capture + V4L2 display + fbdev than ti814x_hdvpss_1G.xem3 is fine,  if you want to use encode/decode or any of OpenMax components you need to use dm814x_hdvpss_v4l2.xem3 for V4L2 capture.

 

在nfs的文件系统中/etc/rtC5中默认进入系统中加载的是load-hd-firmware.sh文件;先替换这个文件为load-hd-v4l2-firmware.sh;开始使用V4L2架构去调试;区别在与调用的HDVPSS的固件模块;

如果加载dm816x_hdvpss.xem3 对应与OMX的组件视频处理;没有单独加载视频解码驱动,视频芯片的驱动部分直接在M3核的源码中实现,看OMX实现的原理;

如果加载dm816x_hdvpss_V4L2.xem3 start对应V4L2架构对视频处理,要对应的加载相应的视频解码芯片驱动tvp7002.ko;

 

所以从这个理解,顶层使用什么框架取实现视频的采集,是跟固件模块相关的,固件模块给它提供了支持;比如使用DM8127的IPNC RDK的MCFW的框架的一些函数,需要固件支持。

You will have to use dm8x4x_hdvicp.xem3 and dm814x_hdvpss.xem3 from EZSDK prebuilt.

 These two firmwares are omx firmware. If you want to use V4L2, you can use dm814x_hdvpss_V4L2.xem3.

比较固件挂载两个shell脚本文件的区别:

1、load-hd-v4l2-firmware.sh中

firmware_loader $HDVPSS_ID /usr/share/ti/ti-media-controller-utils/dm814x_hdvpss_v4l2.xem3 start -i2c 0

modprobe vpss sbufaddr=0xBFB00000 mode=hdmi:1080p-60 i2c_mode=0

2、load-hd-firmware.sh中

firmware_loader $HDVPSS_ID /usr/share/ti/ti-media-controller-utils/dm814x_hdvpss.xem3 start

modprobe vpss sbufaddr=0xBFB00000 mode=hdmi:1080p-60 i2c_mode=1

3、固件加载的工具:firmware_loader的使用参数

"<Processor Id>         0: DSP, 1: Video-M3, 2: Vpss-M3 \n"

"-i2c 参数  0: i2c init not done by M3, 1(default): i2c init done by M3 \n");

不使用这个参数的时候,默认是i2c=1,m3核控制i2c配置外部的视频芯片,对应固件

dm814x_hdvpss.xem3;如果要使用dm814x_hdvpss_v4l2.xem3要配置i2c=0,此时A8控制i2c配置外围视频采集芯片。

简单总结为dm814x_hdvpss.xem3固件实现的是m3控制i2c及外围视频芯片,dm814x_hdvpss_v4l2.xem3是A8控制i2c

,需要加载相应的视频芯片的驱动tvp7002.ko。

4、vpss加载的时候的参数i2c_mode

"control of i2c-based external video devices in A8 or M3, by default(0) it is on A8, a special fimrware is required\if control is on M3");

-I2c 0对应VPSS的i2c_mode=0说明i2c init done by M3。默认的显示mode是1080P。

而使用OMX对应的VPSS的固件时,默认为1(即i2c init done by M3),i2c_mode=1.

鲜花

握手

雷人

路过

鸡蛋

地址 :湖南省株洲市天元区利江花园
合作 Email: administration@61ic.com

  • 关注61ic官方微博
    了解最新动态

  • 关注61ic微信公众号
    这里有好玩的讯息

  • 加入61ic交流群
    不断在这里成长

© 2014-2017 HuNan 湖南索炜达电子科技有限公司 . All rights reserved.
湘公网安备 43020202000020号

Archiver|手机版|小黑屋||湘ICP备13001086号-2 QQ 
返回顶部