第一步:裁剪掉板子自带的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
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 #include
15 #include
16 #include
17 #include
18 #include
19 #include
20 #include
21 #include
22 #include
23 #include
24 #include
25
26 #include
27 #include
28 #include
29 #include
30 #include
31 #include
32 #include
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('proben');
63 register_framebuffer(&info);
64 return 0;
65 }
66
通过这个模块,在/dev目录下面可以看到有fb0的设备: