飛凌干貨丨i.MX8MM如何在uboot調(diào)試顯示

原創(chuàng) 2020-08-07 17:33:00 i.MX8MM i.MX8Mmini
2020年8月7號(hào)

i.MX8MM 顯示結(jié)構(gòu)

imx8m mini的顯示只有1個(gè)MIPI_DSI接口,顯示接口的結(jié)構(gòu)如下:


 


 

顯示參數(shù)調(diào)節(jié)

我們?cè)谡{(diào)試顯示的時(shí)候,需要初始化LCDif和MIPI_DSI, uboot中驅(qū)動(dòng)程序已經(jīng)提供了完整的驅(qū)動(dòng)程序,我們只需要設(shè)置環(huán)境變量panel,驅(qū)動(dòng)按照panel的值匹配顯示設(shè)備列表內(nèi)顯示設(shè)備的名稱(chēng),選擇當(dāng)前設(shè)備顯示。如設(shè)定panel的值為“MIPI7”,就會(huì)在顯示列表內(nèi)找到名稱(chēng)為“MIPI7”的顯示設(shè)備,按照該設(shè)備初始化相關(guān)的設(shè)備。該設(shè)備是我們默認(rèn)支持的7寸mipi顯示屏,可以從下圖看到設(shè)備的名字和詳細(xì)的顯示參數(shù)。


 


如果用戶(hù)需要添加自己的顯示屏,只需要按照屏的手冊(cè)額外添加一組顯示參數(shù),設(shè)置panel,指定使用所添加的參數(shù)即可。(注:此方法只針對(duì)不需要額外初始化的mipi屏)

但是由于我們的uboot不開(kāi)源,用戶(hù)無(wú)法修改源碼,也就自行添加一組顯示參數(shù)。針對(duì)這種情況,我們提供了一種解決方法。我們提供了一組參數(shù),用戶(hù)選定這組參數(shù)后,可以通過(guò)修改環(huán)境變量的方法來(lái)修改這組參數(shù)內(nèi)顯示參數(shù)。

這組用來(lái)顯示mipi屏的顯示參數(shù)的名字是“MIPI_CUSTOM”,只要將panel設(shè)置為“MIPI_CUSTOM”,就會(huì)選定這組參數(shù),下圖是這組參數(shù)的默認(rèn)值。


 


 

如何修改這組參數(shù)呢?默認(rèn)是無(wú)法修改這組參數(shù)的,我們通過(guò)做了額外的工作,在檢測(cè)到使用的panel的名稱(chēng)為 “MIPI_CUSTOM” 時(shí)做了特殊處理,如果檢測(cè)到環(huán)境變量custom_video_mode的值不為空,則解析custom_video_mode,將其內(nèi)包含的顯示參數(shù)替換默認(rèn)的顯示參數(shù)。

 

判斷是否是自定義參數(shù)


 


 

自定義參數(shù)替換默認(rèn)參數(shù)


 


 

實(shí)際測(cè)試

我們實(shí)際演示下如何使用,首先在啟動(dòng)開(kāi)發(fā)板,在uboot按下空格鍵進(jìn)入uboot菜單,按1,退出菜單進(jìn)入命令模式


 


 

然后,我們?cè)谳斎朊钤O(shè)置panel值為MIPI_CUSTOM, 設(shè)置custom_video_mode值使refresh,xres,yres,pixclock,left_margin,right_margin,upper_margin,lower_margin,hsync_len,vsync_len等值設(shè)置為我們想要的值,例如我們有一塊800x1280的顯示屏,要將參數(shù)設(shè)置為refresh=60,xres=800,yres=1280,pixclock=20000,left_margin=32,right_margin=20,upper_margin=8,lower_margin=4,hsync_len=40,vsync_len=1(注:時(shí)鐘為時(shí)間值,單位是皮秒,10的12次方除以此值就是頻率值)

 

那么需要輸入命令以下命令

設(shè)置panel值為MIPI_CUSTOM

setenv   panel MIPI_CUSTOM

 

設(shè)置自定義參數(shù)

setenv   custom_video_mode refresh=60,xres=800,yres=1280,pixclock=20000,left_margin=32,right_margin=20,upper_margin=8,lower_margin=4,hsync_len=40,vsync_len=1

 

保存環(huán)境變量

saveenv


 


 

重啟后顯示參數(shù)生效。


 


 

我們還可以用這種方法快速測(cè)試我們的顯示參數(shù)是否準(zhǔn)確,因?yàn)檫@樣測(cè)試非常快速,只需要在uboot設(shè)置環(huán)境變量即可,不需要修改代碼和燒寫(xiě)。

 

批量燒寫(xiě)

在我們測(cè)試顯示正常后,我們還可以通過(guò)追加uboot環(huán)境變量的方式,將我們測(cè)試好的環(huán)境變量,在TF卡燒寫(xiě)的時(shí)候直接燒寫(xiě)到存儲(chǔ)介質(zhì)中,燒寫(xiě)完成啟動(dòng)就是我們想要的顯示結(jié)果。

追加uboot環(huán)境變量的方法:

 

在電腦上創(chuàng)建一個(gè)文件,文件名env.ini。該文件的每一行是一個(gè)環(huán)境變量, 格式是: 環(huán)境變量的名字=環(huán)境變量的值。

 

將我們?cè)谏厦娌僮鞑襟E確認(rèn)的環(huán)境變量添加到env.ini,每個(gè)環(huán)境變量一行,按照格式添加如:在第一行添加panel =MIPI_CUSTOM,第二行添加custom_video_mode= refresh=60,xres=800,yres=1280,pixclock=20000,left_margin=32,right_margin=20,upper_margin=8,lower_margin=4,hsync_len=40,vsync_len=1

 

將修改好的env.ini放入到制作好的TF卡(TF卡制作過(guò)程參考用戶(hù)手冊(cè)),使用次TF卡燒寫(xiě)即可。燒寫(xiě)完成后重啟,檢驗(yàn)環(huán)境變量是否已經(jīng)追加到存儲(chǔ)中,顯示是否正常。

 

 

 

相關(guān)產(chǎn)品 >

  • FETMX8MM-C核心板

    NXP i.MX8系列分為iMX8I、i.MX8M、i.MX8Mini、iMX8M Nano、iMX 8X等,提供基于Cortex-A72 + Cortex-A53、Cortex-A35核心,搭配實(shí)時(shí)任務(wù)處理的Cortex-M4和Cortex M7的解決方案,適用于從消費(fèi)家庭音頻到工業(yè)樓宇自動(dòng)化及移動(dòng)計(jì)算機(jī)等。飛凌嵌入式近期推出的iMX8系列i.MX8Mmini核心板基于四核Cortex-A53、單核Cortex-M4架構(gòu)的i.MX 8Mmini 處理器設(shè)計(jì),現(xiàn)已全面上市,更多i.MX8M核心板產(chǎn)品、解決方案詳情,歡迎致電飛凌嵌入式了解。

    了解詳情
    FETMX8MM-C核心板
  • OKMX8MM-C開(kāi)發(fā)板

    多數(shù)字音頻接口,多核異構(gòu)A53+M4,10年+生命周期|NXP公司 i.MX8系列應(yīng)用處理器根據(jù)不同配置有i.MX8I、iMX8M、i.MX8Mini、iMX8M Mini、iMX8M Nano、iMX 8X ,提供基于Cortex-A72 + Cortex-A53、Cortex-A35核心,此外還提供實(shí)時(shí)任務(wù)處理的Cortex-M核心(Cortex-M4和Cortex M7)的解決方案,因此,NXP i.MX8系列應(yīng)用處理器在高級(jí)圖形、高級(jí)成像、高級(jí)機(jī)器視覺(jué)、高端音頻、高端語(yǔ)音、高端視頻和高安全的嵌入式應(yīng)用等跨領(lǐng)域的多種應(yīng)用場(chǎng)景非常適用。飛凌嵌入式i.MX8M Mini開(kāi)發(fā)板基于NXP 公司的i.MX8M Mini 四核64位處理器設(shè)計(jì),主頻最高1.8GHz,ARM Cortex-A53架構(gòu)。IMX8開(kāi)發(fā)板是一款高性能,低功耗產(chǎn)品,歡迎選購(gòu)。更多IMX8芯片介紹,IMX8系列軟硬件資料,i.MX8M mini方案定制,請(qǐng)聯(lián)系飛凌嵌入式

    了解詳情
    OKMX8MM-C開(kāi)發(fā)板

推薦閱讀 換一批 換一批