LCD驱动程序架构--国嵌

LCD裸机驱动回顾

1.LCD初始化

1.1.控制器初始化

1.2.端口初始化

1.3.指明了帧缓冲

2.LCD图形显示

2.1.将图形数据写入帧缓冲

Linux帧缓冲体验

把图片转换成开发板屏对应的宽高像素和颜色深度,然后把图片放到开发板文件系统中。通过cat image.bin > /dev/fb0命令把图片写入LCD帧缓冲,这样就可以在LCD屏上看到对应的图片。这个实验说明Linux下面一样使用了帧缓冲,并且帧缓冲变成了一个设备文件。

Linux帧缓冲架构

应用程序通过把图像数据写入/dev/fb0字符设备中,来达到把图像数据写入帧缓冲的目的。

1.打开/drivers/video/fbmem.c文件,并找到fbmem_init函数,在该函数中注册了字符设备的帧缓冲

2.当要往帧缓冲中写数据的时候,调用的是fb_write函数。在Linux内核中,每一个帧缓冲都有一个fb_info结构与之对应。帧缓冲的地址就保存在fb_info结构的screen_base变量中。LCD屏的参数设置在fb_info结构的var变量中。

LCD驱动程序分析

LCD驱动程序代码在/drivers/video/s3c2410fb.c文件中,在该驱动的s3c2410fb_init中注册了平台驱动,该驱动的初始化代码在s3c24xxfc_probe函数中。

1.分配fb_info结构,使用framebuffer_alloc

2.获取LCD控制器的物理地址,并将其转化为虚拟地址

3.初始化fb_info结构

3.1.设置fb_ops

4.分配帧缓冲内存,LCD控制器通过DMA来访问帧缓冲,使用dma_alloc_writecombine

5.设置引脚类型

6.设置LCD显示参数

7.注册帧缓冲,使用register_framebuffer

7.1.设备LCD控制器

7.2.将帧缓冲地址告诉给LCD控制器

猜你喜欢

转载自blog.csdn.net/zjy900507/article/details/81284395