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 time
    while 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 == 32
    	SDL_PixelFormatEnum px_format = SDL_PIXELFORMAT_RGB888; /*same as SDL_PIXELFORMAT_RGB888, but it's not supported in older versions*/
#elif LV_COLOR_DEPTH == 24
    	SDL_PixelFormatEnum px_format = SDL_PIXELFORMAT_BGR24;
#elif LV_COLOR_DEPTH == 16
    	SDL_PixelFormatEnum px_format = SDL_PIXELFORMAT_RGB565;

改为:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/540858.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【matlab非线性规划工具箱安装1 SeDuMi 1.3工具箱】

【matlab非线性规划工具箱安装1 SeDuMi 1.3工具箱】 该博客是非线性手眼标定代码中所依赖的matlab工具箱的安装内容,除了进行手眼标定以外,该工具箱还可以用于其他的非线性规划问题 手眼标定传送门: 【从零开始进行高精度手眼标定 eye in …

Steam平台游戏发行流程

Steam平台游戏发行流程 大家好我是艾西,一个做服务器租用的网络架构师也是游戏热爱者,经常在steam平台玩各种游戏享受快乐生活。去年幻兽帕鲁以及雾锁王国在年底横空出世,幻兽帕鲁更是在短短一星期取得了非常好的成绩,那么作为游戏…

计算机网络——CSMA/CD协议以及相关习题

目录 前言 引言 CSMA/CD协议 CSMA与CSMA/CD的区别 CSMA/CD流程 前言 本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。 引言 最早的以太网,许多计算机都连接在一根总线上工作——广播通信方式。 总线的特点想…

JavaScript教程(十二)--- 使用‘类’

使用类 JavaScript 是一个基于原型的语言——一个对象的行为取决于它自身的属性及其原型的属性。对类来说,相较于与其他面向对象的语言,譬如 Java,创建对象的多层级结构及其属性的继承关系需要更多的代码行。本节,我们将展示如何…

windows搭建ftp服务器

安装iis 点击安装即可,搜索iis打开 创建ftp服务器 身份验证:只勾选匿名,不勾选基本,网上的很多教程会添加基本,导致的问题会出现浏览提需要输入账号密码的情况,这里为了方便大家更直观的感受FTP建立的过程&#xff0…

新手做抖店这个操作赶快停止!不听“废店”只是早晚的事!

哈喽~我是电商月月 互联网的发展,做什么事情都是公开透明的,做抖音小店也是 大家都会在网上搜索教程,技巧,但最终还是有好多人都失败了 那是因为这些流程技巧不正确吗?其实并不是,很多小技巧都是有用的&…

CTF-遗留的压缩包

题目描述:小蓝同学给你发来了他自己开发的网站链接,他说他故意留下了一个压缩包文件,里面有网站的源代码,他想考验一下你的网络安全技能。 下发容器,访问链接,发现都是无关内容 联想到标题说有遗留的压缩…

数模 线性规划模型理论与实践

线性规划模型理论与实践 1.1 线性规划问题 在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支一数学规划,而线性规划(Linear Programming 简记LP)则是数学规划的一个…

openjudge_2.5基本算法之搜索_166:The Castle

题目 166:The Castle 总时间限制: 1000ms 内存限制: 65536kB 描述 Figure 1 shows the map of a castle.Write a program that calculates how many rooms the castle hashow big the largest room is The castle is divided into m * n (m<50, n<50) square modules.…

Linux 内核学习(1) --- 时钟子系统

标题 时钟系统说明时钟树Clock Provider时钟通用数据结构clock_device 的注册clock_provider DTS配置和注册clock consumer时钟系统总结 时钟系统说明 时钟就是 SoC 中的脉搏&#xff0c;由它来控制各个部件按各自的节奏跳动。比如&#xff0c;CPU主频设置&#xff0c;串口的波…

切面条(蓝桥杯)

目录 题目 分析 代码实现 题目 一根高筋拉面&#xff0c;中间切一刀&#xff0c;可以得到2根面条。 如果先对折1次&#xff0c;中间切一刀&#xff0c;可以得到3根面条。 如果连续对折2次&#xff0c;中间切一刀&#xff0c;可以得到5根面条。 那么&#xff0c;连续对折1…

【报名指南】2023-2024学年AILD劳动技能大赛初赛报名流程

温馨提示&#xff1a; 1.AILD劳动技能大赛免费报名参赛。报名网址&#xff1a;aild.org.cn 2.报名时间即日起至5月31日。&#xff08;上海赛区线下挑战项目4月25日报名截止&#xff0c;线上挑战项目5月31日报名截止&#xff09;。 3.指导教师只能为行政备案学校的在职教师。…

C语言 数据输入输出

本文 我们来说 数据的输入与输出 及数据的运算 在程序的运算工程中 往往需要输入一些数据 而程序的运算 所得到的运算结果又需要输出给用户 因此 数据的输入与输出 就显得非常重要 在C语言中 不提供专门的输入输出语句 所有的输入输出 都是通过对标准库的调用 来实现的 一般 …

itop4412内核编译_编译自定义函数到内核

我的itop4412开发板是半路捡的&#xff0c;所以没办法加他们的售后群&#xff0c;遇到的问题只好一点点记录吧 内核驱动编译 在日常工作过程中&#xff0c;编写内核程序可能机会不多&#xff0c;但是将厂商提供的内核源码编译到固件中&#xff0c;这个技能还是必须掌握的。 i…

认识异常(1)

❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&a…

系统架构最佳实践 -- 一般优惠券平台系统架构设计

优惠券是商城的一种基础的营销工具&#xff0c;在目前c端用户对于电子优惠券已经非常熟悉的情况下&#xff0c;一般自营商城的营销活动系统&#xff0c;都是从优惠券开始搭建。 一、名词定义 基于个人理解&#xff0c;为方便表述&#xff0c;首先对可能产生歧义的名词进行如下…

十九.案例演示---天猫订单分析

目录 1.数据预处理 2.对订单状况进行分析 3.不同省份订单数详情 4.省份地图绘制 5.不同星期&#xff0c;订单分布 6.订单金额与订单数量 本次案例演示数据条数为:28010 import pandas as pd from pyecharts import options as optsdf_data pd.read_excel(../data/天猫订单…

【笔记】探索生成范式:大型语言模型在信息提取中的作用

探索生成范式&#xff1a;大型语言模型在信息提取中的作用 摘要介绍 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限可能&#xff0c;共同成长&am…

五、书架开发--3.弹出框功能开发、离线缓存功能开发

实现弹出框真实业务逻辑 私密阅读tab业务逻辑 1、根据点击的tab不同&#xff0c;从而展示出不同的popup弹窗 每个tab中都有自己的index&#xff0c;点击的时候获取这个index&#xff0c;就可以知道当前点击的是哪个tab&#xff0c;然后用switch-case来根据不同的index展示不…

【GD32】MQ-6丙烷检测传感器

2.34 MQ-6丙烷检测传感器 MQ-6气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(Sno2)。当传感器所处环境中存在可燃气体时&#xff0c;传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为该气体浓度相对应的输出信号。M…