行業資訊

您所在的位置:首頁 > 關於杏吧 > 行業資訊
杏吧小課堂丨基於IMX6X係列3.0.35內核的LCD移植
發布人:管理員   發布時間:2019/8/30 13:30:49

本文主要使用平台是 imx6x 係列, linux3.0.35 操作係統。參考用戶資料是OKMX6Q-C、OKMX6DL-C (Linux)用戶資料-2018.11.28。

我們在調試LCD屏幕是否能夠在開發板上使用的時候,首先應該判斷屏幕硬件上使用的線序是否能夠和開發板上的硬件線序一致;硬件上能夠接到開發板上才能夠談後邊的軟件調試。接著硬件接好後判斷LCD屏幕是否被點亮,如果屏幕不能夠點亮,先要檢查一下PWM背光控製;屏幕能夠被點亮了,我們才能夠調試顯示,也就是我們這篇文章的主要目的。

下麵我們以調試10.4LCD屏幕顯示為例,簡單說一下LCD調試時軟件需要做的主要修改。

1、關於uboot部分的修改

關於UBOOT部分的修改,主要的作用是能夠正常顯示開機logo,以及將內核需要的參數信息傳遞給內核。UBOOT修改主要涉及到以下兩個文件:

❶ 修改uboot-2009-08/include/configs/mx6q_sabresd.h中的顯示參數,如下麵兩張圖片的紅色方框部分

 

 

❷ 修改board/freescale/mx6q_sabresd/mx6q_sabresd.c文件係統,添加LCD顯示的參數:紅色部分為添加項。

static struct fb_videomode displays[] = {

{

.name = "AT104-WVGA",

.refresh = 60,

.xres = 800,

.yres = 600,

.pixclock = 25000,

.left_margin = 210,

.right_margin = 40,

.upper_margin = 23,

.lower_margin = 3,

.hsync_len = 6,

.vsync_len =2,

.sync = FB_SYNC_CLK_LAT_FALL,

.vmode = FB_VMODE_NONINTERLACED,

.flag = 0,

.mode = FB_VIDEOMODE_LCD,

},、

 

2、內核相關部分修改

內核部分的LCD配置,就是LCD屏幕係統啟動後的正常顯示。主要修改一個文件就可以了。

修改linux-3.0.35/drivers/video/mxc/mxc_lcdif.c文件,在以下結構體中添加紅色部分,紅色部分的參數我們介意看到和UBOOT中的參數是一致的。

static struct fb_videomode lcdif_modedb[] = {

       ………………….

        /* 800x480 @ 60 Hz , pixel clk @ 33.3MHz */

        "AT070-WVGA", 60, 800, 480, 30030, 210, 46, 22, 23, 10, 10,

        FB_SYNC_CLK_LAT_FALL,

        FB_VMODE_NONINTERLACED,

        0,},

        …………………………………….

        {

        "AT104-WVGA", 60, 800, 600, 25000, 210,40, 23, 3, 6, 2,

        FB_SYNC_CLK_LAT_FALL,

        FB_VMODE_NONINTERLACED,

        0,},

};

特別強調:

AT104-WVGA這個名字需要在UBOOT中的設置以及內核中的設置保持一致,名稱沒有限製,唯一要求是UBOOT和內核中一定要一致。

LCD顯示部分我們經常涉及到的修改,主要是以上提到的部分,修改完成後將重新編譯生成的鏡像燒寫到開發板中,接上10.4LCD屏就可以看到,屏幕能夠正常顯示了。

3、相關參數理解

對於涉及到的LCD參數值的設置,可能有些客戶不太了解,下麵小編簡單說下自己的理解:

首先看一下在內核的include/linux/fb.h文件中關於fb_videomode的定義:

 

以上定義的參數和UBOOT中也是對應的。這些值是由LCD廠家提供的屏體手冊來確定的。

接著我們以10.4嘉匆幌10.4計戀鈉撂迨植嶂械牟問

 

其中圖中紅色方框的28指的是vertical的Blanking典型值,紅色方框中的256指的是Horizontal的Blanking的典型值。

下麵有個框圖展示了這些參數的關係:

 

通過以上示意圖我們可以了解到,在10.4計戀鈉撂迨植嶂

Left_margin+right_margin+hsync_len=256

Upper_margin+lower_margin+vsync_len=28

我們在設置left_margin,right_margin,hsync_len三個值得時候保證他們的和是256即可,在upper_margin,lower_margin,vsync_len三個值得時候保證他們的和是28即可。

有些LCD手冊中會直接給出這6個參數的值,那麼就可以根據硬件手冊給出的值直接設置,調試的時候微調即可。

 pxclock參數的確定方法:

dotclock=1/dotclock,其中dotclock可以選取手冊中的典型值40MHz,那麼計算出pixclock=25000皮秒

實際刷新頻率=40000000Hz÷((Left_margin+right_margin+hsync_len+xres)*(Upper_margin+lower_margin+vsync_len+yres))≈60Hz

我們將修改後的鏡像燒寫到開發板之後,通過fbset命令可以看到屏幕設置的實際參數如下圖:

 

手冊上提供的這些參考值,可以根據實際的使用情況微調。

簡單的一個表,明確一下fb_videomode的各個成員的意義:

名稱

手冊簡稱

中文名

意義

name

No

名字

液晶屏名字(可選)

refresh

No

刷新頻率

刷新頻率(通常為60Hz)

xres

No

行寬

每行的像素個數

yres

No

屏幕高度

屏幕的行數

pixclock

No

像素時鍾

每個像素時鍾周期的長度,單位是皮秒(10的負12次方分之1秒)

left_margin

HBP (Horizontal Back Porch)

水平後沿

在每行或每列的象素數據開始輸出時要插入的象素時鍾周期數

right_margin

HFP (Horizontal Front Porch )

水平前沿

在每行或每列的象素結束到LCD 行時鍾輸出脈衝之間的象素時鍾數

upper_margin

VBP (Vertical Back Porch)

垂直後沿

在垂直同步周期之後幀開頭時的無效行數

lower_margin

VFP (Vertical Front Porch)

垂直前沿

本幀數據輸出結束到下一幀垂直同步周期開始之前的無效行數

hsync_len

HPW (HSYNC plus width)

行同步脈寬

單位:像素時鍾周期

也有手冊簡稱為HWH(HSYNC width)

vsync_len

VPW (VSYNC width)

垂直同步脈寬

單位:顯示一行的時間th

也有手冊簡稱為VWH(VSYNC width)

sync

No

同步極性設置

可以根據需要設置FB_SYNC_HOR_HIGH_ACT(水平同步高電平有效)和FB_SYNC_VERT_HIGH_ACT(垂直同步高電平有效)

vmode

No

No

在內核中的大多數示例都直接置為FB_VMODE_NONINTERLACED。interlaced的意思是交錯[隔行]掃描,電視中使用2:1的交錯率, 即每幀分兩場,垂直掃描兩次,一場掃描奇數行,另一場掃描偶數行。很顯然LCD目前不是這種模式。

本篇隻是給初學者起到一個拋磚引玉的作用,很多參數沒有細研究,在此不做過多解釋。LCD方麵的驅動以及支持很博大精深,有興趣的粉絲可以自己研究研究,大家也可以登錄杏吧官方技術論壇了解更多相關內容。


 

----   END   ----


 長按識別二維碼加關注 

杏吧嵌入式

專注於智能設備核心平台研發與製造


■ 關注“杏吧嵌入式”公眾號,不定期分享行業幹貨及產品一線資料。

■ 直接微信回複產品平台,如“LS1043A”,即可快速獲取對應產品信息。

■ 想要了解杏吧更多信息,歡迎與我們聯係:

銷售工程師:400-699-6866

國際業務部:0312-3102650-854

技術服務部:0312-3119192

方案定製類:17713286015 (杜工),18633238067(王工 

■ 實時技術支持:

AM 9:00―11:30,PM 13:30―17:00(周一至周五)

 

推薦閱讀

您所在的位置:首頁 > 關於杏吧 > 行業資訊



長文分享丨TI AM5718的PRU開發詳解
再見了,省界收費站!LS1012A助力新型RSU(路側單元)實現
站在風口上,邊緣計算牽手LS1043A開發板
解鎖新技能!iMXRT1052核心板支持操作係統RT-Thread
未來觸手可及,智慧燈杆掀起“城市信息革命”IOT風向標丨智慧城市呼喚智能建築
小巧嵌入式平台“玩轉”大型的數據庫管理係統
杏吧幹貨丨芯片在不同電平電路中的應用
無人機在智能交通領域的應用大盤點!
杏吧嵌入式丨我們是如何解決TVS管使用錯誤的
LS1012A丨一文看懂何謂“低耗高速佼佼者”
穩定壓倒一切,開發板電源架構解析之IMX6UL
杏吧嵌入式 S5P4418 核心板為自助加油係統“加油”
小白也能玩轉 i.MX6 平台的 GPIO 應用筆記


Copyright © 2007-2015 保定杏吧嵌入式技術有限公司 All Rights Reserved  冀ICP備12004394號