日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

迅为国产RK3568开发板Android移植 LCD 屏幕

發布時間:2024/3/26 Android 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 迅为国产RK3568开发板Android移植 LCD 屏幕 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

rk3568 芯片非常強大,可以支持的屏幕接口有很多,顯示接口支持可是非常豐富的,

?

iTOP-rk3568?開發板支持?MIPI?接口的屏幕,接口如下圖所示:

?

1?屏幕點亮流程

點亮屏幕基本的流程是一致的,一般是背光使能---->背光點亮---->屏幕使能---->reset?引

腳按照指定的時序/波形拉高或者拉低---->初始化序列命令發送。

流程主要是以下幾步

l

需要向屏幕廠商要一些屏幕關鍵參數和資料

l

進行關鍵引腳對應

l

進行設備樹配置

l

進行驅動配置

l

源碼編譯,燒寫鏡像測試

15.2.1關鍵引腳對應

15.2.2屏幕關鍵參數

15.2.3屏幕初始化序列改寫

2根據屏參和硬件設計填寫?dts

這一部分是重點,全部之前的工作全為此處進行準備。我們新建一個?dtsi?文件特意放屏

幕相關的:kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi

然后在?kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dts?文件中加入這個頭文

件,如下圖所示:

另注意,由于?DTS 文件設計到層層包含(DTS 文件可以包含后綴為.dtsi?的文件,作用就

像?C 語言中的.h?文件),故建議重要配置及板卡特性配置寫到最后一級的?DTS?文件中,防

止由于在較高層級的?dtsi?配置后手誤在后面又進行了配置,導致配置被錯誤覆蓋。

共需要以下幾個重點內容:dsi, route_dsi, backlight, vcc_lcd, dsi_in_vopb,

dsi_in_vopl,vopb。

2.1?dsi節點

mipi?屏幕我們使用?dsi1?接口,所以需要在設備樹里面查找?dsi?節點,如下圖所示:

kernel/arch/arm64/boot/dts/rockchip/rk3568.dtsi

(瑞芯微寫好的)

?

kernel/arch/arm64/boot/dts/rockchip/rk3568.dtsi?(瑞芯微寫好的)

dsi1: dsi@fe070000 {

compatible = "rockchip,rk3568-mipi-dsi";

reg = <0x0 0xfe070000 0x0 0x10000>;

interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;

clocks = <&cru PCLK_DSITX_1>, <&cru HCLK_VO>, <&video_phy1>;

clock-names = "pclk", "hclk", "hs_clk";

resets = <&cru SRST_P_DSITX_1>;

reset-names = "apb";

phys = <&video_phy1>;

phy-names = "mipi_dphy";

power-domains = <&power RK3568_PD_VO>;

rockchip,grf = <&grf>;

#address-cells = <1>;

#size-cells = <0>;

status = "disabled";

ports {

#address-cells = <1>;

#size-cells = <0>;

dsi1_in: port@0 {

reg = <0>;

#address-cells = <1>;

#size-cells = <0>;

dsi1_in_vp0: endpoint@0 {

reg = <0>;

remote-endpoint = <&vp0_out_dsi1>;

status = "disabled";

};

dsi1_in_vp1: endpoint@1 {

reg = <1>;

remote-endpoint = <&vp1_out_dsi1>;

status = "disabled";

};

};

};

};

默認的源碼中是配置了?dsi1?節點的,是適配的瑞芯微的屏幕。現在我們要適配迅為的

MIPI 7?寸屏,所以我們在修改之前,要刪掉瑞芯微之前適配的屏幕節點。在下圖的設備樹中

找到&dsi1?以及和?dsi1 相關的注釋掉。

?

好,現在接下來便可以在?topeet_rk3568_lcds.dtsi?中配置迅為的屏幕了。配置如下:

&dsi1 {

status = "okay";

dsi1_panel: panel@0 {

status = "okay";

compatible = "simple-panel-dsi";

reg = <0>;

//供電電壓是?3.3V

power-supply = <&vcc3v3_lcd1_n>;

//設置背光

backlight = <&backlight>;

//reset-gpios?表示屏幕?reset?引腳,拉低,具體的拉高或者拉低要根據內

核配置和時序要求來進行對應的修改

reset-gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_LOW>;

//enable-gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_HIGH>;

//下述配置中有一些延時,reset-delay-ms?是在屏幕初始化過程中,第一次

操作?reset 引腳之前的延時。init-delay-ms,是在屏幕初始化過程中,第一次操作?reset?引腳

之后的延時。

reset-delay-ms = <60>;

enable-delay-ms = <60>;//<35>; //<60>;

prepare-delay-ms = <60>;//<6>; //<60>;

unprepare-delay-ms = <60>;//<0>; //<60>;

disable-delay-ms = <60>;//<20>; //<60>;

dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |

MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;

dsi,format = <MIPI_DSI_FMT_RGB888>;

//dsi,lanes = <4>;是配置當前?mipi?是幾通道的,需根據屏幕實際情況配置。

dsi,lanes = <4>;

// panel-init-sequence 填寫剛剛改寫好的初始化序列

panel-init-sequence = [

39 00 03 E0 AB BA

39 00 03 E1 BA AB

.................

05 C8 01 11

05 14 01 29

];

//panel-exit-sequence?填寫?display off?序列,一般為兩條,也需要廠家提供。

panel-exit-sequence = [

05 05 01 28

05 78 01 10

];

//這一部分也很重要,是屏幕的一些參數。hactive?和?vactive?就是水平數值的像素,也就是

屏?幕?分?辨?率?了?。?hback-porch,hfront-porch,vback-porch,vfront-porch?按?順?序?簡?寫?為

HBP,HFP,VBP,VFP,這個跟廠家討要后,根據簡寫字母對應即可。這個在之前的章節中已經講解

過了。

disp_timings0: display-timings {

native-mode = <&dsi1_timing0>;

dsi1_timing0: timing0 {

//clock-frequency?像素時鐘頻率

//像素時鐘頻率?= (

hactive+hbp+hfp+hsync-len)x (vactive+vbp+vfp+vsync-len)xfps

//?然后保留兩位有效數字(不要四舍五入),后面數據直接填?0?即可。

clock-frequency = <72000000>;

//以下的這些參數在數據手冊中,我們已經查找到了。

hactive = <800>;

vactive = <1280>;

hfront-porch = <48>; //20

hsync-len = <20>;

hback-porch = <48>; //20

vfront-porch = <16>; //10

vsync-len = <6>; //10

vback-porch = <15>; //4

hsync-active = <0>;

vsync-active = <0>;

de-active = <0>;

pixelclk-active = <0>;

};

};

//配置?ports

ports {

#address-cells = <1>;

#size-cells = <0>;

port@0 {

reg = <0>;

panel_in_dsi1: endpoint {

remote-endpoint = <&dsi1_out_panel>;

};

};

};

};

ports {

#address-cells = <1>;

#size-cells = <0>;

port@1 {

reg = <1>;

dsi1_out_panel: endpoint {

remote-endpoint = <&panel_in_dsi1>;

};

};

};

};

我們使用?dsi1?綁定到?vp1?上,所以?dsi1_in_vp0?節點為?disabled,dsi1_in_vp1?節點為?okay

當?dsi1 使能的時候,video_phy1 要使能,video_phy0?要關閉。設備樹?topeet_rk3568_lcds.dtsi

中添加如下圖所示:

?

2.2?Backlight

背光常用的有三種情況:

一是?常開。

二是?背光?IC?使能后,輸入?PWM?信號調光。

三是?背光?IC?使能后,通過?FB 獲得反饋自動進行調光。

設備樹里面配置背光。首先根據原理圖,我們知道使用的是?pwm5,

kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi?文件里面?backlight1?節點如下所示:

backlight1: backlight1 {

compatible = "pwm-backlight";

pwms = <&pwm5 0 25000 0>;

brightness-levels = <

0 20 20 21 21 22 22 23

23 24 24 25 25 26 26 27

27 28 28 29 29 30 30 31

.................................................

>;

default-brightness-level = <200>;

};

kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi?設備樹中添加背光節點

&backlight {

status = "okay";

pwm = <&pwm5 0 25000 0>;

};

pwms = <&pwm5 0 25000 0>;?配置?pwm,使用?pwm5,25000 是周期,pwm?為正極性。

brightness-levels?屬性:配置背光亮度數組,一般以值?255?為一個?scale,當?pwm?設置為正

極時,從?0~255?表示背光為正極,占空比從?0%~100%變化,,255~0?為負極性,占空比從

100%~0%變化,當?pwm?設置為負極性時,反之。

default-brightness-level?屬性,時開機時默認背光亮度,范圍是?0~255

2.3?logo?顯示

設備樹?kernel/scripts/dtc/include-prefixes/arm64/rockchip/rk3568.dtsi?中節點如下:

?

所以我們要使用?route_dsi1 顯示通路,綁定到?vp1?上,修改

kernel/scripts/dtc/include-prefixes/arm64/rockchip/topeet_rk3568_lcds.dtsi?文件,添加如下所

示:

?

3?Config?配置

RK3568 SDK?下?kernel/arch/arm64/configs/*_defconfig?已經把?LCD?相關的配置設置好了,

如果自己做了修改,修改?kernel/arch/arm64/configs/rockchip_defconfig?配置文件,增加如下

所示:

CONFIG_DRM_ROCKCHIP=y

CONFIG_ROCKCHIP_DW_MIPI_DSI=y

CONFIG_DRM_PANEL_SIMPLE=y

4燒寫驗證

4.1測試顯示

重新編譯?android?源碼,燒寫鏡像,發現?mipi?屏幕顯示正常。如下圖所示:

?

4.2?背光亮度調節測試

目前還沒有配置屏幕觸摸,我們可以在開發板上插上鼠標,進入”設置”APP,依次點擊

“顯示”,“亮度”,拖動滑條可以調節亮度。

也可以使用命令行來設置屏幕亮度,數值可以在?0~250?中設置,數字越大,亮度越高。

echo 100 > /sys/class/backlight/backlight/brightness

總結

以上是生活随笔為你收集整理的迅为国产RK3568开发板Android移植 LCD 屏幕的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。