《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 業(yè)界動態(tài) > UBoot開機圖片顯示

UBoot開機圖片顯示

2017-08-03
關(guān)鍵詞: Uboot

  1). 簡介

  在之前的文章中,,我們已經(jīng)介紹了如何在 Linux中添加開機圖片,,實現(xiàn)定制化的開機 Logo 顯示,?;蛟S你也已經(jīng)注意到了,,在設(shè)備剛上電啟動的時候,,LCD顯示屏出現(xiàn)下面幾種現(xiàn)象,,花屏,、黑屏或者顯示內(nèi)容不全等,。這是因為,,在基于 Linux 的設(shè)備上電啟動時,其實經(jīng)歷了Bootloader → U-Boot→ Linux→ Root FS→ User App 這一系列的過程,。LCD 如果需要正常顯示,,其對應(yīng)的顯示控制器必須得到正確的配置。Linux 啟動會加載顯示驅(qū)動,,配置正確的顯示參數(shù),。而在 Linux 啟動前,一般需要花費1到2秒的時間運行 U-Boot,,Toradex 默認的  U-Boot 在啟動后會等待1秒中再加載 Linux 內(nèi)核,,以便用戶進入 U-Boot 的命令行模式。在這一段時間內(nèi),,ARM 的顯示控制器可能沒有正確配置,,所以出現(xiàn)了上述現(xiàn)象。下面我們將以 Toradex ARM計算機模塊Colibri iMX6/iMX7 為例介紹如何在  U-Boot 中配置 RGB LCD 液晶顯示屏,,使其上電后即可顯示Logo 圖片,。

  在 Linux 中,Device Tree 能夠為顯示驅(qū)動提供正確的顯示參數(shù),。如 Colibri iMX7 計算機模塊的其中一個  Device Tree 配置文件 imx7-colibri-eval-v3.dtsi ,, lcdif 節(jié)點中native-mode 指定了顯示分辨率,、時鐘、時鐘極性等參數(shù),。目前最新的 Linux BSP 也支持從 cmdline的 vidargs 設(shè)置顯示參數(shù),。而U-Boot 雖然也支持 Device Tree,但是目前的版本中還沒有啟用,,更多的是需要通過修改源代碼以及U-Boot環(huán)境參數(shù)來配置顯示輸出,。下面針對 Colibri iMX6/iMX7兩個平臺進行說明。

  2). Colibri iMX6

  修改 colibri_imx6.c文件,,在 struct display_info_t const displays[]  中添加屏幕參數(shù)對應(yīng)的成員,,其中mode.name 不能重復(fù),U-Boot會根據(jù)該參數(shù)選擇對應(yīng)的參數(shù)配置,。

  ---------------------------------------

  {

  .bus= -1,

  .addr= 0,

  .pixfmt= IPU_PIX_FMT_RGB666,

  .enable= enable_rgb,

  .mode= {

  .name           = "wvga-rgb",

  .refresh        = 60,

  .xres           = 800,

  .yres           = 480,

  .pixclock       = 25000,

  .left_margin    = 40,

  .right_margin   = 88,

  .upper_margin   = 33,

  .lower_margin   = 10,

  .hsync_len      = 128,

  .vsync_len      = 2,

  .sync           = 0,

  .vmode          = FB_VMODE_NONINTERLACED

  }

  ---------------------------------------

  你完全可以參考代碼中現(xiàn)有的配置,,根據(jù)實際使用屏幕的參數(shù)做調(diào)整。

  然后設(shè)置背光和亮度控制,,屏幕亮度根據(jù) PWM 的占空比調(diào)節(jié),,根據(jù)屏幕手冊,將RGB_BACKLIGHTPWM_GP 調(diào)整為0或者1,。U-Boot是一個相對精簡的系統(tǒng),,為了減少啟動時間,許多不必要的外設(shè)并沒有被初始化,,例如 PWM,,在U-Boot一般簡單地把PWM輸出高、低電平,。

  ---------------------------------------

  gpio_direction_output(RGB_BACKLIGHT_GP, 1);

  gpio_direction_output(RGB_BACKLIGHTPWM_GP, 0);

  ---------------------------------------

  完成上述修改后,重新編譯 U-Boot,,并用其更新 Colibri iMX6 模塊上的U-Boot文件,。重啟后在U-Boot配置下面參數(shù)

  ---------------------------------------

  setenv panel wvga-rgb

  saveenv

  ---------------------------------------

  wvga-rgb 即之前在struct display_info_t const displays[] 中添加的成員名字,其對應(yīng)的分辨率是800*480.

  3). Colibri iMX7

  由于 iMX7 SoC 沒有 IPU顯示控制器,,因此無法像 iMX6 一樣直接在 U-Boot中配置 panel 參數(shù),。 Enhanced LCD Interface (eLCDIF)在iMX7上控制器液晶顯示屏的輸出,因此我們查看lcdif在U-Boot的驅(qū)動mxsfb.c,。函數(shù)video_hw_init(void)實現(xiàn)lcdif 的初始化,,這里我們看到可以通過‘videomode’將顯示參數(shù)傳給 lcdif驅(qū)動。因此,,在U-Boot進行如下配置

  ---------------------------------------

  setenv videomode‘video=ctfb:x:800,y:480,depth:18,pclk:29851,le:89,ri:164,up:23,lo:10,hs:10,vs:10,sync:0,vmode:0’

  saveenv

  ---------------------------------------

  同時配置背光亮度 PWM的輸出,。在colibri_imx7.c中,將 GPIO_PWM_A設(shè)置為0或者1.

  ---------------------------------------

  gpio_direction_output(GPIO_PWM_A, 1);

  ---------------------------------------

  然后重新編譯 U-Boot,,并用其更新 Colibri iMX7 模塊上的U-Boot文件,。重啟后配置上面videomode參數(shù),。

  按照上面的方法,可以實現(xiàn)在U-Boot中配置LCD輸出,,并顯示你需要的圖案,,你可以參考這篇文章修改U-Boot啟動時的圖片。

  5). 總結(jié)

  至此,,你已經(jīng)能夠在設(shè)備上電后更早地顯示Logo,。但是這個時候可能會遇到更具挑戰(zhàn)的問題,上電后出現(xiàn)很短暫地白屏,、花屏或者閃爍,。這主要是 LCD液晶屏幕自身上電初始化時所致。這個現(xiàn)象在不同的LCD顯示屏上都會有不同的表現(xiàn),,有些則不會出現(xiàn),。你需要挑選合適的屏幕,或者控制背光延時點亮,,例如用外部的電源管理芯片,,合理地控制ARM計算機模塊、顯示屏,、背光的電壓軌啟動順序,,確保在ARM計算機模塊、顯示屏在初始化之前,,背光不會被點亮,,從而避免屏、花屏或者閃爍的出現(xiàn),。

  U-Boot是和SoC緊密相關(guān)的系統(tǒng),,需要根據(jù)不同的SoC調(diào)整代碼。上面介紹的方法適用于 iMX6/7 SoC模塊,,并且使用并口RGB LCD顯示屏,。使用其他平臺,如Tegra系列,,需要根據(jù)其顯示驅(qū)動做調(diào)整,。如果采用 LVDS屏幕,同樣需要在U-Boot開啟對應(yīng) LVDS驅(qū)動,,并設(shè)置顯示參數(shù),。

  開機圖片顯示,特別是開機立即顯示,,這不僅涉及到軟件配置,,還和顯示屏、電源管理相關(guān),,因此需要從多個方面進行優(yōu)化,,從而達到符合要求的顯示效果,。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。

相關(guān)內(nèi)容