当前位置: 首页 > 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 变量。

http://www.lryc.cn/news/338148.html

相关文章:

  • 二叉树练习day.9
  • 2024年第十七届“认证杯”数学中国数学建模网络挑战赛B题思路
  • 【vue】slot 匿名插槽 / 具名插槽
  • FFmpeg: 自实现ijkplayer播放器-02环境搭建
  • Redis从入门到精通(十七)多级缓存(二)Lua语言入门、OpenResty集群的安装与使用
  • pytest常用钩子函数
  • .Net <% %>
  • 【C语言__编译和链接__复习篇2】
  • Jmeter —— 自动录制脚本
  • 使用python互相转换AVI、MP4、GIF格式视频文件
  • 11 Php学习:函数
  • 查询电脑用户名和组信息
  • 【Godot4.2】CanvasItem绘图函数全解析 - 9.绘制表格
  • 部署HDFS集群(完全分布式模式、hadoop用户控制集群、hadoop-3.3.4+安装包)
  • TCP协议简单总结
  • 【Qt 实现录音】
  • python:算法竞赛入门之一
  • 【大数据与云计算】虚拟机安装Linux
  • 从零开始编写一个cmake构建脚本
  • pringboot2集成swagger2出现guava的FluentIterable方法不存在
  • 进程线程的关系
  • 一些 VLP 下游任务的相关探索
  • 【opencv】示例-pca.cpp PCA图像重建演示
  • C语言中的编译和链接
  • 如何将三方库集成到hap包中——通过IDE集成cmak构建方式的C/C++三方库
  • Towards Street-Level Client-Independent IP Geolocation(2011年)(第二部分)
  • 软件测试过程和测试生命周期
  • python-study-day1
  • 【Apache2】彻底删除 Apache2 服务器
  • C#:成绩等级转换