1 簡(jiǎn)介
LVGL(Light and Versatile Embedded Graphics Library)是一個(gè)免費(fèi)開(kāi)源的嵌入式圖形庫(kù),界面美觀, 內(nèi)存占用低, 支持C和Python等開(kāi)發(fā)方式。早在幾年前它就表現(xiàn)得十分驚艷,現(xiàn)如今被越來(lái)越多的人喜愛(ài)。筆者之前是使用6版本在單片機(jī)上面運(yùn)行,如今都已經(jīng)更新到7版本多了,人往高處走,終究得跟上最新版本,于是便有了關(guān)于LVGL7版本在linux上移植的這件篇筆記。
本次教程使用的開(kāi)發(fā)板是萬(wàn)象奧科的HD-STM32MP157-STY開(kāi)發(fā)板。該開(kāi)發(fā)板使用STM32MP1家族中是目前性能強(qiáng)勁,資源最為豐富的一款處理器STM32MP157DAA,雙核ARM Cortex-A7 @800Mhz/單核 Cortex-M4@209MHz ,板載1GB內(nèi)存以及8G eMMC Flash。開(kāi)發(fā)板具體信息詳見(jiàn)文末。
LVGL官網(wǎng)為https://lvgl.io/,進(jìn)入LVGL官網(wǎng)即可看到Github、Release notes、Docs、Forum鏈接,可按需下載。

2 運(yùn)行Demo
為了開(kāi)發(fā)方便,LVGL提供了很多仿真工程,可以在Eclipse、CodeBlocks、VisualStudio等各種環(huán)境上運(yùn)行。
筆者這里簡(jiǎn)單介紹下VisualStudio環(huán)境下的操作。
2.1 下載代碼
運(yùn)行如下命令進(jìn)行代碼下載:
git clone https://github.com/
lvgl/lv_sim_visual_studio.git
cd lv_sim_visual_studio
git submodule update --init --recursive
下載后得到的文件如下:

雙擊LVGL.Simulator.sln即可使用VisualStudio打開(kāi)工程。
2.2 調(diào)試
在VisualStudio中選擇x64,然后點(diǎn)擊“本地Windows調(diào)試器”。這時(shí),會(huì)自動(dòng)對(duì)代碼進(jìn)行編譯。

編譯成功后,會(huì)自動(dòng)打開(kāi)界面,顯示LVGL Simulator for Windows Desktop,界面如下:

3 移植
3.1、下載源代碼
LVGL的源碼存放于github,可通過(guò)git進(jìn)行下載。具體操作如下:
mkdirlvgl
cd lvgl
#Git lvgl的源碼
git clone --recursive
https://github.com/littlevgl/
linux_frame_buffer.git
#若是下載速度慢也可以進(jìn)LVGL官網(wǎng)的GIT倉(cāng)庫(kù)下載源碼
cd linux_frame_buffer
#更新一下源碼
git submodule foreach 'git checkout master; git pull'
3.2 安裝必要的庫(kù)
LVGL在Linux下面運(yùn)行是需要依賴(lài)SDL庫(kù),首先我們需要進(jìn)行如下命令安裝SDL庫(kù);
sudo apt update
sudo apt install -y build-essential libsdl2-dev
3.3 交叉編譯需要的庫(kù)
3.3.1 交叉編譯SDL庫(kù)
Linux版本LVGL需要依賴(lài)SDL庫(kù),所以在交叉編譯LVGL之前需要先交叉編譯SDL庫(kù)。具體的方法比較多,如:
純手動(dòng)交叉編譯。此方法操作比較復(fù)雜,不推薦使用。
主機(jī)安裝qemu來(lái)搭建arm環(huán)境,進(jìn)入arm環(huán)境apt得到庫(kù)(推薦)。
使用buildroot(推薦)。
本次教程介紹使用buildroot進(jìn)行安裝,具體步驟如下:
3.3.1.1 配置、編譯
首先在buildroot源代碼目錄運(yùn)行如下命令進(jìn)行配置:
sudo make menuconfig

勾選上圖所示保存并編譯。
3.3.1.2 查找SDL庫(kù)
配置成功后,編譯會(huì)得到一個(gè)可直接用于開(kāi)發(fā)板的文件系統(tǒng),這個(gè)文件系統(tǒng)中會(huì)包含SDL依賴(lài)庫(kù)。可以使用find命令找到這個(gè)庫(kù):
sudo find / -name libSDL2.a
3.3.2 交叉編譯tslib庫(kù)
LVGL需要用到觸摸功能,觸摸功能需要使用到tslib庫(kù),我們同樣使用buildroot編譯tslib。
sudo make menuconfig

編譯后,會(huì)得到tslib相關(guān)的庫(kù)。
3.4 收集得到的庫(kù)
將編譯好的SDL庫(kù)和tslib庫(kù)拷貝到LVGL的工程中。
在LVGL工程中新建lib目錄,將庫(kù)文件放置于其中,lib中文件有:
libSDL2.a libts.la libts.so libts.so.o libts.so.0.10.3 pkgconfig ts tslib.h
3.5 修改Makefile文件
接下來(lái)需要修改Makefile,加入LDFLAGS和CFLAGS的配置,LDFLAGS一般代表鏈接可執(zhí)行程序時(shí)的鏈接選項(xiàng),CFLAGS指定了頭文件查找路徑。
LDFLAGS += -L$(LVGL_DIR)/lib
CFLAGS += -I$(LVGL_DIR)/lib
LDFLAGS += -lts -lpthread
注釋掉主機(jī)環(huán)境,添加交叉編譯的CFLAGS

3.6 修改顯示屏分辨率
在lv_conf.h中,有顯示屏分辨率的配置,LV_HOR_RES_MAX和LV_VER_RES_MAX,筆者使用的屏幕分辨率為800480,將這里修改為800480即可。

3.7 編譯
make CC=arm-none-linux-gnueabihf-gcc -j8
修改好代碼后,使用make進(jìn)行編譯,編譯完成會(huì)得到一個(gè)可執(zhí)行文件。執(zhí)行效果如下:

STM32MP1產(chǎn)品靚照


-
Linux
+關(guān)注
關(guān)注
87文章
11446瀏覽量
212670 -
STM32
+關(guān)注
關(guān)注
2288文章
10999瀏覽量
362016 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5472瀏覽量
101813 -
LVGL
+關(guān)注
關(guān)注
1文章
99瀏覽量
3518
發(fā)布評(píng)論請(qǐng)先 登錄
100ASK_STM32MP157是什么?為什么要做STM32MP157開(kāi)發(fā)板?
基于STM32MP157的Linux操作系統(tǒng)移植
如何利用STM32MP157開(kāi)發(fā)板去學(xué)習(xí)Linux呢
STM32MP157超強(qiáng)芯片有哪些應(yīng)用
為什么要做STM32MP157開(kāi)發(fā)板呢
STM32MP157資源擴(kuò)展板蜂鳴器控制
STM32MP157 Linux系統(tǒng)移植開(kāi)發(fā)
STM32MP157開(kāi)發(fā)板的相關(guān)資料下載
stm32mp157開(kāi)發(fā)的相關(guān)資料分享
如何通過(guò)Cortex M4控制STM32MP157上的LTDC?
【視頻】華清遠(yuǎn)見(jiàn)stm32mp157開(kāi)發(fā)入門(mén)指導(dǎo)(7講)

迅為STM32MP157開(kāi)發(fā)板入門(mén)教程之外設(shè)功能驗(yàn)證

評(píng)論