摘要:45 struct fb_info *registered_fb[FB_MAX] __read_mostly;这个是全局的变量,通过这个全局变量,在系统内可以随时获取需要的fb_info,具体的获取方法是通过比对 registered_fb[i]->fix.id来确定需要的fb_info, 示例代码如下 for (i = 0; i < num_registered_fb; i++) { char *idstr = registered_fb[i]->fix.id; if (strcmp(idstr, "DISP3 FG") == 0) { fbi = re
阅读全文
随笔分类 - Linux Framebuffer
摘要:作者: 李先静 xianjimli@gmail.com 日期: 2010-01-14 本文介绍了 Android 的 framebuffer 的整体架构,图文并茂,比较清晰。文章转自 http://www.limodev.cn/blog简介FrameBuffer 在Android中并不像在其它GUI那样直观,抽象的层次比较多,加上GUI的更新是通过OpenGLES来做的。所以让人很难搞清GUI更新的整个流程,最近要准备一个讲稿,所以花了一些去研究,这里做点笔记供大家参考,源代码是基于高通平台的,这些代码在网上都可以下载。FrameBuffer 的相关组件如下图所示:SurfaceFlinger
阅读全文
摘要:这周抽空研究了一下SurfaceFlinger,发现真正复杂的并不是SurfaceFlinger本身,而是android的display显示系统,网上关于这部分的介绍有不少,本不打算写的,但是发现还是记录一下研究代码的过程比较好,一是能够帮助自己理清思路,另一个原因就是以后当这块内容忘记的时候,能快速的通过这个记录捡起来。 一. android显示系统的建立 我们看SurfaceFlinger的定义就知道,它其实是一个Thread, 因此SurfaceFlinger的初始化工作就理所当然的放在了SurfaceFlinger线程中,详见readyToRun()@SurfaceFlinger.cp
阅读全文
摘要:本文重点针对HDMI在android上的应用,而比较相关的就是overlay机制。overlay在这里只是简单的介绍,后续会有文章再专门详述。 我没记错的话,高通从7X30开始,平台就可以支持HDMI(1.3)输出了。只不过在7x30上通过RGB接口外接一颗HDMI的transmitter来实现;而到了8系列(8x60),高通把这颗IC也集成了,直接就提供HDMI的输出了。(这样下去,以后渐渐的把外围器件都集成了,做底层的估计要失业了,做硬件的似乎工作量也没多少了)。 先来看看HW的能力,下图是MDP4.0的结构图: 可以看到,MDP4内部有4个overlay pipe,2个是for UI(R
阅读全文
摘要:1 FrameBuffer的发展历史计算机研究者从很早开始已经开始讨论理论上FrameBuffer的优点,但却一直苦于没有能力生产一台拥有足够内存的计算机。1969年,贝尔实验室的JoanMiller试验了第一个已知的FrameBuffer。该设备显示了一幅3位位深的图片。然而,直到20世纪70年代,集成电路的内存芯片上的进展才使得制造一个可以显示标准视频图像的FrameBuffer成为可能。1972年,Richard Shoup在施乐帕洛阿尔托研究所里设计了SuperPaint系统,该系统拥有311,040字节的内存,并能存储640*480像素8位位深的图片。这些内存分散在16个回路电板上,
阅读全文
摘要:了解液晶顾名思义,液晶显示器(Liquid Crystal Display,简称LCD)就是使用了“液晶”(Liquid Crystal)作为材料的显示器,那什么是液晶呢?其实,液晶是一种介于固态和液态之间的物质,当被加热时,它会呈现透明的液态,而冷却的时候又会结晶成混乱的固态,液晶是具有规则性分子排列的有机化合物。液晶按照分子结构排列的不同分为三种:类似粘土状的Smectic液晶、类似细火柴棒的Nematic液晶、类似胆固醇状的Cholestic液晶。这三种液晶的物理特性都不尽相同,用于液晶显示器的是第二类的Semitic液晶,分子都是长棒状的,在自然状态下,这些长棒状的分子的长轴大致平行。
阅读全文
摘要:帧缓冲(framebuffer)设备应用于linux显示技术方面。因为linux的显示平台已经全部基于framebuffer,所以目前在linux环境下开发图形化界面、游戏、影视软件等可视化应用时都必须用到帧缓冲技术,而现在随着消费逐渐娱乐化的大趋势,可视化应用已经在产品开发中越来越重要,因此,对于帧缓冲技术的理解和掌握就非常重要了。1 Frambuffer介绍 帧缓冲在linux体系中居于上层应用和底层显示设备之间,如下图所示。它的设计意图是对上层应用屏蔽掉低层不同硬件的操作细节:对于不同厂家不同类型的显示硬件,由于各自厂商在技术上扬长避短的需要,所以在具体的细节比如寄存器数量和种类的设计.
阅读全文
摘要:【什么是FrameBuffer】FrameBuffer直译就是,帧缓冲。Frame帧:你所看到的屏幕的图像,或者在一个窗口中的图像,就叫一帧。Buffer缓冲:一段RAM,用来暂存图像数据,这些数据会被直接写入到显示设备。帧缓冲就相当于介于 图形操作 和 图像输出中间的一个中间人。将程序对图形数据的处理操作,反馈到显示输出上。显卡(显存中的数据) <-> 帧缓冲(程序对其中的数据进行处理) <-> 显示器(输出图像)帧缓冲可用于,实现原先视频卡并不支持的分辨率。显卡可能并不支持你当前某个更大分辨率的显示器,但是可以通过帧缓冲获取显卡的显存中的数据,处理之后,实现更大的分
阅读全文
摘要:大家都知道Unix/Linux系统是由命令驱动的。那么最基本的系统是命令行的(就是想DOS一样的界面)。X-Window-System是Unix/Linux上的图形系统,它是通过X-Server来控制硬件的。但有一些Linux的发行版在引导的时候就会在屏幕上出现图形,这时的图形是不可能由X来完成的,那是什么机制呢?答案是FrameBuffer。FrameBuffer不是一个图形系统,更不是窗口系统。它比X要低级,简单来说FrameBuffer就是一种机制的实现。这种机制是把屏幕上的每个点映射成一段线性内存空间,程序可以简单的改变这段内存的值来改变屏幕上某一点的颜色。X的高度可移植性就是来自于这
阅读全文
摘要:嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn 一、开发环境主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2二、背景知识1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以CO
阅读全文
摘要:嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn 一、开发环境主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2二、背景知识1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以CO
阅读全文
摘要:一、让LCD显示可爱的小企鹅还是先说说环境吧,处理器为S3C2410,linux的版本当然是2.6.20的。下面先说说怎样让LCD上显示出可爱的小企鹅。最直接的步骤如下(记住不要问为什么哈~_~,一步一步跟着走就行了):1. 添加s3c2410处理器的LCD控制寄存器的初始值,具体做法为在文件arch/arm/mach-s3c2410/mach-smdk2410.c中添加struct s3c2410fb_mach_info类型的寄存器描述讯息,如下所示:static struct s3c2410fb_mach_info smdk2410_lcd_platdata = {.fixed_syncs
阅读全文