OK6410 LCD驅動移植

2021-06-06 03:55:22 字數 4109 閱讀 4442

今天完成了 ok6410 的lcd 驅動移植,那麼直接進入正題,我的操作環境是:

主機: xp系統, vmware ubuntu 10.10  虛擬機器。   開發板:ok6410,a板,256m+2g 。   lcd :飛凌4.3 寸tft ,wxcat43, 480*272

如果你是參考這篇博文來移植的話,我還是要強調一下上面的 開發板環境 和 移植核心的版本,這很重要,因為不同的硬體有不同的要求和

說明,而不同的核心版本之間又有著不同的差異性。 當然這些也並不是絕對的。其他的環境也可以參考這篇博文。

我先來講講對於飛凌的ok6410 開發板 lcd 驅動移植的操作步驟,再來分析這些操作步驟和網上 lcd 驅動移植在方法和效果不同的地方。

lcd 驅動移植所依賴的檔案有:

arch/arm/mach-s3c64xx/mach-smdk6410.c                    drivers/videl/samsung/s3cfb.c

drivers/videl/samsung/s3cfb_spi.c                                     drivers/videl/samsung/wxcat43.c

arch/arm/mach-s3c64xx/include/mach/regs-lcd.h

1、 修改 arch/arm/mach-s3c64xx/mach-smdk6410.c

注釋掉 smdk6410_machine_init(void) 中的

//	gpio_request(s3c64xx_gpn(5), "lcd power");	// cancel by acanoe

// gpio_request(s3c64xx_gpf(13), "lcd power");

// gpio_request(s3c64xx_gpf(15), "lcd power");

在 sruct map_desc smdk6410_iodesc  中新增 lcd support

static struct map_desc smdk6410_iodesc = 

/**************** add by acanoe *****************************/

};

操作說明:這裡不用奇怪為什麼僅僅這有這麼少的修改, 因為飛凌的一貫作風就好似寧可少改,套用,仿照。 也不願去建立自己的目錄項。

就像它將 smdk6410 作為它的開發板目錄,而不去建立乙個ok6410 的開發板基準目錄一樣。 在這裡飛凌依舊沿用了他的這種作風,你可

以檢視一下 在smdk6410.c 中是否已經有過 lcd 的一些結構體 和函式體, 飛凌就是利用了這些已經存在了的,而沒有自己建立,學習飛凌

的開發板,你要學會適應這些。呵呵!

2、新增 drivers/video/samsung 目錄。

核心目錄,這個目錄下的檔案主要是 makefile, kconfig ,s3cfb.c s3cfb_spi.c   wxcat43.c  這些就是你的lcd 驅動依賴檔案。

3、修改drivers/video  目錄下的makefile 和 kconfig

copy 完後,下來就是修改 drivers/video 下面的makefile 和 kconfig ,這樣做的主要目的是為了,將你的驅動載入進 make menuconfig 的

配置選單中,以便核心編譯的時候,講你的lcd驅動編譯進核心。

修改 drivers/video/makefile                  在makefile 的最後一行新增  obj-$(config_fb_s3c_ext)+= samsung/

修改 drivers/video/kconfig在倒數第二行,endmenu 前新增: source 「drivers/video/samsung/kconfig」

修改完成後make menuconfig 在 

device drivers ->  graphics support ---> 

選中 support for frame buffer devices --->       // 支援 fb

會發現下面新增了: 按照下面的配置核心:

s3c frambuffer support (exended)

select lcd type ( 4.3 inch 480*272 tft lcd)  --->

advanced options for s3c frambuffer

select bpp(bits per pixel ) ( 16 bpp ) --->

(4) number of  framebufers

[  ] enable virtural screen

[ * ] enable double buffering. 

如果 你配置核心時沒有出現上面的選項。請檢查是否選中了 fb 支援。如果已經有fb 支援,請檢查上面修改的 makefile 和 kconfig。

配置支援logo

graphics support  --->   

support for frame buffer devices  

console display driver support  --->  

framebuffer console support    

logo configuration  --->    

[*] bootup logo   

[*]   standard 224-color linux logo  

4、make  zimage

make zimage 時請留意在編譯 drivers 目錄下時,是否出現了 drivers/video/samsung 以檢查你的去的那個模組是否被編譯進核心。

啟動是uboot 的 lcd 的關鍵列印資訊

s3c_lcd clock got enabled :: 133.000 mhz

lcd type :: lte480wv will be initialized

window[0] - fb1: map_video_memory: clear ff600000:0007f800

fb1: map_video_memory: dma=5f980000 cpu=ff600000 size=0007f800

window[0] - fb2: map_video_memory: clear ff63fc00:0003fc00

fb2: map_video_memory: dma=5f9bfc00 cpu=ff63fc00 size=0003fc00

console: switching to colour frame buffer device 60x34

fb0: s3cfb frame buffer device

window[1] - fb1: map_video_memory: clear ff700000:0007f800

fb1: map_video_memory: dma=5fa00000 cpu=ff700000 size=0007f800

window[1] - fb2: map_video_memory: clear ff73fc00:0003fc00

fb2: map_video_memory: dma=5fa3fc00 cpu=ff73fc00 size=0003fc00

fb1: s3cfb frame buffer device

window[2] - fb1: map_video_memory: clear ff680000:0003fc00

fb1: map_video_memory: dma=5fa80000 cpu=ff680000 size=0003fc00

fb2: s3cfb frame buffer device

window[3] - fb1: map_video_memory: clear ff780000:0003fc00

fb1: map_video_memory: dma=5fac0000 cpu=ff780000 size=0003fc00

fb3: s3cfb frame buffer device

jkq debug vidcon0 is 353

OK6410 LCD驅動移植

今天完成了 ok6410 的lcd 驅動移植,那麼直接進入正題,我的操作環境是 主機 xp系統,vmware ubuntu 10.10 虛擬機器。開發板 ok6410,a板,256m 2g lcd 飛凌4.3 寸tft wxcat43,480 272 如果你是參考這篇博文來移植的話,我還是要強調一下...

ok6410LCD測試程式

1.在螢幕上分別顯示紅綠藍三個長方形 自定義結構體用來在使用者空間裡管理幀緩衝的資訊 typedef struct fd dev fb dev t 實現緩衝裝置的開啟和關閉操作的介面 int fb open fb dev t fbd,char fbn 獲取lcd的可變引數 ioctl fbd fd,...

6410 LCD驅動移植

移植工作主要有以下部分 僅僅對未作處理的部分做闡述 1.在mach smdk6410.c這個檔案中新增初始化的裝置 s3c device fb,會根據name 自動關聯執行哪個裝置的probe的探測函式 同時在plat s3c64xx下面增加dev fb.c 主要是用來填充platform fb這個...