隨著嵌入式設(shè)備對(duì)圖形用戶界面(GUI)的需求不斷提升,選擇一款高效、輕量且易于移植的GUI框架已成為項(xiàng)目開發(fā)中的關(guān)鍵環(huán)節(jié)。LVGL與Qt作為嵌入式領(lǐng)域廣泛使用的兩種GUI解決方案,在架構(gòu)設(shè)計(jì)、資源占用及適用場(chǎng)景等方面存在明顯區(qū)別:
LVGL是一款專為嵌入式及資源受限設(shè)備設(shè)計(jì)的輕量級(jí)開源圖形庫。其具備高度模塊化特性,內(nèi)存占用極低,支持多種顯示與輸入設(shè)備驅(qū)動(dòng),并可在無操作系統(tǒng)環(huán)境下運(yùn)行,尤其適合對(duì)性能、功耗和成本有嚴(yán)格要求的嵌入式應(yīng)用場(chǎng)景。
?
Qt是一套功能豐富的跨平臺(tái)應(yīng)用開發(fā)框架,除GUI組件外,還提供網(wǎng)絡(luò)、數(shù)據(jù)庫、多媒體等完整功能模塊。盡管Qt for Embedded Linux功能全面,但其通常需要更多的系統(tǒng)資源,更適合硬件資源較為充裕的嵌入式平臺(tái),例如工業(yè)人機(jī)界面(HMI)、車載信息娛樂系統(tǒng)等。
?
本文將以LVGL8.2版本的移植為例,旨在為開發(fā)者提供一套清晰實(shí)用的輕量化圖形界面移植指南,幫助用戶快速構(gòu)建流暢、美觀的嵌入式圖形應(yīng)用。
?
git?clone?-b release/v8.2?https://github.com/lvgl/lv_port_linux_frame_buffer.gitgit?clone?-b release/v8.2?https://github.com/lvgl/lvgl.gitgit?clone?-b release/v8.2?https://github.com/lvgl/lv_drivers.git
將lvgl和lv_drivers文件夾拷貝到lv_port_linux_frame_buffer文件夾下。
?
注意:分辨率設(shè)置以板卡默認(rèn)適配的MIPI屏幕規(guī)格為準(zhǔn)進(jìn)行修改。
?
elf@ubuntu:~/work/lvgl8.2$?vi lv_port_linux_frame_buffer/lv_conf.h
?
修改第15行, 使能該文件;

修改第27行,修改顯示顏色位深;

?
修改第49行,使能顯存分配;

?
修改第672行,使能編譯demo;

?
elf@ubuntu:~/work/lvgl8.2$?vi lv_port_linux_frame_buffer/lv_drv_conf.h
?
修改第11行,?使能該文件;

?
修改第319行,使能fb顯示;

?
修改第442行,使能觸摸板觸摸;

?
修改第450行,綁定觸摸事件,可以通過evtest命令查看屏幕對(duì)應(yīng)的觸摸節(jié)點(diǎn),輸入evtest,輸入指定編號(hào),觸摸屏幕會(huì)有坐標(biāo)點(diǎn)顯示到調(diào)試串口;

?
修改第453行,使能屏幕分辨率配置;

?
修改第457行、459行,指定屏幕水平像素和垂直像素;

?
elf@ubuntu:~/work/lvgl8.2$?vi lv_port_linux_frame_buffer/main.c
?
修改第10行,指定顯存大?。?/span>

?
修改第32行、33行,指定屏幕分辨率;

?
elf@ubuntu:~/work/lvgl8.2$?vi lv_port_linux_frame_buffer/Makefile
?
修改第4行,指定交叉編譯器;

?
修改第7行,用#號(hào)注釋掉后面內(nèi)容;

?
在lv_port_linux_frame_buffer目錄下執(zhí)行make -j4編譯源碼;
elf@ubuntu:~/work/lvgl8.2$?cd lv_port_linux_frame_buffer/elf@ubuntu:~/work/lvgl8.2/lv_port_linux_frame_buffer$?make -j4
?
最后會(huì)在lv_port_linux_frame_buffer目錄下生成demo可執(zhí)行文件;
elf@ubuntu:~/work/lvgl8.2/lv_port_linux_frame_buffer$?ls demo?demo
使用u盤拷貝demo到開發(fā)板中;
關(guān)閉掉Weston桌面;
root-buildroot:~#?/etc/init.d/S49weston?stop
?
運(yùn)行demo應(yīng)用;
root@elf2-buildroot:~# ./demo
?
顯示效果如下:

