【驱动】LCD驱动(FrameBuffer)分析
2013-09-05 23:46
495 查看
背景知识
在多媒体的推动下,彩色LCD越来越多地应用到嵌入式系统中,PDA和手机等大多都采用LCD作为显示器材,因此LCD的应用很有实际意义!LCD工作的硬件需求:要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/2440等。如S3C2410通过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN/TFT屏了。
S3C2440内部LCD控制器结构图
void __init s3c24xx_fb_set_platdata(struct s3c2410fb_mach_info *pd) { struct s3c2410fb_mach_info *npd; npd = kmalloc(sizeof(*npd), GFP_KERNEL); if (npd) { memcpy(npd, pd, sizeof(*npd)); //这里就是将内核中定义的s3c2410fb_mach_info结构体数据保存到LCD平台数据中,所以在写驱动的时候就可以直接在平台数据中获取s3c2410fb_mach_info结构体的数据(即LCD各种参数信息)进行操作 s3c_device_lcd.dev.platform_data = npd; } else { printk(KERN_ERR "no memory for LCD platform data\n"); } }
View Code
一个小知识
不知大家有没有留意,在平台设备驱动中,platform_data可以保存各自平台设备实例的数据,但这些数据的类型都是不同的,为什么都可以保存?这就要看看platform_data的定义,定义在/linux/device.h中,void *platform_data是一个void类型的指针,在Linux中void可保存任何数据类型。
上面平台驱动如何应用平台设备的数据以达到板与驱动分离的目地可有下图表示:
参考文章
http://blog.csdn.net/dwyane_zhang/article/details/7493874http://www.cnblogs.com/lishixian/articles/2999923.html
相关文章推荐
- Writing Linux LCD drivers—深入分析framebuffer设备驱动的结构
- LCD驱动分析(二):framebuffer结构的介绍
- LCD驱动分析(三): framebuffer驱动的注册
- Writing Linux LCD drivers—深入分析framebuffer设备驱动的结构
- LCD驱动分析(三): framebuffer驱动的注册
- Linux LCD驱动(一)——硬件分析和FrameBuffer
- LCD驱动分析(二):framebuffer结构的介绍
- LCD驱动分析(二):framebuffer结构的介绍
- Writing Linux LCD drivers—深入分析framebuffer设备驱动的结构
- Linux LCD驱动(一)——硬件分析和FrameBuffer
- Writing Linux LCD drivers—深入分析framebuffer设备驱动的结构
- linux下LCD(framebuffer)驱动分析
- Writing Linux LCD drivers—深入分析framebuffer设备驱动的结构
- LCD驱动分析(三): framebuffer驱动的注册
- Linux LCD驱动(一)——硬件分析和FrameBuffer
- LCD驱动分析(二):framebuffer结构的介绍
- Writing Linux LCD drivers—深入分析framebuffer设备驱动的结构
- linux LCD驱动(一)--硬件分析
- 嵌入式Linux之我行——S3C2440上LCD驱动(FrameBuffer)实例开发讲解(二)
- Linux-2.6.20的LCD驱动分析(一)[转]