歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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類型"是會影響內核的宏定義,我們要把它記下來然後進入下一步的分析。

Copyright © Linux教程網 All Rights Reserved