当前位置: 首页 > news >正文

lv_micropython to download and building

        想要在ESP32-C3使用Micropython开发GUI,所以需要编译lv_micropython,当前github上的版本是9.1.0。

一、开发环境

        因为编译lv_micropython需要在linux系统下,但是我的电脑是windows系统,所以我在windows系统上安装了VMware虚拟机,在VMware虚拟机中安装了ubuntu18系统。

二、下载lv_micropython

github:GitHub - lvgl/lv_micropython: Micropython bindings to LVGL for Embedded devices, Unix and JavaScript

在ubuntu系统中其中命令终端,cd到存放源码的目录。

克隆lv_micropython:

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

 更新其子模块:

cd lv_micropython
git submodule update --init --recursive lib/lv_bindings

三、编译lv_micropython

1、编译mpy-cross:
make -C mpy-cross

mpy-cross 是一个用于将 Python 代码预编译为适用于 MicroPython 设备的 .mpy 文件的工具。 

2、编译Unix (Linux) port(如果需要在PC上开发LVGL需要执行这一步)

更新软件包: 

sudo apt-get update

安装build-essential libreadline-dev libffi-dev:

sudo apt-get install build-essential libreadline-dev libffi-dev

安装libsdl2-2.0-0 libsdl2-dev :

sudo apt-get install libsdl2-2.0-0 libsdl2-dev

libsdl2-2.0-0 是 Simple DirectMedia Layer 2.0 库,用于提供低层次的访问音频、键盘、鼠标、半导体和显示硬件。libsdl2-dev 是开发 SDL 应用程序所需的开发文件。

安装parallel:

sudo apt-get install parallel

parallel 是 GNU 工具的一部分,用于并行执行多个任务。 

安装Python3:

sudo apt-get install python3.8

 也可安装python3的其它版本,如果系统已经安装了python3就不用再安装了,可通过命令:

python3 -V

查询是否已安装python3以及安装的版本。

初始化和更新ports/unix子模块:

make -C ports/unix submodules

编译 ports/unix:

make -C ports/unix

 编译成功后ports/unix/build-standard/路径下会生成一个micropython文件,这个和github上展示的不一样,github展示的是在ports/unix/路径下生成一个micropython文件。

注意:如果编译出错,请看“遇到问题”章节。 

四、运行demo

运行advanced_demo.py示例,在文件末尾添加以下代码,然后保存。

if __name__ == '__main__':import timewhile True:time.sleep(1)

执行命令运行demo:

./ports/unix/build-standard/micropython lib/lv_bindings/examples/advanced_demo.py 

UI效果: 

五、遇到问题

../../lib/lv_bindings/lvgl/src/drivers/sdl/lv_sdl_window.c: In function ‘texture_resize’:
../../lib/lv_bindings/lvgl/src/drivers/sdl/lv_sdl_window.c:375:5: error: unknown type name ‘SDL_PixelFormatEnum’; did you mean ‘SDL_PixelFormat’?SDL_PixelFormatEnum px_format = SDL_PIXELFORMAT_RGB565;^~~~~~~~~~~~~~~~~~~SDL_PixelFormat
See https://github.com/micropython/micropython/wiki/Build-Troubleshooting
../../py/mkrules.mk:83: recipe for target 'build-standard/lib/lv_bindings/lvgl/src/drivers/sdl/lv_sdl_window.o' failed
make: *** [build-standard/lib/lv_bindings/lvgl/src/drivers/sdl/lv_sdl_window.o] Error 1
make: Leaving directory '/home/caiyong/share/lv_micropython/ports/unix'

不知道的SDL_PixelFormatEnum类型,可能是SDL2版本不匹配,打开/usr/include/SDL2/下的一些.h文件,也没有找到SDL_PixelFormatEnum声明。

解决方法:

打开lv_micropython/lib/lv_bindings/lvgl/src/drivers/sdl/lv_sdl_window.c文件,修改代码。

将:

#if LV_COLOR_DEPTH == 32SDL_PixelFormatEnum px_format = SDL_PIXELFORMAT_RGB888; /*same as SDL_PIXELFORMAT_RGB888, but it's not supported in older versions*/
#elif LV_COLOR_DEPTH == 24SDL_PixelFormatEnum px_format = SDL_PIXELFORMAT_BGR24;
#elif LV_COLOR_DEPTH == 16SDL_PixelFormatEnum px_format = SDL_PIXELFORMAT_RGB565;

改为:

#if LV_COLOR_DEPTH == 32Uint32 px_format = SDL_PIXELFORMAT_RGB888; /*same as SDL_PIXELFORMAT_RGB888, but it's not supported in older versions*/
#elif LV_COLOR_DEPTH == 24Uint32 px_format = SDL_PIXELFORMAT_BGR24;
#elif LV_COLOR_DEPTH == 16Uint32 px_format = SDL_PIXELFORMAT_RGB565;

使用 Uint32代替SDL_PixelFormatEnum定义px_format 变量。

相关文章:

lv_micropython to download and building

想要在ESP32-C3使用Micropython开发GUI,所以需要编译lv_micropython,当前github上的版本是9.1.0。 一、开发环境 因为编译lv_micropython需要在linux系统下,但是我的电脑是windows系统,所以我在windows系统上安装了VMware虚拟机&…...

二叉树练习day.9

669.修剪二叉搜索树 链接:. - 力扣(LeetCode) 题目描述: 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变…...

2024年第十七届“认证杯”数学中国数学建模网络挑战赛B题思路

B题 神经外科手术的定位与导航 人的大脑结构非常复杂,内部交织密布着神经和血管,所以在大脑内做手术具有非常高的精细和复杂程度。例如神经外科的肿瘤切除手术或血肿清除手术,通常需要将颅骨打开一个(或几个)圆形窗口,将病变部位暴露在术野中。但当病变部位较深时,就必…...

【vue】slot 匿名插槽 / 具名插槽

slot父组件向子组件传递数据 匿名插槽–直接写 具名插槽–指定名称 父组件中 子组件中&#xff1a; 代码 App.vue <template><h2>App.vue</h2><!-- 匿名插槽 --><Header><a href"1234567890.com">1234567890</a>&…...

FFmpeg: 自实现ijkplayer播放器-02环境搭建

文章目录 安装环境项目工程配置库文件 安装环境 IDE: Qt5.12 库: ffmpeg-4.2.1-win32SDL 项目工程配置 pro文件 TEMPLATE app TARGET SimpleIJKPlayer DESTDIR bin QT core gui widgets #CONFIG debug #DEFINES _UNICODE WIN64 QT_WIDGETS_LIBwin32 { LIBS -L$$PW…...

Redis从入门到精通(十七)多级缓存(二)Lua语言入门、OpenResty集群的安装与使用

文章目录 前言6.4 Lua语法入门6.4.1 初识Lua6.4.2 Hello World6.4.3 变量6.4.3.1 Lua的数据类型6.4.3.2 声明变量 6.4.4 循环6.4.5 函数6.4.6 条件控制 6.5 实现多级缓存6.5.1 安装和启动OpenResty6.5.2 实现ajax请求反向代理至OpenResty集群6.5.2.1 反向代理配置6.5.2.2 OpenR…...

pytest常用钩子函数

1、什么叫钩子函数 在Pytest框架中&#xff0c;钩子函数是一种允许用户扩展或者自定义测试执行过程的机制。钩子函数允许用户在测试的不同阶段插入自定义的代码&#xff0c;以实现特定的行为&#xff0c;操作或处理。这种插入式的机制使得Pytest具有高度的灵活性和扩展性。 如…...

.Net <% %>

<% %> 语法 : <% import namespace"system.data"%> 用来导入后台命名空间 指令用于指定当页和用户控件编译器处理 ASP.NET Web 窗体页 (.aspx) 和用户控件 (.ascx) 文件时所使用的设置。<% %> 语法 : <% name %> <% getstr() %&g…...

【C语言__编译和链接__复习篇2】

目录 前言 一、翻译环境和运行环境 二、翻译环境 2.1 预处理 2.1 编译 2.1.1 词法分析 2.1.2 语法分析 2.1.3 语义分析 2.2 汇编 2.3 链接 三、运行环境 四、简答主线问题 前言 本篇主要讨论以下问题&#xff1a; 主线问题&#xff1a; 1. 源文件(.c)如何转换成(.exe)文件…...

Jmeter —— 自动录制脚本

1、Jmeter配置 1.1新增一个线程组 1.2Jmeter中添加HTTP代理 1.3配置HTTP代理服务器 修改端口 修改Target Cintroller(目标控制器) 修改Grouping(分组) 编辑录制中的包含和排除 在“URL Patterns to include包含模式”中填入.*(123456).*用以过滤请求地址中不包含123456的请求…...

使用python互相转换AVI、MP4、GIF格式视频文件

一、AVI文件转MP4文件 要将AVI格式的视频转换为 MP4&#xff0c;你可以使用 Python的 moviepy 库。以下是一个示例代码&#xff0c;用于将 AVI 文件转换为 MP4 文件&#xff1a; from moviepy.editor import VideoFileClip# 读取 AVI 文件 clip VideoFileClip("input.a…...

11 Php学习:函数

PHP 内建函数Array 函数 PHP Array 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。 创建 PHP 函数 当您需要在 PHP 中封装一段可重复使用的代码块时&#xff0c;可以使用函数。下面详细解释如何创建 PHP 函数并举例说明。 创建 PHP 函数的语法 PHP 函数的基…...

查询电脑用户名和组信息

在命令行里查看电脑名&#xff1a; c:\>hostname 在命令行里&#xff0c;查看组信息&#xff1a; # 显示本地所有的用户组 c:\>net localgroup #显示administrators组包含的用户信息 c:\>net localgroup administrators # 比如我的显示信息&#xff1a; C:\>ne…...

【Godot4.2】CanvasItem绘图函数全解析 - 9.绘制表格

概述 之前介绍TextLine和TextParagraph的时候&#xff0c;提到了用制表符和设定列宽形式来绘制简易表格&#xff0c;但是很明显&#xff0c;单纯使用此种方式很难获得对表格的精确控制。 所以对于表格绘制问题&#xff0c;我决定单独开坑&#xff0c;单独深入研究。 目前比较…...

部署HDFS集群(完全分布式模式、hadoop用户控制集群、hadoop-3.3.4+安装包)

目录 前置 一、上传&解压 &#xff08;一 &#xff09;上传 &#xff08;二&#xff09;解压 二、修改配置文件 &#xff08;一&#xff09;配置workers文件 &#xff08;二&#xff09;配置hadoop-env.sh文件 &#xff08;三&#xff09;配置core-site.xml文件 &…...

TCP协议简单总结

TCP&#xff1a;传输控制协议 特点&#xff1a;面向连接、可靠通信 TCP的最终目的&#xff1a;要保证在不可靠的信道上实现可靠的传输 TCP主要有三个步骤实现可靠传输&#xff1a;三次握手建立连接&#xff0c;传输数据进行确认&#xff0c;四次挥手断开连接 三次握手建立可靠…...

【Qt 实现录音】

Qt 实现录音源代码: #include <QAudioInput> #include <QAudioDeviceInfo> #include <QAudioRecorder> #include <QFile> #include...

python:算法竞赛入门之一

计算 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;不受长整型位数限制。 编写 fibonacci.py 如下 # -*- coding: utf-8 -*- """ 计算 斐波那契数列&#xff08;Fibonacci sequence&#xff09;""" import sys from …...

【大数据与云计算】虚拟机安装Linux

前言&#xff1a;使用Linux系统对大数据学习必不可少&#xff0c;本文主要介绍虚拟机安装linux的流程 文章目录 一、 下载VMware二、下载Linux三、安装Linux 一、 下载VMware 官网链接 下载VMware-player&#xff0c;一直下一步安装即可。 二、下载Linux 点击链接直接下载&…...

从零开始编写一个cmake构建脚本

简介 本文档介绍cmake构建脚本编写&#xff0c;包含的一些主要元素和命名规范。 cmake构建脚本编写步骤 cmake构建工具版本要明确 # 命令名字要小写&#xff0c;这条语句要求构建工具至少需要版本为3.12或以上 cmake_minimum_required (VERSION 3.12)工程名及库的版本号明确…...

探索Tabler Icons 3.40.0:新增6000+高质量SVG图标的终极指南

探索Tabler Icons 3.40.0&#xff1a;新增6000高质量SVG图标的终极指南 【免费下载链接】tabler-icons A set of over 4800 free MIT-licensed high-quality SVG icons for you to use in your web projects. 项目地址: https://gitcode.com/GitHub_Trending/ta/tabler-icons…...

OpenClaw安全配置要点:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF本地运行权限管理

OpenClaw安全配置要点&#xff1a;Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF本地运行权限管理 1. 为什么需要特别关注OpenClaw的安全配置&#xff1f; 第一次在本地部署OpenClaw时&#xff0c;我犯了一个新手常见的错误——直接使用默认配置启动服务。结果第二天…...

Qwen3.5-9B+OpenClaw组合方案:3类高性价比自动化场景实测

Qwen3.5-9BOpenClaw组合方案&#xff1a;3类高性价比自动化场景实测 1. 为什么选择这个组合&#xff1f; 去年夏天&#xff0c;我花了整整两周时间在本地部署各种开源大模型&#xff0c;试图找到一个既能在预算内运行、又能稳定执行自动化任务的方案。经过反复测试&#xff0…...

深入理解Matplotlib中的plt、fig、axes与axis:从基础到高级应用

1. Matplotlib绘图基础&#xff1a;从plt到figure的认知跃迁 第一次接触Matplotlib时&#xff0c;最让人困惑的就是plt.plot()和ax.plot()到底有什么区别。这就像学做菜时&#xff0c;有人告诉你"用锅炒菜"和"先用电磁炉加热再放锅炒菜"两种方式都能做出青…...

别再为IP冲突头疼!YOLOv5+海康威视摄像头组网与实时检测的完整避坑指南

工业视觉组网实战&#xff1a;YOLOv5与海康威视摄像头的智能协同方案 在智能制造与安防监控领域&#xff0c;将AI算法与专业摄像设备结合已成为技术标配。但当工程师真正着手部署时&#xff0c;往往会陷入网络配置的泥潭——IP冲突导致设备失联、RTSP流媒体断断续续、多网卡环…...

TinyMCE 5插件开发实战:手把手教你定制首行缩进功能(Vue版)

TinyMCE 5插件开发实战&#xff1a;手把手教你定制首行缩进功能&#xff08;Vue版&#xff09; 在内容创作领域&#xff0c;富文本编辑器的灵活性和扩展性往往决定了最终的用户体验。TinyMCE作为一款广受欢迎的富文本编辑器&#xff0c;其插件系统为开发者提供了无限可能。本文…...

[2026 职场洗牌系列 01] 程序员正在“杀死”自己的工作?科技行业高危预警

长久以来&#xff0c;学计算机&#xff08;CS&#xff09;在很多年轻人眼里就等同于拿到了通往高薪和阶层跃升的金钥匙。大家都觉得&#xff0c;只要把代码敲得溜&#xff0c;这辈子在职场上基本就稳了。可惜&#xff0c;到了2026年的今天&#xff0c;生成式AI正在毫不留情地把…...

为什么顶尖量化团队已弃用Pandas清洗?Polars 2.0零拷贝字符串正则+Unicode归一化实战(附GitHub千星Benchmark)

第一章&#xff1a;Polars 2.0 大规模数据清洗技巧 2026 最新趋势 Polars 2.0 在 2026 年已全面支持零拷贝流式清洗、原生 Delta Lake 元数据感知与分布式列式校验&#xff0c;成为金融、遥感与实时日志场景中替代 Pandas 的首选引擎。其核心突破在于 LazyFrame 的智能物化策略…...

全基因组序列比对工具mVISTA的保姆级使用指南:从文件准备到结果解读

全基因组序列比对工具mVISTA的保姆级使用指南&#xff1a;从文件准备到结果解读 在基因组学研究领域&#xff0c;序列比对是揭示物种间进化关系、识别保守区域和功能元件的基础操作。mVISTA作为一款专门用于全基因组序列比对的在线工具&#xff0c;凭借其直观的可视化界面和强…...

Boss-Key:职场隐私保护与效率提升的开源解决方案

Boss-Key&#xff1a;职场隐私保护与效率提升的开源解决方案 【免费下载链接】Boss-Key 老板来了&#xff1f;快用Boss-Key老板键一键隐藏静音当前窗口&#xff01;上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在数字化办公环境中&#xff…...