尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

玩转树莓派屏幕之三:lvgl移植到树莓派

玩转树莓派屏幕之三:lvgl移植到树莓派
📅 发布时间:2026/6/19 18:19:34

一、背景

由于前一篇的文章玩转树莓派屏幕之二:自定义屏幕显示中使用了python绘制图片,再将图片显示到屏幕的方式。只能用于简单显示一些文字,内容不够丰富。

自动动手去从0实现一个显示程序,肯定不显示的,需要了解树莓派嵌入式的底层原理,不是短时间内能够搞定的。我们现在是站在巨人的肩膀上,有很多开源的程序可以直接使用,例如LVGL组件,小巧性能高。

二、配置交叉编译工具

由于树莓派的性能比较弱,直接在树莓派上直接进行编译,效率低而且容易重启(编译中重启N次的经历.....),为了节省时间,提升效率,直接使用交叉编译吧(骚年,不要抱有侥幸的心理....)

1、安装WSL

使用ubuntu系统,工具较为齐全。我采用的是之前已经安装好的ubuntu20,懒得更改了....

2、安装交叉编译工具

更新软件包

首先需要更新一下软件包列表

# 更新软件包列表
sudo apt update
sudo apt upgrade -y
sudo apt install libevdev-dev
sudo apt install python3.8-venv

安装工具链

树莓派通常使用 ARMv6 (如 Pi 1, Zero) 或 ARMv7/ARMv8 (如 Pi 2, 3, 4, 5) 架构。最常用的工具链是 gcc-arm-linux-gnueabihf(用于 ARMv7+ 的 32 位系统)或 gcc-aarch64-linux-gnu(用于 64 位系统)

根据自己树莓派按照OS的操作系统来

安装 32 位 ARM 交叉编译器 (推荐用于大多数树莓派)

sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

安装 64 位 ARM 交叉编译器 (用于 64 位树莓派 OS)

sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

3、获取树莓派的系统根文件系统 (sysroot)

为了编译依赖系统库的程序(如使用 pthread、m、wiringPi 等),你需要将树莓派的 /usr 和 /lib 目录复制到 WSL 中作为 sysroot。我们选择直接从树莓派上复制过来

在树莓派上打包 /usr 和 /lib:

# 在树莓派上执行
sudo tar -czf pi-sysroot.tar.gz /usr /lib

将文件复制到 WSL:

# 例如通过 scp
scp pi@raspberrypi.local:~/pi-sysroot.tar.gz ~/

在 WSL 中解压:

mkdir -p ~/raspberry/sysroot
tar -xzf pi-sysroot.tar.gz -C ~/raspberry/sysroot --strip-components=1

假设我们使用的root用户,绝对路径为/root/raspberry/sysroot

三、编译lvgl demo

1、下载源码:

下载源码

git clone https://github.com/lvgl/lv_port_linux.git
cd lv_port_linux/
git submodule update --init --recursive

git submodule update --init --recursive 下载失败,可以直接下载lvgl软件包

git clone https://github.com/lvgl/lvgl.git

2、配置toolchain编译链

在项目中新建toolchain.cmake 文件,写入

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)set(CMAKE_SYSROOT /root/raspberry/sysroot)
set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

3、设置CLion关联

1)点击 File -> settings -> ToolChains,新增WSL编译环境,其中ToolChains选择 aarch64-linux-gnu-gcc 和 aarch64-linux-gnu-g++
image

2)点击 File -> settings -> CMake,选择刚才增加的toolchains
image

CMake options中新增:

-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake

image

4、编译

选择lvglsim,点击右侧小锤子进行编译:
image

编译结果在编译路径/bin/目录下:
image

4、运行lvglsim可执行文件

设置环境变量

由于使用的默认demo程序,需要调整显示的屏幕分辨率以及设置,需要设置全局变量

export LV_SIM_WINDOW_WIDTH=420
export LV_SIM_WINDOW_HEIGHT=380
export LV_LINUX_FBDEV_DEVICE=/dev/fb0

执行命令

将上一步中编译获取的lvglsim可执行文件传到树莓派上:

./lvglsim

效果展示

shell运行展示结果为:

root@raspberrypi:~/lcd# ./lvglsim
[Warn]	(0.000, +0)	 lv_init: Memory integrity checks are enabled via LV_USE_ASSERT_MEM_INTEGRITY which makes LVGL much slower lv_init.c:321
[Warn]	(0.000, +0)	 lv_init: Object sanity checks are enabled via LV_USE_ASSERT_OBJ which makes LVGL much slower lv_init.c:325
[Warn]	(0.000, +0)	 lv_init: Style sanity checks are enabled that uses more RAM lv_init.c:329
[User]	(4478.457, +4478457)	 init_pointer_evdev: Using evdev automatic discovery. evdev.c:160
[User]	(4478.458, +1)	 discovery_cb: new 'ABS' device discovered evdev.c:109

展示效果图:
image

参考文章:

  • https://www.cnblogs.com/jzcn/p/16898249.html
  • https://zmurder.github.io/lvgl/LVLG在树莓派上移植基于9.3.0/
  • https://doc.yonyoucloud.com/doc/wiki/project/raspberry-pi/spi.html
  • https://watermelonwater.tech/archives/深入探索树莓派轻量级GUI开发:framebuffer原理与Raylib实战指南,实现无桌面环境高效应用构建
  • https://www.cnblogs.com/kn-zheng/p/17853059.html
  • https://blog.csdn.net/weixin_42963900/article/details/133777770
  • https://www.waveshare.net/wiki/模板:Fbcp
  • https://zhuanlan.zhihu.com/p/558495267
  • https://blog.csdn.net/weixin_44550536/article/details/131714105

相关新闻

  • enthalpy/entropy
  • Day26自定义异常
  • Stimulsoft 引入无代码脚本编程 —— Blockly 让报表与仪表盘更智能

最新新闻

  • 上海汽车音响改装选哪家?上海音乐人生,二十年赛事级连锁标杆门店 - 音乐人生汽车音响
  • 技术解析:从Tri-Plane到3D GAN,如何实现高效且一致的神经渲染
  • 通过Selenium实现网页截图来生成应用封面
  • 2026苏州钻石回收实测|国标4C定级,全城无套路靠谱门店变现指南 - 薛定谔的梨花猫
  • C语言宽字符处理:wmemcmp、wmemcpy、wprintf核心函数详解与实战
  • 多模态大语言模型LISA

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号