Linux LCD controller
来源:百度文库 编辑:神马文学网 时间:2024/04/29 08:50:05
一个 LCD controller 驱动程序
实现一个 LCD controller 驱动程序主要做如下两步:
- 分配系统内存作显存
- 根据具体的硬件特性,实现 fb_ops 的接口
- 在 linux/drivers/fb/skeletonfb.c 中有一个 frame buffer 驱动程序的框架,它示例了怎样用很少的代码实现一个 frame buffer 驱动程序。
分配系统内存作为显存
由于大多数 LDC controller 没有自己的显存,需要分配一块系统内存作为显存。 这块系统内存的起始地址和长度之后会被存放在 fb_fix_screeninfo 的 smem_start 和 smem_len 域中。该内存应该是物理上连续的。
对于带独立显存的显卡,使用 request_mem_region 和 ioremap 将显卡外设内存映射到处理器虚拟地址空间。
实现 fb_ops 结构
用户应用程序使用 ioctrl 系统调用操作 LCD 硬件。fb_ops 结构中定义的方法为这些操作提供支持。注意, fb_ops 结构不是 file_operations 结构。fb_ops 是底层操作的抽象,而 file_operations 为上层系统调用接口提供支持。
下面考虑需要实现哪些方法。ioctl 命令和 fb_ops 结构中的接口之间的关系如下所示:
FBIOGET_VSCREENINFO fb_get_varFBIOPUT_VSCREENINFO fb_set_varFBIOGET_FSCREENINFO fb_get_fixFBIOPUTCMAP fb_set_cmapFBIOGETCMAP fb_get_cmapFBIOPAN_DISPLAY fb_pan_display
只要我们实现了那些 fb_XXX 函数,那么用户应用程序就可以使用 FBIOXXXX 宏来操作 LDC 硬件了。那怎么实现那些接口呢?可以参考下 linux/drivers/video 目录下的驱动程序。
在众多接口中, fb_set_var 是最重要的。它用于设置 video mode 等信息。下面是实现 fb_set_var 函数的通用步骤:
- 检查是否有必要设置 mode
- 设置 mode
- 设置 colormap
- 根据上面的设置重新配置 LCD controller 寄存器
其中第四步是底层硬件操作。
Linux LCD controller
怎样写 Linux LCD 驱动程序
在Linux下驱动STN彩色LCD
Linux下的LCD驱动分析
dojoTree Controller
域控制器(Domain Controller)
LED & LCD
LCD 液晶显示器
LCD名词解释
简化Spring(3)--Controller层
nflashctrl NAND Flash Memory Controller
Core J2EE Patterns - Front Controller
[Bernstein09] Section 3.4. Request Controller
LCD基础及S3C2410 LCD控制器
Designing a Real-Time Robot Controller using ...
网卡驱动NVIDIA nForce Networking Controller
Linux
Linux
如何选购LCD显示器
S3C2410 LCD控制器
Ubuntu LCD亮度问题
LCD对比度和亮度
LCD保养小窍门
LCD-TV产业链介绍