• 内核总线之LCD,frambuffer(sb)


    第一步:裁剪掉板子自带的LCD驱动程序

          裁剪一个LCD,不同与以前类似与LED,蜂鸣器之之类的驱动,可以在make menuconfig中直接注释,编译生成zImage 镜像,这样的话将会导致板子很多的功能受限,只能在源码包中/driver/video/s3c-fb0.c中注释驱动,才能把板子自带的LCD驱动干掉!

          

           注释之后make生成新的zImage镜像,在新生成的zImage下载到板子之前,启动板子,可以在/dev的目录下看到fb0设备。

          

          观察在/sys/class/graphics/目录下面页也会有一个fb文件

          

          再把新的镜像文件下载到板子,发现两个目录下的文件都不在了,在自己编写LCD驱动程序之前,需要先了解驱动程序是怎样工作的,设备文件的/dev/fb0 的文件创建过程如下:

          

      

       编写的模块代码如下:

              

      1 #include <linux/init.h>
      2 #include <linux/thread_info.h>
      3 #include <linux/module.h>
      4 #include <linux/sched.h>
      5 #include <linux/errno.h>
      6 #include <linux/kernel.h>
      7 #include <linux/module.h>
      8 #include <linux/slab.h>
      9 #include <linux/input.h>
     10 #include <linux/init.h>
     11 #include <linux/serio.h>
     12 #include <linux/delay.h>
     13 #include <linux/clk.h>
     14 #include <linux/miscdevice.h>
     15 #include <linux/io.h>
     16 #include <linux/ioport.h>
     17 #include <linux/vmalloc.h>
     18 #include <linux/dma-mapping.h>
     19 #include <linux/export.h>
     20 #include <linux/gfp.h>
     21 #include <linux/cdev.h>
     22 #include <linux/fb.h>
     23 #include <asm/dma-mapping.h>
     24 #include <asm/uaccess.h>
     25 
     26 #include <linux/gpio.h>
     27 #include <mach/gpio.h>
     28 #include <plat/gpio-cfg.h>
     29 #include <linux/completion.h>
     30 #include <linux/miscdevice.h>
     31 #include <linux/platform_device.h>
     32 #include <linux/usb.h>
     33 
     34 MODULE_LICENSE("GPL");
     35 MODULE_AUTHOR("bunfly");
     36 
     37 int s3c_probe(struct platform_device *dev);
     38 
     39 struct platform_driver s3c_fb = {
     40     .probe = s3c_probe,
     41     .driver = {
     42         .name = "exynos4-fb",
     43     },
     44 };
     45 
     46 struct fb_info info;
     47 
     48 int test_init(void)
     49 {
     50     platform_driver_register(&s3c_fb);
     51 }
     52 
     53 void test_exit(void)
     54 {
     55 }
     56 
     57 module_init(test_init);
     58 module_exit(test_exit);
     59 
     60 int s3c_probe(struct platform_device *dev)
     61 {
     62     printk("probe
    ");
     63     register_framebuffer(&info);
     64     return 0;
     65 }
     66 
     67 
     68 
     69 
     70 

        通过这个模块,在/dev目录下面可以看到有fb0的设备:

      

          

  • 相关阅读:
    For each···in / For···in / For···of
    JavaScript object
    specific word count (index of )
    history of program
    js的回调函数
    promise
    js的事件流事件机制
    js的closures(闭包)
    baidu-map
    基于封装优点的类设计习惯
  • 原文地址:https://www.cnblogs.com/hongzhunzhun/p/4547398.html
Copyright © 2020-2023  润新知