Linux 驅動—LCD學習
始發:2014-05-04 13:32:49 版本資訊: Linux :2.6.31 U-Boot:u-boot-2010.06 BusyBox: BusyBox 1.15.2 交叉編譯器:arm-linux- v4.3.3
這篇實踐有兩部分:一是驅動程式移植,二是製作自己的開機LOGO。
一、驅動移植
1、設定時鐘頻率,不採用原始碼中複雜的計算方式,直接修改。
修改drivers/video/s3c2410fb.c中的函式,如下紅色粗體:
在 struct s3c2410fb_display 結構體中並沒有 setclkval 成員,所以需要新增該成員:
arch/arm/mach-s3c2410/include/mach/fb.h
2、修改LCD的引數,這需要對照所用LCD的datasheet。
arch/arm/mach-s3c2440/mach-smdk2440.c
重要引數說明:
(1)pixclock — 畫素時鐘,即畫1個點需要的時間值,單位皮秒(ps)。比如,如果datasheet指定時鐘25MHz,那麼:
1000000/25 = 40000(ps)
(2)setclkval — 是LCDCON1暫存器CLKVAL值,由它決定VCLK(Pixel clock signal)的值,如下圖:
引數設定好後,還有一重要地方要改,就是其下面的函式:
3、配置核心,並支援啟動LOGO。
Device Drivers: Graphics Support ---> <*>support for frame buffer devices ---> [*] Enable frameware EDID [*] Enable Vidoe Mode Handling Helpers <*> S3C24X0 LCD framebuffer support Console display driver support ---> <*> Framebuffer Console Support [*] Bootup Logo ---> <*> Standard 224-color Linux logo
4、編譯並燒寫核心,可以看到左上角一隻企鵝,說明驅動移植正常。
二、LOGO製作
LOGO製作需要用到GNU開源軟體GIMP(GNU Image Manipulation Program)。
1、用光影魔術手或其他軟體得到320x240尺寸的圖片,複製到Linux系統,用GIMP開啟:
注:若不轉換成320x240大小的圖片,圖片體積會很大
2、在圖片編輯區右鍵依次選擇:
Image—>Mode—>Indexed,出現圖片轉換配置選項,做如下設定:
點選Convert進行轉換。
3、得到.ppm格式的檔案:
右鍵依次:File—>Export,在彈出的對話方塊中作如下設定:
4、把檔案重新命名為logo_linux_clut224.ppm,複製到drivers/video/logo資料夾,覆蓋原檔案。
5、重新編譯核心,燒錄,啟動過程中即可看到我們的LOGO圖片: