如何从零写linux,lcd驱动

 公众号
欢迎扫码关注本人微信公众号:公众号上分享更多嵌入式知识和资料,分享个人学习嵌入式的心得体会。欢迎大家一起来玩呀。

 

  本文不写如何,和分析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);

    就是这么简单注册完成。

   然后,就没有,然后了,结束了。全部的代码请看我上一篇文章


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值