公众号
欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。
本文不写如何,和分析linux,framebuffer的框架和架构,本文以最小的文字告诉大家如何写一个lcd的驱动,首先,驱动少不了的两个东西,入口和出口函数
module_init(x210_lcd_init);
module_exit(x210_lcd_exit);
入口函数就是,当我们insmod xx.ko文件的时候就会调用的函数,所以我们开始写这个x210_lcd_init函数,
1,我们首先分配一个struct fb_info *x210_fb_info = framebuffer_alloc(0, NULL),分配一个fb_info结构体,
2,结构体有了,我们用来干嘛,不用说就是填充各个结构体的各项,
2.1 /*ops故名思意就是操作函数,到时候我们注册到framebuffer的时候,lframebuffer里面肯定有函数会调用,哪里调用我们暂时不管*/
x210_fb_info->fbops = &s3cfb_ops;
2.2 /*然后就是固定参数很可变参数的设置了*/
//具体参数是什么就和你自己的lcd有关了,
/*设置固定参数*/
x210_fb_info->fix.smem_len = 1024*600*32/8;
x210_fb_info->fix.type = FB_TYPE_PACKED_PIXELS;
x210_fb_info->fix.visual =FB_VISUAL_TRUECOLOR;
x210_fb_info->fix.line_length =1024*4;
/*设置可变参数*/
x210_fb_info->var.xres = 1024;
x210_fb_info->var.yres = 600;
x210_fb_info->var.xres_virtual = 1024;
x210_fb_info->var.yres_virtual = 600;
x210_fb_info->var.bits_per_pixel =32;
2.3//然后就是硬件相关操作了,就是设置lcd控制器的各种寄存器,使能时钟啦,设置合适的时钟,
2.4//然后就是分配显存了,显存是用来干嘛?当然是用来存放你要显示的数据咯。
2.5//分配的显存当然要告诉上面的结构体里面的成员咯,不然那个框架怎么找得到你分配的显存在那个位置。还有告诉lcd控制器哦,因为它需要帮你把这些数据搬到lcd上嘛,你告诉它,它怎么知道在哪里。
重点:
重点来了,我们那么辛苦分配的结构体,当然要向framebuffer爸爸,注册咯,不然老子怎么知道儿子干了那么多活,注册。
register_framebuffer(x210_fb_info);
就是这么简单注册完成。
然后,就没有,然后了,结束了。全部的代码请看我上一篇文章