IDO_触觉智能的个人空间 https://blog.eetop.cn/1827949 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

瑞芯微RK3506开发板必备之LVGL应用开发手册,触觉智能工业核心板厂家 ...

已有 490 次阅读| 2025-4-27 14:55 |系统分类:芯片设计| RK3506, RK3506J, 开发板, 瑞芯微, LVGL


图片
LVGL是一个免费的轻量级开源图形库。具有丰富部件与高级图形特性,支持多种输入设备和多国语言,独立于硬件之外的开源图形库。LVGL的配置主要区别在于渲染后端的选择,目前可选DRM直接送显以及通过SDL送显。目前RK3506平台可支持SDL送显。
本文基于触觉智能RK3506星闪开发板进行演示,配套RK3506核心板(3核A7@1.5GHz+M0@200MHz多核异构)含税价59元,一片也是批量价、


配置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/v8base.config  lvgl_drm.config  lvgl_rkadk.config  lvgl_sdl.config

LVGL DEMO


  • 源码⽬录结构
源码路径:<SDK>/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等
└── tools
  • rk_demo代码说明
源码路径:<SDK>/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, &param) == -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 <SDK>/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 ?= gccCC = /home/rk3506/rk3506_linux-250211/rk3506_linux6.1/buildroot/output/rockchip_rk3506/host/bin/arm-buildroot-linux-gnueabihf-gccLVGL_DIR_NAME ?= lvglLVGL_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-compareLDFLAGS ?= -lmBIN = demo

#Collect the files to compileMAINSRC = ./main.c
include $(LVGL_DIR)/lvgl/lvgl.mkinclude $(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 /demoroot@rk3506-buildroot:/# /demo




点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 7

    周排名
  • 14

    月排名
  • 0

    总排名
  • 0

    关注
  • 0

    粉丝
  • 0

    好友
  • 0

    获赞
  • 0

    评论
  • 10

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-4-30 17:06 , Processed in 0.011318 second(s), 7 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部