1 簡介
LVGL(Light and Versatile Embedded Graphics Library)是一個免費開源的嵌入式圖形庫,界面美觀, 內存占用低, 支持C和Python等開發(fā)方式。早在幾年前它就表現(xiàn)得十分驚艷,現(xiàn)如今被越來越多的人喜愛。筆者之前是使用6版本在單片機上面運行,如今都已經更新到7版本多了,人往高處走,終究得跟上最新版本,于是便有了關于LVGL7版本在linux上移植的這件篇筆記。
本次教程使用的開發(fā)板是萬象奧科的HD-STM32MP157-STY開發(fā)板。該開發(fā)板使用STM32MP1家族中是目前性能強勁,資源最為豐富的一款處理器STM32MP157DAA,雙核ARM Cortex-A7 @800Mhz/單核 Cortex-M4@209MHz ,板載1GB內存以及8G eMMC Flash。開發(fā)板具體信息詳見文末。
LVGL官網(wǎng)為https://lvgl.io/,進入LVGL官網(wǎng)即可看到Github、Release notes、Docs、Forum鏈接,可按需下載。
2 運行Demo
為了開發(fā)方便,LVGL提供了很多仿真工程,可以在Eclipse、CodeBlocks、VisualStudio等各種環(huán)境上運行。
筆者這里簡單介紹下VisualStudio環(huán)境下的操作。
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官網(wǎng)的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環(huán)境,進入arm環(huán)境apt得到庫(推薦)。
使用buildroot(推薦)。
本次教程介紹使用buildroot進行安裝,具體步驟如下:
3.3.1.1 配置、編譯
首先在buildroot源代碼目錄運行如下命令進行配置:
sudo make menuconfig
勾選上圖所示保存并編譯。
3.3.1.2 查找SDL庫
配置成功后,編譯會得到一個可直接用于開發(fā)板的文件系統(tǒng),這個文件系統(tǒng)中會包含SDL依賴庫??梢允褂胒ind命令找到這個庫:
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一般代表鏈接可執(zhí)行程序時的鏈接選項,CFLAGS指定了頭文件查找路徑。
LDFLAGS += -L$(LVGL_DIR)/lib
CFLAGS += -I$(LVGL_DIR)/lib
LDFLAGS += -lts -lpthread
注釋掉主機環(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進行編譯,編譯完成會得到一個可執(zhí)行文件。執(zhí)行效果如下:
STM32MP1產品靚照
-
Linux
+關注
關注
87文章
11326瀏覽量
209961 -
STM32
+關注
關注
2270文章
10915瀏覽量
356751 -
開發(fā)板
+關注
關注
25文章
5093瀏覽量
97802 -
LVGL
+關注
關注
1文章
88瀏覽量
3004
發(fā)布評論請先 登錄
相關推薦
評論