1 簡介
LVGL(Light and Versatile Embedded Graphics Library)是一個免費開源的嵌入式圖形庫,界面美觀, 內存占用低, 支持C和Python等開發方式。早在幾年前它就表現得十分驚艷,現如今被越來越多的人喜愛。筆者之前是使用6版本在單片機上面運行,如今都已經更新到7版本多了,人往高處走,終究得跟上最新版本,于是便有了關于LVGL7版本在linux上移植的這件篇筆記。
本次教程使用的開發板是萬象奧科的HD-STM32MP157-STY開發板。該開發板使用STM32MP1家族中是目前性能強勁,資源最為豐富的一款處理器STM32MP157DAA,雙核ARM Cortex-A7 @800Mhz/單核 Cortex-M4@209MHz ,板載1GB內存以及8G eMMC Flash。開發板具體信息詳見文末。
LVGL官網為https://lvgl.io/,進入LVGL官網即可看到Github、Release notes、Docs、Forum鏈接,可按需下載。
2 運行Demo
為了開發方便,LVGL提供了很多仿真工程,可以在Eclipse、CodeBlocks、VisualStudio等各種環境上運行。
筆者這里簡單介紹下VisualStudio環境下的操作。
2.1 下載代碼
運行如下命令進行代碼下載:
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打開工程。
2.2 調試
在VisualStudio中選擇x64,然后點擊“本地Windows調試器”。這時,會自動對代碼進行編譯。
編譯成功后,會自動打開界面,顯示LVGL Simulator for Windows Desktop,界面如下:
3 移植
3.1、下載源代碼
LVGL的源碼存放于github,可通過git進行下載。具體操作如下:
mkdirlvgl
cd lvgl
#Git lvgl的源碼
git clone --recursive
https://github.com/littlevgl/
linux_frame_buffer.git
#若是下載速度慢也可以進LVGL官網的GIT倉庫下載源碼
cd linux_frame_buffer
#更新一下源碼
git submodule foreach 'git checkout master; git pull'
3.2 安裝必要的庫
LVGL在Linux下面運行是需要依賴SDL庫,首先我們需要進行如下命令安裝SDL庫;
sudo apt update
sudo apt install -y build-essential libsdl2-dev
3.3 交叉編譯需要的庫
3.3.1 交叉編譯SDL庫
Linux版本LVGL需要依賴SDL庫,所以在交叉編譯LVGL之前需要先交叉編譯SDL庫。具體的方法比較多,如:
純手動交叉編譯。此方法操作比較復雜,不推薦使用。
主機安裝qemu來搭建arm環境,進入arm環境apt得到庫(推薦)。
使用buildroot(推薦)。
本次教程介紹使用buildroot進行安裝,具體步驟如下:
3.3.1.1 配置、編譯
首先在buildroot源代碼目錄運行如下命令進行配置:
sudo make menuconfig
勾選上圖所示保存并編譯。
3.3.1.2 查找SDL庫
配置成功后,編譯會得到一個可直接用于開發板的文件系統,這個文件系統中會包含SDL依賴庫。可以使用find命令找到這個庫:
sudo find / -name libSDL2.a
3.3.2 交叉編譯tslib庫
LVGL需要用到觸摸功能,觸摸功能需要使用到tslib庫,我們同樣使用buildroot編譯tslib。
sudo make menuconfig
編譯后,會得到tslib相關的庫。
3.4 收集得到的庫
將編譯好的SDL庫和tslib庫拷貝到LVGL的工程中。
在LVGL工程中新建lib目錄,將庫文件放置于其中,lib中文件有:
libSDL2.a libts.la libts.so libts.so.o libts.so.0.10.3 pkgconfig ts tslib.h
3.5 修改Makefile文件
接下來需要修改Makefile,加入LDFLAGS和CFLAGS的配置,LDFLAGS一般代表鏈接可執行程序時的鏈接選項,CFLAGS指定了頭文件查找路徑。
LDFLAGS += -L$(LVGL_DIR)/lib
CFLAGS += -I$(LVGL_DIR)/lib
LDFLAGS += -lts -lpthread
注釋掉主機環境,添加交叉編譯的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進行編譯,編譯完成會得到一個可執行文件。執行效果如下:
STM32MP1產品靚照
-
Linux
+關注
關注
87文章
11232瀏覽量
208949 -
STM32
+關注
關注
2266文章
10876瀏覽量
354925 -
開發板
+關注
關注
25文章
4959瀏覽量
97214 -
LVGL
+關注
關注
1文章
81瀏覽量
2912
發布評論請先 登錄
相關推薦
評論