LCD驱动 15 -2

1.分配一个fb_info结构体: framebuffer_alloc

2.设置

3.注册

4.硬件相关操

struct fb_fix_screeninfo {
 char id[16];   /* identification string eg "TT Builtin" */
 unsigned long smem_start; /* Start of frame buffer mem */
     /* (physical address) */
 __u32 smem_len;   /* Length of frame buffer mem */
 __u32 type;   /* see FB_TYPE_*  */
 __u32 visual;   /* see FB_VISUAL_*  */ 
 __u32 line_length;  /* length of a line in bytes    */
};

struct fb_var_screeninfo {

__u32 xres;   /* visible resolution  */

__u32 yres;

__u32 xres_virtual;  /* virtual resolution  */

__u32 yres_virtual;

__u32 bits_per_pixel;  /* guess what   */

struct fb_bitfield red;  /* bitfield in fb mem if true color, */

struct fb_bitfield green; /* else only length is significant */

struct fb_bitfield blue;

__u32 activate;   /* see FB_ACTIVATE_*  */

};

 1 static int lcd_init(void)
 2 {
 3     /* 1. 分配一个fb_info */
 4     s3c_lcd = framebuffer_alloc(0, NULL);
 5
 6     /* 2. 设置 */
 7     /* 2.1 设置固定的参数 */
 8     strcpy(s3c_lcd->fix.id, "mylcd");
 9     s3c_lcd->fix.smem_len = 480 * 272 * 16 / 8;
10     s3c_lcd->fix.type = FB_TYPE_PACKED_PIXELS;
11     s3c_lcd->fix.visual = FB_VISUAL_TRUECOLOR;  /*TFT*/
12     s3c_lcd->fix.line_length = 480 * 2;
13
14     /* 2.2 设置可变的参数 */
15     s3c_lcd->var.xres           = 480;
16     s3c_lcd->var.yres           = 272;
17     s3c_lcd->var.xres_virtual   = 480;
18     s3c_lcd->var.yres_virtual   = 272;
19     s3c_lcd->var.bits_per_pixel = 16;
20
21     /* RGB:565 */
22     s3c_lcd->var.red.offset     = 11;
23     s3c_lcd->var.red.length     = 5;
24
25     s3c_lcd->var.green.offset   = 5;
26     s3c_lcd->var.green.length   = 6;
27
28     s3c_lcd->var.blue.offset    = 0;
29     s3c_lcd->var.blue.length    = 5;
30
31     s3c_lcd->var.activate       = FB_ACTIVATE_NOW;
32
33     /* 2.3 设置操作函数 */
34     s3c_lcd->fbops = &s3c_lcdfb_ops;
35
36     /* 2.4 其他设置 */
37     //s3c_lcd->pseudo_palette;
38     //s3c_lcd->screen_base;                //显存的虚拟地址
39     //s3c_lcd->screen_size = 480 * 272 * 16 / 8;
40     /* 3. 硬件相关的设置 */
41     /* 3.1 配置GPIO用于LCD */
42     /* 3.2 根据LCD手册设置LCD控制器,比如VCLK的频率等 */
43     /* 3.3 分配显存(framebuffer),并把地址告诉LCD控制器 */
44
45     /* 4. 注册 */
46
47     register_framebuffer(s3c_lcd);
48
49     return 0;
50 }
时间: 2024-08-07 03:54:45

LCD驱动 15 -2的相关文章

TQ2440平台上LCD驱动的移植

参考: http://liu1227787871.blog.163.com/blog/static/205363197201242393031250/ http://blog.csdn.net/cumtgao/article/details/8649006 http://www.360doc.com/content/12/0424/17/9159905_206213245.shtml http://blog.csdn.net/yj4231/article/details/7878762 硬件平台

S3C2440 LCD驱动(FrameBuffer)实例开发<二>(转)

开发板自带的LCD驱动是基于platform总线写的,所以如果要使其它的LCD能够在自己的开发板上跑起来,那么就先了解platform驱动的架构,下面简单记录下自己看platform驱动时体会,简单的说platform是一种虚拟总线,那么它也是一条总线,所以它分为3个部分,platform_bus,platform_device,platform_driver.在platform_device向platform_bus注册设备,platform_driver向platform_bus注册驱动,注

S3C2440 LCD驱动(FrameBuffer)实例开发<一>(转)

1. 背景知识 在多媒体的推动下,彩色LCD越来越多地应用到嵌入式系统中,PDA和手机等大多都采用LCD作为显示器材,因此学习LCD的应用很有实际意义! LCD工作的硬件需求:要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器.在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/2440等.TQ2440是采用了S3C2440,S

展讯sc7731 LCD驱动简明笔记之二

此篇笔记基于sc7731 - android 5.1,对lcd的framebuffer做一个简明笔记. 一共分为两大部分:第一部分,关于LCD的硬件方面的:第二部分,关于lcd核心处理(framebuffer)部分的. 第一部分,LCD硬件相关的 一.液晶 液晶是一种高分子有机材料.当给它加上直流电场后,原本有序的分子排列被打乱,一部分液晶变得不透明,颜色加深,便因此显示出字符和图形. 液晶的光电效应:干涉.散射.衍射.旋光.吸收等. 二.LCD种类 1. 构造: 使用两块玻璃板夹着一块液晶:一

STM32学习之路-LCD驱动(1)<基础知识>

[1]以下关于 JVM 的叙述,哪些项正确? A.JVM 运行于操作系统之上,它依赖于操作系统 B.JVM 运行于操作系统之上,它与操作系统无关 C.JVM 支持 Java 程序运行,它能够直接运行 Java 字节码文件 D.JVM 支持 Java 程序运行,它能够直接运行 Java 源代码文件 扩展名为.java的是源代码文件(文本文件):开发时编写代码的文件 扩展名为.class的是字节码文件(二进制):系统运行时执行的文件 [2]下列选项中正确的表达式是: A.byte b = 128; 

LCD驱动分析(一)字符设备驱动框架分析

LCD驱动也是字符设备驱动,也遵循字符设备驱动的流程: a. 分配主设备号 b. 构建file_operations结构体中的open,write,read...等函数 c. 调用register_chrdev()函数注册字符设备 d. 调用class_register()注册类 e. 调用device_create()创建设备,linux会在sysfs目录下自动创建字符设备. 以上的步骤同样适用于分析输入子系统,只不过上面的各个步骤可能分散在不同的文件与函数中完成. 1.linux/drive

LCD驱动分析【转】

转自:http://blog.csdn.net/hanmengaidudu/article/details/21559153 1.S3C2440上LCD驱动 (FrameBuffer)实例开发讲解 其中的代码也可直接参考:drivers/video/s3c2410fb.c 以下为转载文章,文章原地址:http://blog.csdn.net/jianyun123/archive/2010/04/24/5524427.aspx S3C2440上LCD驱动 (FrameBuffer)实例开发讲解 一

Linux LCD驱动(三)--图形显示

3.  BMP和JPEG图形显示程序3.1  在LCD上显示BMP或JPEG图片的主流程图首先,在程序开始前.要在nfs/dev目录下创建LCD的设备结点,设备名fb0,设备类型为字符设备,主设备号为29,次设备号为0.命令如下:mknod fb0 c 29 0在LCD上显示图象的主流程图如图3.1所示.程序一开始要调用open函数打开设备,然后调用ioctl获取设备相关信息,接下来就是读取图形文件数据,把图象的RGB值映射到显存中,这部分是图象显示的核心.对于JPEG格式的图片,要先经过JPE

Linux LCD驱动(四)--驱动的实现

目录(?)[-] 基本原理 写 framebuffer 驱动程序要做什么 LCD 模块 驱动程序 控制器 什么是 frame buffer 设备 Linux Frame Buffer 驱动程序层次结构 数据结构 接口 一个 LCD controller 驱动程序 分配系统内存作为显存 实现 fb_ops 结构 基本原理 通过 framebuffer ,应用程序用 mmap 把显存映射到应用程序虚拟地址空间,将要显示的数据写入这个内存空间就可以在屏幕上显示出来: 驱动程序分配系统内存作为显存:实现