
LVGL是一個免費的輕量級開源圖形庫。具有豐富部件與高級圖形特性,支持多種輸入設備和多國語言,獨立于硬件之外的開源圖形庫。LVGL的配置主要區別在于渲染后端的選擇,目前可選DRM直接送顯以及通過SDL送顯。目前RK3506平臺可支持SDL送顯。
本文基于觸覺智能RK3506星閃開發板進行演示,配套RK3506核心板(3核A7@1.5GHz+M0@200MHz多核異構)含 稅 價 5 9 元,一 片 也 是 批 量 價。
配置LVGL
- Buildroot配置
基礎配置保存路徑:$sdk/buildroot/configs/rockchip_rk3506_defconfig
# Buildroot相關配置 #include "base/base.config" #include "chips/rk3506_arm.config" #include "fs/vfat.config" #include "wifibt/bt.config" #include "wifibt/wireless.config" #include "multimedia/audio.config" #include "wifibt/bt.config" #include "wifibt/wireless.config" #include "lvgl/lvgl_rkadk.config" #include "lvgl/rk_demo.config" #include "fs/ntfs.config" ...
- LVGL配置
基礎配置保存路徑:
$sdk/buildroot/configs/rockchip/lvgl/v8
$ ls buildroot/configs/rockchip/lvgl/v8 base.config lvgl_drm.config lvgl_rkadk.config lvgl_sdl.config
LVGL DEMO
- 源碼?錄結構
源碼路徑:/app/lvgl_demo/
$ tree -L 1 . #i ├── amp_monitor ├── cJSON# cJSON源碼 ├── CMakeLists.txt ├── common ├── flexbus ├── gallery ├── lv_demo# 基礎示例程序,運行官方DEMO ├── lvgl8# 默認使用lvgl8 ├── lvgl9 ├── motor_demo ├── rk_demo# RK顯控DEMO,包含智能家居、家電顯控、樓宇對講、系統設置等DEMO ├── sys# 時間戳,trace debug
- rk_demo代碼說明
源碼路徑:/app/lvgl_demo/rk_demo
主要作為一個示例程序,演示如何將官方的DEMO運行起來。以下說明略過一些無關的代碼,僅挑選需要關注的代碼進行說明。
static void lvgl_init(void) { /* 一切LVGL應用的開始 */ lv_port_init(); ... check_scr(); } ... int main(int argc, char **argv) { signal(SIGINT, sigterm_handler); struct sched_param param; int max_priority; max_priority = sched_get_priority_max(SCHED_FIFO); param.sched_priority = max_priority; if (sched_setscheduler(0, SCHED_FIFO, ?m) == -1) { perror("sched_setscheduler failed"); } /* 根據配置選擇對應的DEMO初始化,繪制對應UI */ #if ROCKIT_EN RK_MPI_SYS_Init(); #endif #if WIFIBT_EN run_wifibt_server(); #endif lvgl_init(); app_init(); rk_demo_init(); while (!quit) { /* 調用LVGL任務處理函數,LVGL所有的事件、繪制、送顯等都在該接口內完成 */ lv_task_handler(); usleep(100); } #if ROCKIT_EN RK_MPI_SYS_Exit(); #endif return 0; }
源碼編譯說明
修改源碼后,重新編譯之前刪除之前的的lvgl_demo:
$rm-rf /buildroot/output/rockchip_rk3506/build/lvgl_demo/ -rf
重新編譯buildroot:
$./build.sh buildroot
DEMO編譯說明
觸覺智能RK3506資料網盤中有提供的lvgl的demo,以下是編譯方法以及demo運行方法。
- 解壓
命令如下:
$ mkdir demo $ unzip lvgl_demo.zip -d demo/ $ cd demo/lvgl_demo
- 修改與編譯
修改交叉編譯工具鏈:
$ cat Makefile # # Makefile # #CC ?= gcc CC = /home/rk3506/rk3506_linux-250211/rk3506_linux6.1/buildroot/output/rockchip_rk3506/host/bin/arm-buildroot-linux-gnueabihf-gcc LVGL_DIR_NAME ?= lvgl LVGL_DIR ?= ${shell pwd} CFLAGS ?= -O3 -g0 -I$(LVGL_DIR)/ -Wall -Wshadow -Wundef -Wmissing-prototypes -Wno-discarded-qualifiers -Wall -Wextra -Wno-unused-function -Wno-error=strict-prototypes -Wpointer-arith -fno-strict-aliasing -Wno-error=cpp -Wuninitialized -Wmaybe-uninitialized -Wno-unused-parameter -Wno-missing-field-initializers -Wtype-limits -Wsizeof-pointer-memaccess -Wno-format-nonliteral -Wno-cast-qual -Wunreachable-code -Wno-switch-default -Wreturn-type -Wmultichar -Wformat-security -Wno-ignored-qualifiers -Wno-error=pedantic -Wno-sign-compare -Wno-error=missing-prototypes -Wdouble-promotion -Wclobbered -Wdeprecated -Wempty-body -Wtype-limits -Wshift-negative-value -Wstack-usage=2048 -Wno-unused-value -Wno-unused-parameter -Wno-missing-field-initializers -Wuninitialized -Wmaybe-uninitialized -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wtype-limits -Wsizeof-pointer-memaccess -Wno-format-nonliteral -Wpointer-arith -Wno-cast-qual -Wmissing-prototypes -Wunreachable-code -Wno-switch-default -Wreturn-type -Wmultichar -Wno-discarded-qualifiers -Wformat-security -Wno-ignored-qualifiers -Wno-sign-compare LDFLAGS ?= -lm BIN = demo #Collect the files to compile MAINSRC = ./main.c include $(LVGL_DIR)/lvgl/lvgl.mk include $(LVGL_DIR)/lv_drivers/lv_drivers.mk #CSRCS +=$(LVGL_DIR)/mouse_cursor_icon.c OBJEXT ?= .o AOBJS = $(ASRCS:.S=$(OBJEXT)) COBJS = $(CSRCS:.c=$(OBJEXT)) MAINOBJ = $(MAINSRC:.c=$(OBJEXT)) SRCS = $(ASRCS) $(CSRCS) $(MAINSRC) OBJS = $(AOBJS) $(COBJS) ## MAINOBJ -> OBJFILES all: default %.o: %.c @$(CC) $(CFLAGS) -c $< -o $@ @echo "CC $<" default: $(AOBJS) $(COBJS) $(MAINOBJ) $(CC) -o $(BIN) $(MAINOBJ) $(AOBJS) $(COBJS) $(LDFLAGS) clean: rm -f $(BIN) $(AOBJS) $(COBJS) $(MAINOBJ)
修改DEMO,如圖所示,在main.c中將demo中顯示的分辨率設置成與屏幕分辨率對應:

編譯(注意:交叉編譯工具鏈路徑根據實際情況進行更改。):
$make
最后將編譯出的demo 通過adb push到開發板上。
C:\Users\industio_mhk>adb push Z:\rk\rk3506\rk3506_linux-250211\rk3506_linux6.1\app\test\demo\lvgl_demo\demo / Z:\rk\rk3506\rk3506_linux-250211\rk3506_linux6.1\app\test\...ile pushed, 0 skipped. 24.4 MB/s (1127184 bytes in 0.044s)
root@rk3506-buildroot:/# chmod a+x /demo root@rk3506-buildroot:/# /demo
END
-
GUI
+關注
關注
3文章
676瀏覽量
40738 -
LVGL
+關注
關注
1文章
99瀏覽量
3542 -
RK3506
+關注
關注
0文章
25瀏覽量
52
發布評論請先 登錄
瑞芯微RK3588開發板Linux系統添加自啟動命令的方法,深圳觸覺智能Arm嵌入式鴻蒙硬件方案商

瑞芯微全新芯片平臺RK3506優勢詳解,高集成低功耗,為工業而生 深圳觸覺智能評測

觸覺智能RK3506核心板,工業應用之LVGL顯示方案分享

評論