Ipu 与多显——yocto跟android下的简介
来源:互联网 发布:单片机管脚图 编辑:程序博客网 时间:2024/06/03 16:40
注:由于跟平台相关,所以一些内容不会说得太直白,跳步比较多。
至今,cpu里面使用到ipu的厂家不多,目前freescale是其中一家。所以,以下的分析是基于freescale平台的ipu情况的基本讲解。
IPU是什么?IPU是显卡中的CPU,GPU的一种,由英伟达首先提出,以减少CPU的开销。最初由英伟达提出。目前实现IPU的厂家不多,freescale就是其中之一。接下来是freescale官方资料里面对IPU在显示里面所处的角色的描述。
如上图,ipu,gpu,vpu之间的关系。
其中VPU负责对视频流进行处理(通过vpu,能实现多路视频流的处理),然后通过GPU做渲染加速,最终输出到ipu显示到屏幕上。所以简单来说,ipu是用来显示的。
上文说到,ipu是gpu中的cpu,那么想当然ipu也存在多核的情况。实际上也是这样的,我们假设存在着两个ipu,分别是ipu0和ipu1。在ipu里面,一个ipu对应两个DI(display interface)。而一个DI对于两个fb(这是平台的特殊性,既然有两个fb,那么可以猜想到这个平台一个屏幕里面是分为前屏,和后屏)。那么按照这样的猜想,我们得知:如果有两个ipu的话,理论上能有8个fb,按照一个屏有两个fb的话,那么可以支持4路的显示。这也是官方给出的支持4路独立显示的数据,不过实际上fb的数量只能注册到6路,到底是为什么?下文会说到。
如上图,是ipu与fb的对于情况。还有补充一点,官方说法是4路显示,但实际中很难实现,有兴趣的话可以去研究一下。
Ipu在dts里面的描述:
当注册fb的时候,驱动会去dts里面寻找关于fb的描述:
在ipu驱动的注册阶段,ipu驱动会根据dts里面不同屏幕的描述去获取fb的排号,把fb关联到相应的ipu_id上去,其中fb0 是系统默认的主屏幕。
在注册驱动的时候绑定ipu_id
其中,注册ipu前会对ipu的使用情况进行检查,我们看到probe函数里面:
这段代码,也是解释了上面说到的为什么fb的数量只能注册到6个。
好,接下来我们看看在文件系统里面的情况。
但系统起来后,假设我们设置了相关显示的环境变量:video0:ldb , video1:Hdmi,video2:lcd
那么会有以下的对于关系:
Ldb fb0 , fb1Hdmi fb2Lcd fb3 , fb4
同样的,我们可以看到 /dev/video下对于的video节点数:
ls /dev/videovideo16 video17 video18 video19 video20
对于前屏和后屏,开启关闭动作可以通过blank来操作:
如:
# echo 0 > /sys/class/graphic/fb1/blank
我们就可以看到fb1开启。
在yocto上的操作:
Freescale Yocto上有集成gst的框架,还有各种各样的插件。我们可以参考freescale上给出的参考,在不同屏幕上播放视频:
gst-launch playbin2 uri=file:///$file1 video-sink="mfw_v4lsink device=$VIDEO_DEVICE1 disp-width=$width disp-height=$height" &gst-launch playbin2 uri=file:///$file2 video-sink="mfw_v4lsink device=$VIDEO_DEVICE2 disp-width=$width disp-height=$height"
当然,在yocto的系统上,还可以通过配置文件来指定输出等等,有兴趣的话可以自行研究一下。
接下来我们看看在android下是如何处理多显的。
在android下,linux层面上大同小异,但在android层面上异显的方式更加灵活,因为在framework下有成熟的api。不多说,看看以下用法。
更android使用异显api的详细情况可以查看freescale的community参考例程。
- Ipu 与多显——yocto跟android下的简介
- i.MX6 Yocto工程简介与分析
- mongo简介——BSON数据类型与它们的编号跟比较顺序
- yocto下的bb版本hello world
- [ubuntu]yocto的安装配置与开发
- [ubuntu]yocto的安装配置与开发
- Android,Yocto,Meego构建系统的区别
- yocto添加层简介
- Yocto tips (7): Yocto Bitbake的clean与cleanall以及cleansstate的区别
- Yocto tips (5): Yocto如何更改source code的下载与git clone地址
- Image Processing Unit(IPU)简介
- yocto下的cmake版本hello world,追加分层使用
- 跟小博老师一起学JSP ——简介与工作原理
- IPU缩放图片的实现
- IPU VPU GPU的关系
- 下拉刷新——Android使用SwipeRefreshLayout简单实现下拉刷新与加载跟多
- Android SharedPreferences与Editor简介(下)
- Yocto的使用实例
- 内存管理
- 小米2S Wifi总是无法连接故障修复
- spring(7) Spring中的依赖bean
- 黑马程序员----课题小总结
- spring(8) Spring中bean的作用域
- Ipu 与多显——yocto跟android下的简介
- C语言一个关于文件操作的示例
- java中定时器(java.util.Timer)
- Java进阶---Java一些基础知识
- 心理助手app
- spring(9) Spring中使用外部属性文件
- 初涉android中的回调机制
- How to open a popup window in infopath
- 简单记录