S3C6410 LCD驱动的分析过程

首先,linux的驱动可以通过make menuconfig命令来进行配置,通过该命令,我们可以大概了解到这套内核所含了哪些可用的源代码。

因此我们可以通过这个命令,来查看源代码中包含什么驱动。初步定位驱动程序的位置。以下讲述一下我在没有其它资料的前提下怎么查找s3c6410芯片LCD相关驱动代码的位置的过程(假设你想换一下LCD屏,要改一下该驱动的各种信号的时序和分辨率):
1、执行make menuconfig
执行命令后,查看各个选择,找一下跟LCD有关的选项发现选项如下:
Device Drivers
|_Graphics support
  |_*Support for frame bufferdevices
  |_*S3C Framebuffer Support
  |_Select LCD Type(4.3 i...800x480)
关键就是这个Select LCD Type这里,里面可以选择很多类型,有7寸的800X480的,有10寸的等等。找到这里以后,我们要找出这个配置项会让内核在编译时做什么东东。

2、查看源代码目录的driver/KConfig文件(关于KConfig的格式可以自己上网查一下,《Linux驱动开发入门与实践》P89页也有讲述),通过大概的查看与分析,定位到"driver/video/KConfig"文件。然后在该文件中用“查找”的方法,找一下自己关心的配置项的配置信息(比如我们可以查一下Select LCD Type)。这时我们会发现找不到这个关键字。那么我们可以再试一下找这个配置项附近的一些其它配置项,如它上两行的“Support for frame buffer”选项。
找这些其它的配置项是为了大概定位到我们所需的配置项的位置。大概定位以后,我们再往下查找一下附近的"source"关键字,看以下引入了哪些文件。我们需要看的配置项有可能就在这些文件里。通过这个方式,我找到了我关心的配置项“Select LCD Type”的内容在"driver/video/samsung/KConfig"文件中。

3、定位到我们的配置项后,我们把这个配置项声明的宏定义给记录下来。例如:以下这些是我们关心的配置项的部份内容:

config FB_S3C_EXT
tristate "S3C Framebuffer Support (eXtended)"
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
depends on FB && (ARCH_S3C64XX || ARCH_S5P64XX || ARCH_S5PC1XX)


default y if VIDEO_SAMSUNG
---help---
TBA


choice
depends on FB_S3C_EXT
prompt "Select LCD Type"
default FB_S3C_EXT_TFT480272


config FB_S3C_EXT_TFT480272
boolean "4.3 inch 480x272 TFT LCD"
select TOUCHSCREEN_IF
help
 4.3 inch 480x272 TFT LCD


config FB_S3C_EXT_TFT800480
boolean "7 inch 800x480 TFT LCD - A70"
select TOUCHSCREEN_IF
help
 7 inch 800x480 TFT LCD


config FB_S3C_EXT_S70T800480
boolean "7 inch 800x480 TFT LCD - S70"
select TOUCHSCREEN_IF
help
 7 inch 800x480 TFT LCD


config FB_S3C_EXT_W50I800480
boolean "5 inch 800x480 TFT LCD - W50i"
select TOUCHSCREEN_IF
help
 5 inch 800x480 TFT LCD


config FB_S3C_EXT_T240320
boolean "3.5 inch 240X320 Toppoly LCD"
select TOUCHSCREEN_IF
help
 3.5 inch 240X320 Toppoly LCD

这里的"FB_S3C_EXT"和"FB_S3C_EXT_TFT_LCD类型"是会影响内核的宏定义,我们要把它记下来然后进入下一步的分析。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyzwpw.html